CentOS 7安装minikube (重点参考)
https://www.cnblogs.com/harmful-chan/p/12731014.html
Linux环境上安装MiniKube
https://blog.csdn.net/u013533380/article/details/105863848/
aliyun–Minikube - Kubernetes本地实验环境
https://developer.aliyun.com/article/221687
Kubernetes之安装Minikube------有效性 8成
https://www.cnblogs.com/lioa/p/12625565.html
kubectl常用命令------老七linux 腾讯云
https://cloud.tencent.com/developer/article/1140076
Kubernetes K8S之kubectl命令详解及常用示例
https://blog.csdn.net/ning521513/article/details/108715468
kubectl官方命令
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#-em-clusterrolebinding-em-
k8s 中文社区
https://www.kubernetes.org.cn/
k8s官方文档 中文版 —概念目录 (要全看)
https://kubernetes.io/zh/docs/concepts/
马哥交互视频
https://www.bilibili.com/video/BV1b64y1m7jm?p=3
详见 https://blog.csdn.net/ning521513/article/details/108715468
kubectl [command] [TYPE] [NAME] [flags]
说明:
1、command:指定在一个或多个资源上要执行的操作。例如:create、get、describe、delete、apply等
2、TYPE:指定资源类型(如:pod、node、services、deployments等)。资源类型大小写敏感,可以指定单数、复数或缩写形式。例如,以下命令生成相同的输出:
1 kubectl get pod -n kubernetes-dashboard
2 kubectl get pods -n kubernetes-dashboard
3 kubectl get po -n kubernetes-dashboard
3、NAME:指定资源的名称。名称大小写敏感。如果省略名称空间,则显示默认名称空间资源的详细信息或者提示:No resources found in default namespace.。
4、flags:指定可选的标记。例如,可以使用 -s 或 --server标识来指定Kubernetes API服务器的地址和端口;-n指定名称空间;等等。
注意:你从命令行指定的flags将覆盖默认值和任何相应的环境变量。优先级最高。
5、在多个资源上执行操作时,可以通过类型 [TYPE] 和名称 [NAME] 指定每个资源,也可以指定一个或多个文件。
…
…
…
命令 | 描述 | 示例 |
---|---|---|
create | 通过文件名或标准输入创建资源 | |
expose | 将一个资源公开为一个新的service | |
run | 在集群中运行一个特定的镜像 | |
set | 在对象上设定特定的功能 | |
get | 显示一个或多个资源 | kubectl get cs --检查健康状态 |
explain | 文档参考资料 | |
edit | 使用默认编辑器编辑一个资源 | |
delete | 通过文件名、标准输入、资源名称或标签选择器删除资源 |
命令 | 描述 | 示例 |
---|---|---|
rollout | 管理资源的发布 | |
rolling-update | 对给定的复制控制器滚动更新 | |
scale | 扩容或缩容Pod数量,Deploymet、ReplicaSet、RC 或Job | |
autoscale | 创建一个自动选择扩容或缩容并设置Pod数量 |
命令 | 描述 | 示例 |
---|---|---|
certificate | 修改证书资源 | |
cluster-info | 显示集群信息 | |
top | 显示资源使用(cpu/memory/storage)使用。需要Heapster运行 | |
cordon | 标记节点不可调度 | |
uncordon | 标记节点可调度 | |
drain | 驱逐节点上的应用,准备下线维护 | |
taint | 修改节点taint标记 |
命令 | 描述 | 示例 |
---|---|---|
describe | 显示特定资源或资源组的详细信息 | |
logs | 在一个Pod中打印一个容器日志,如果Pod只有一个容器,容器名称可选 | |
attach | 附加到一个运行的容器 | |
exec | 执行命令到容器 | |
port-forward | 转发一个或多个本地端都到一个pod | |
proxy | 运行一个proxy到Kubernetes API server | |
cp | 拷贝文件或目录到容器中 | |
auth | 检查授权 |
命令 | 描述 |
---|---|
describe | 显示特定资源或资源组的详细信息 |
01-k8s课程的体系介绍 | https://www.bilibili.com/video/BV1iy4y1t7GW |
02-k8s介绍和特性 | https://www.bilibili.com/video/BV1M64y1S7d1 |
03-k8s学习方法 | https://www.bilibili.com/video/BV1QA411V7Fi |
04-面试题:k8s集群架构的组成 | https://www.bilibili.com/video/BV1YV411n7ke |
05-k8s的核心概念 | https://www.bilibili.com/video/BV1vX4y1g7Nu |
06-一个pod的创建过程详解 | https://www.bilibili.com/video/BV1Gf4y1s7if |
10-kubeadm方式搭建k8s-操作系统初始化 | https://www.bilibili.com/video/BV1D54y1b7HT |
11-kubeadm方式搭建k8s-docker及kubelet的部署 | |
12-kubeadm方式搭建集群-master搭建 | |
13-kubeadm方式搭建集群-安装dashboard | |
14-kubernetes集群命令行工具kubectl | |
15-YAML文件的编写及模板生成 | |
17- pod的实现机制和设计模式 |
K8s Kubernetes
课程体系:前置知识:
K8s 实战
第一部分:k8s的概念和架构,
第二部分:从零搭建k8S 集群
------ 1.基于客户端方式: kubeadm
------ 2.基于二进制包方式
第三部分:K8S的核心概念
------ Pod ,controller,service,ingress
------ RABC helm持久化存储
第四部分 搭建集群监控平台系统
第五部分 从零开始搭建高可用的k8s集群〔生产)
第六部分 在集群环境中部署项目
------ 打包-部署镜像-放到环境-运行-暴露端口
k8s 功能:
1.自动装箱
2.自我修复
3.水平扩展
4.服务发现 (负载均衡)
5.滚动更新
6.版本回退
7.秘钥和配置管理
8.批处理
9.存储编排
k8s 介绍
2014年google开源了k8s,k8s 是容器化集群系统
k8s 功能
不需要手动部署和大规模回滚及升级操作
k8s 目标
让部署容器化应用更加简洁有效 docker 简单化 自动化
老辛自学过程:
- docker , docker compose ,harbor
- 使用自动化部署工具完成部署
- k8s 基本概念 ,组件 对象
- 学习addon 一些资源,比如ingress coredns
- yml
- helm
- k8s 自定义安装过程
k8s 官方文档 https://kubernetes.io
中文版 https://kubernetes.io/zh/
文档
https://kubernetes.io/zh/docs/concepts/
- 概念栏 ,全看
- 任务栏,具体任务示例
- 教程栏,有状态应用部署和无状态应用部署案例
- 参考栏, API ,kubectl ,二进制文件启动参数
master: 主控节点
-------- api server : 认证、授权、注册等 服务
-------- scheduler : 按照预定策略 对 Node 节点进行调度
-------- controller manager : 故障检测、 自动扩展 等服务
-------- etcd : 数据库
node: worker 节点
-------- kubelet : master 安排 kubelet 来管理 node 节点
-------- kube-proxy : 服务发现 、 负载均衡等 代理服务
apiVersion: v1
kind: Pod
metadata:
name: nginx-demo
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containersPort: 80
------01 查看 minikube 状态
[root@k8s 104 ~]# minikube status
------- 启动 minikube
[root@k8s ~]# minikube start
------ minikube 版本
[root@k8s bin]# minikube version
minikube version: v1.7.3
------02 查看本机docker 状态
[root@k8s ~]# service docker status
[root@k8s ~]# systemctl status docker
------- 查看docker
[root@k8s ~]# docker -v
Docker version 20.10.7, build f0df350
------ 03 查看防火墙状态
[root@k8s ~]# systemctl status firewalld
------04 kubectl 命令 查看相关
------0401 查看kubectl 帮助命令
kubectl --help
kubectl get --help
------0402 查看本机 kubectl 版本
[root@k8s ~]# kubectl version --client
------0403 查看 获取节点和服务版本信息
[root@k8s 104 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready <none> 11d v1.15.0
------- 获取节点和服务版本信息,并查看附加信息
[root@k8s 104 ~]# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
minikube Ready <none> 11d v1.15.0 192.168.121.104 <none> CentOS Linux 7 (Core) 3.10.0-957.el7.x86_64 docker://17.12.1-ce
------0404 查看 获取pod信息,默认是default名称空间
[root@k8s 104 ~]# kubectl get pod
No resources found in default namespace.
------ 获取指定名称空间的pod
[root@k8s 104 ~]# kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-6ccc4844f7-9nmm6 1/1 Running 4 9d
etcd-minikube 1/1 Running 3 9d
kube-addon-manager-minikube 1/1 Running 3 9d
......
-------- 获取指定名称空间 指定名称 的pod
[root@k8s 104 ~]# kubectl get pod -n kube-system etcd-minikube
NAME READY STATUS RESTARTS AGE
etcd-minikube 1/1 Running 3 9d
------- 获取指定名称空间 指定名称 的pod ,并查看附加信息
[root@k8s 104 ~]# kubectl get pod -n kube-system etcd-minikube -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
etcd-minikube 1/1 Running 3 9d 192.168.121.104 minikube <none> <none>
-------- 获取所有命名空间的 pod
[root@k8s 104 ~]# kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-6ccc4844f7-9nmm6 1/1 Running 4 9d
kube-system etcd-minikube 1/1 Running 3 9d
......
-------- 查看pod的标签信息
[root@k8s 104 ~]# kubectl get pod -A --show-labels
NAMESPACE NAME READY STATUS RESTARTS AGE LABELS
kube-system coredns-6ccc4844f7-9nmm6 1/1 Running 4 9d k8s-app=kube-dns,pod-template-hash=6ccc4844f7
kube-system etcd-minikube 1/1 Running 3 9d component=etcd,tier=control-plane
kube-system kube-addon-manager-minikube 1/1 Running 3 9d component=kube-addon-manager,kubernetes.io/minikube-addons=addon-manager,version=v9.0
-------- 按照标签名称查询 某个pod
[root@k8s 104 ~]# kubectl get pod -A --selector='k8s-app=kube-dns'
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-6ccc4844f7-9nmm6 1/1 Running 4 9d
-------- 查看 指定pod(kube-system 命名空间 kube-apiserver-minikube 名称 ) 的日志
[root@k8s 104 ~]# kubectl logs -f --tail 500 -n kube-system kube-apiserver-minikube
------0405 svc
------ 查看所有名称空间的service信息
[root@k8s 104 ~]# kubectl get svc -A
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 12d
kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 12d
kube-system kubernetes-dashboard ClusterIP 10.104.239.4 <none> 80/TCP 12d
---------- 查看指定名称空间的service信息
[root@k8s 104 ~]# kubectl get svc -n kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 12d
kubernetes-dashboard ClusterIP 10.104.239.4 <none> 80/TCP 12d
------0406 查看其他信息
-------- 查看资源对象简写
[root@k8s 104 ~]# kubectl api-resources
NAME SHORTNAMES APIVERSION NAMESPACED KIND
bindings v1 true Binding
componentstatuses cs v1 false ComponentStatus
configmaps cm v1 true ConfigMap
endpoints ep v1 true Endpoints
events ev v1 true Event
limitranges limits v1 true LimitRange
namespaces ns v1 false Namespace
nodes no v1 false Node
persistentvolumeclaims pvc v1 true PersistentVolumeClaim
persistentvolumes pv v1 false PersistentVolume
pods po v1 true Pod
podtemplates v1 true PodTemplate
replicationcontrollers rc v1 true ReplicationController
resourcequotas quota v1 true ResourceQuota
secrets v1 true Secret
serviceaccounts sa v1 true ServiceAccount
services svc v1 true Service
mutatingwebhookconfigurations admissionregistration.k8s.io/v1beta1 false MutatingWebhookConfiguration
validatingwebhookconfigurations admissionregistration.k8s.io/v1beta1 false ValidatingWebhookConfiguration
customresourcedefinitions crd,crds apiextensions.k8s.io/v1beta1 false CustomResourceDefinition
apiservices apiregistration.k8s.io/v1 false APIService
controllerrevisions apps/v1 true ControllerRevision
daemonsets ds apps/v1 true DaemonSet
deployments deploy apps/v1 true Deployment
replicasets rs apps/v1 true ReplicaSet
statefulsets sts apps/v1 true StatefulSet
tokenreviews authentication.k8s.io/v1 false TokenReview
localsubjectaccessreviews authorization.k8s.io/v1 true LocalSubjectAccessReview
selfsubjectaccessreviews authorization.k8s.io/v1 false SelfSubjectAccessReview
selfsubjectrulesreviews authorization.k8s.io/v1 false SelfSubjectRulesReview
subjectaccessreviews authorization.k8s.io/v1 false SubjectAccessReview
horizontalpodautoscalers hpa autoscaling/v1 true HorizontalPodAutoscaler
cronjobs cj batch/v1beta1 true CronJob
jobs batch/v1 true Job
certificatesigningrequests csr certificates.k8s.io/v1beta1 false CertificateSigningRequest
leases coordination.k8s.io/v1 true Lease
events ev events.k8s.io/v1beta1 true Event
daemonsets ds extensions/v1beta1 true DaemonSet
deployments deploy extensions/v1beta1 true Deployment
ingresses ing extensions/v1beta1 true Ingress
networkpolicies netpol extensions/v1beta1 true NetworkPolicy
podsecuritypolicies psp extensions/v1beta1 false PodSecurityPolicy
replicasets rs extensions/v1beta1 true ReplicaSet
ingresses ing networking.k8s.io/v1beta1 true Ingress
networkpolicies netpol networking.k8s.io/v1 true NetworkPolicy
runtimeclasses node.k8s.io/v1beta1 false RuntimeClass
poddisruptionbudgets pdb policy/v1beta1 true PodDisruptionBudget
podsecuritypolicies psp policy/v1beta1 false PodSecurityPolicy
clusterrolebindings rbac.authorization.k8s.io/v1 false ClusterRoleBinding
clusterroles rbac.authorization.k8s.io/v1 false ClusterRole
rolebindings rbac.authorization.k8s.io/v1 true RoleBinding
roles rbac.authorization.k8s.io/v1 true Role
priorityclasses pc scheduling.k8s.io/v1 false PriorityClass
csidrivers storage.k8s.io/v1beta1 false CSIDriver
csinodes storage.k8s.io/v1beta1 false CSINode
storageclasses sc storage.k8s.io/v1 false StorageClass
volumeattachments storage.k8s.io/v1 false VolumeAttachment
[root@k8s 104 ~]#
------ 查看componentstatuses信息
[root@k8s 104 ~]# kubectl get cs -A
NAME AGE
controller-manager <unknown>
scheduler <unknown>
etcd-0 <unknown>
------ 查看所有configmaps信息
[root@k8s 104 ~]# kubectl get cm -A
NAMESPACE NAME DATA AGE
kube-system coredns 1 12d
kube-system extension-apiserver-authentication 6 12d
kube-system kube-proxy 2 9d
------ 查看所有serviceaccounts信息
[root@k8s 104 ~]# kubectl get sa -A
NAMESPACE NAME SECRETS AGE
default default 1 12d
kube-node-lease default 1 9d
kube-public default 1 12d
kube-system attachdetach-controller 1 12d
kube-system bootstrap-signer 1 12d
------ 查看所有daemonsets信息
[root@k8s 104 ~]# kubectl get ds -A
NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
kube-system kube-proxy 1 1 1 1 1 beta.kubernetes.io/os=linux 9d
------ 查看所有deployments信息
[root@k8s 104 ~]# kubectl get deploy -A
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
kube-system coredns 1/1 1 1 12d
kube-system kubernetes-dashboard 0/1 1 0 12d
------ 查看所有replicasets信息
[root@k8s 104 ~]# kubectl get rs -A
NAMESPACE NAME DESIRED CURRENT READY AGE
kube-system coredns-6967fb4995 0 0 0 9d
kube-system coredns-6c66ffc55b 0 0 0 12d
kube-system coredns-6ccc4844f7 1 1 1 9d
kube-system kubernetes-dashboard-6d97598877 1 1 0 12d
------ 查看所有statefulsets信息
[root@k8s 104 ~]# kubectl get sts -A
No resources found
------ 查看所有jobs信息
[root@k8s 104 ~]# kubectl get jobs -A
No resources found
------ 查看所有ingresses信息
[root@k8s 104 ~]# kubectl get ing -A
No resources found
------ 查看有哪些名称空间
[root@k8s 104 ~]# kubectl get ns
NAME STATUS AGE
default Active 12d
kube-node-lease Active 9d
kube-public Active 12d
kube-system Active 12d
------ 查看集群信息
[root@k8s 104 ~]# kubectl cluster-info
Kubernetes control plane is running at https://192.168.121.104:8443
CoreDNS is running at https://192.168.121.104:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
------ 查看 endpoint 列表
[root@k8s 104 ~]# kubectl get endpoints
NAME ENDPOINTS AGE
kubernetes 192.168.121.104:8443 12d
========== 05 kubernetes 对象管理 ==========
1.指令式命令
----- kubectl create deployment nginx --image nginx
2.指令式对象配置
----- kubectl create -f nginx.yaml 创建配置文件中定义的对象
----- kubectl delete -f nginx.yaml -f redis.yaml 删除两个配置文件中定义的对象
----- kubectl replace -f nginx.yaml 更新配置文件中定义的对象
3.声明式对象配置
----- kubectl diff -f configs/
----- kubectl apply -f configs/
------06 kubectl 命令 创建相关
------- 1:创建命令 kubectl run ---- 创建nginx,指定镜像,指定端口
[root@k8s 104 ~]# kubectl run nginx-deployment --image=nginx --port=80
pod/nginx-deployment created
[root@k8s 104 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment 0/1 ContainerCreating 0 27s
------- 2:删除命令
创建yml 脚本
---- 创建 nginxPod.yaml 文件
cat>nginxPod.yaml<<EOF
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
ports:
- containerPort: 80
EOF
-------- 创建 nginxService.yml 文件
cat>nginxService.yml<<EOF
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
selector:
app: nginx
EOF
安装MiniKube的前提
1.首先cd进入/etc/selinux目录,修改config文件内容,将SELINUX修改为disabled
安装包依赖:yum install -y yum-utils device-mapper-persistent-data lvm2 wget
添加原件源:yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum缓存:yum clean all && yum makecache fast
安装docker-ce: yum -y install docker-ce
docker启动:service docker start
下载二进制包,添加可执行权限,移动到bin目录,
因为我是root登录的所以是/usr/bin,其他用户登录是/usr/local/bin
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/amd64/kubectl &&
chmod +x ./kubectl &&
mv ./kubectl /usr/bin/kubectl
查看版本:kubectl version --client
三、安装minikube
[root@k8s bin]# curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/v1.11.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
四、启动minikube
关闭默认自带防火墙:systemctl stop firewalld && systemctl disable firewalld
安装iptables管理工具,并清空规则:yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save
setenforce 0 && sed -i ‘s/^SELINUX=.*/SELINUX=disabled/’ /etc/selinux/config
swapoff -a && sed -i ‘/ swap / s/^(.*)$/#\1/g’ /etc/fstab
cat > kubernetes.conf <
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0 # 禁止使用 swap 空间,只有当系统 OOM 时才允许使用它
vm.overcommit_memory=1 # 不检查物理内存是否够用
vm.panic_on_oom=0 # 开启 OOM
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
调用配置:cp kubernetes.conf /etc/sysctl.d/kubernetes.conf && sysctl -p /etc/sysctl.d/kubernetes.conf
启动minikube下载所需镜像,不会用vbox所以用默认容器驱动启动的,切记要配置虚拟机DNS:
minikube start --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers
–cpus=2 \ # 为虚拟机分配核数
–memory=4096 \ # 分配内存
–vm-driver=none
cat > /etc/docker/daemon.json <
{
“registry-mirrors”: [
“https://registry.docker-cn.com”
]
}
EOF
docker重启后台运行:service docker restart && systemctl enable docker
kubectl version --client
docker -v
minikube dashboard
没有成功 20210606
查看VMware创建的虚拟机是否支持嵌套虚拟化