Bota5ky

Kubernetes学习笔记(十四):Static Pods

kubelet依赖于kube-apiserver来获得关于在其node上加载哪些pod的指令,这是基于存储在etcd数据库中的kube-scheduler所做的决定。

kubelet也可以独立运行,可以创建pod,可以指定用于存储pod信息的目录中读取pod定义文件。kubelet会每隔一段时间确认pod定义文件的信息,并保持一致。

replicasets、deployment、service无法独立运行。它们都是整个Kubernetes架构的概念组成部分,需要复制和部署控制器等其他控制平面组件。

kubelet在pod级别工作,只能理解pod,这也是为什么它能够创建static pod。

指定目录可以是任意地址,指定方式为kubelet.service文件中

  • --pod-manifest-path=/etc/Kubernetes/manifests
  • --config=kubeconfig.yaml ps : kubeadmin也是用这种方式实现的

其中kubeconfig.yaml

staticPodPath: /etc/Kubernetes/manifests

docker ps查看Static Pod生成结果,如果没有Kubernetes cluster。

如果有Kubernetes cluster,kube-apiserver会知道Static Pod的情况。(kube-apiserver上会有个Static Pod的只读镜像,pod的name会附加node的名称)

可以使用Static Pod将控制平面组件本身作为pod部署在node上,这样就可以在本地进行部署,不必下载二进制文件配置服务或担心服务崩溃,这也是kubeadmin工具设置Kubernetes集群的方式。

Static Pods vs DaemonSets

Static Pods DaemonSets
Created by the Kubelet Created by Kube-API server (DaemonSet Controller)
Deploy Control Plane components as Static Pods Deploy Monitoring Agents, Logging Agents on nodes
Ignored by the Kube-Scheduler Ignored by the Kube-Scheduler

判断是Static Pod的几种方式:

  • pod name结尾带有node name
  • kubectl get pod pod-name -n=kube-system -o yaml中查看配置文件,ownerReferences属性下kind为Node,普通的为ReplicaSet等

查看Static Pod的配置文件位置:

  • 查找config文件的方式 ps -aux | grep kubelet 查看 --config

  • 查看/var/lib/kubelet/config.yaml中的staticPodPath

添加command的方式:在kubectl命令后加上--command -- sleep 1000,请保证--command放在整条命令之后,所有在--后的都会被视为添加的command。

创建Static Pod的方式就是把pod定义文件放到staticPath

切换node的方式ssh node-ip-address

posted @ 2022-08-20 16:33  Bota5ky  阅读(188)  评论(0)    收藏  举报