Kubernetes Controller Manager :k8s中所有资源对象的自动化控制中心,维护管理集群的状态,比如故障检测,自动扩展,滚动更新,包括节点状态状况、Pod个数、Pods和Service的关联等等。
Kubernetes Scheduler :负责资源调度,按照预定的调度策略将Pod调度到相应的机器上。
kube-apiserver :以REST API服务形式提供接口,作为整个系统的控制入口。
etcd :负责节点间的服务发现和配置共享。
kube-proxy : 运行在每个计算节点上,负责Pod网络代理。定时从etcd获取到service信息来做相应的策略,保存整个集群的状态
flannel : 运行在每个计算节点上,负责网络通信
可以在master中使用命令 kubectl get nodes查看集群中的node节点。每个Node都会被Master分配一些工作负载(Docker容器),当某个Node宕机时,该节点上的工作负载就会被Master自动转移到其它节点上
kubelet : 负责Pod对应的容器的创建、启停等任务,同时与Master密切协作,实现集群管理的基本功能
kube-proxy :实现service的通信与负载均衡
flannel : 负责网络通信
容器集(Pod) :被部署在单个节点上的,且包含一个或多个容器的容器组。同一容器集中的所有容器共享同一个 IP 地址、IPC、主机名称及其它资源。容器集会将网络和存储从底层容器中抽象出来。这样,您就能更加轻松地在集群中移动容器。
副本控制器(Replication controller ):用于控制应在集群某处运行的完全相同的容器集副本数量。
服务(Service ):将工作内容与容器集分离。Kubernetes 服务代理会自动将服务请求分发到正确的容器集——无论这个容器集会移到集群中的哪个位置,甚至可以被替换掉。
kubectl : Kubernetes 的命令行配置工具。
DNS :一个可选的DNS服务,用于为每个Service对象创建DNS记录,这样所有的Pod就可以通过DNS访问服务了
pod、deployment、statefulset(有状态)、job、cronjob(定时任务)、DaemonSet
集群存储守护程序,如glusterd、ceph要部署在每个节点上以提供持久性存储;
节点监视守护进程,如Prometheus监控集群,可以在每个节点上运行一个node-exporter进程来收集监控节点的信息;
日志收集守护程序,如fluentd或logstash,在每个节点上运行以收集容器的日志
kubectl run consul--image=consul:1.5.2 --port=8500 --dry-run -o yaml >>consul-deployment.ymal
cat consul-deployment.ymal
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
run: consul
name: consul
spec:
replicas: 1
selector:
matchLabels:
run: consul
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
run: consul
spec:
containers:
- image: consul:1.5.2
name: consul
ports:
- containerPort: 8500
resources: {}
status: {}
kubectl apply -f zookeeper-deployment.ymal
#查询、创建deploy控制器时会自动创建rs控制器,二者具有相同的标签选择器
kubectl get deploy
#导出资源成yaml文件到新的文件中
kubectl get deployment/nginx-deployment --export -o yaml > nginx_abc.yaml
kubectl get rs
kubectl run nginx --image=nginx --port=80 --replicas=2
kubectl get pods --all-namespaces
kubectl get pods --all-namespaces -o wide
kubectl describe pod kube-flannel-ds-amd64-2d6tb -n kube-system 查询具体信息
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uoWWs0rT-1637292831685)(image/image.png)]
kubectl delete pod kube-proxy-wlrhr -n kube-system
kubectl delete deployment nginx
直接修改yaml (知道yaml位置)
kubectl edit deploy nginx (不知道yaml位置)
kubectl set image deploy nginx nginx=nginx:1.9 --record 升级并记录,可实现回滚,推荐使用该方法
滚动升级相关命令
$ kubectl set image deploy/nginx nginx=nginx:1.7.9 --record
$ kubectl set image deploy/nginx nginx=nginx --record
$ kubectl rollout status deploy nginx #查看升级状态
$ kubectl rollout pause deployment nginx #升级暂停
$ kubectl rollout resume deployment nginx #恢复升级
$ kubectl describe deploy nginx #查看升级详情
$ kubectl rollout history deploy/nginx #查看升级历史
这里使用–to-revision=1回滚到1版本,如果省略这个选项,则会回退到上个版本
kubectl rollout undo deploy pc-deployment --to-revision=1 -n dev
kubectl scale deploy nginx-deployment --replicas=3 -n default 副本数
kubectl get pods -o wide 查询pod
kubectl logs mysql-rc-5cc89
获取节点信息:kubectl get nodes
查询当前适用版本:kubectl api-versions
查询pod: kubectl get pods -o wide
进入pod: kubectl exec -it mysql-rc-5cc89 /bin/sh
登录:mysql -u root -p