静态pod
静态pod 是由 kubelet 管理的只在特定node上存在的pod;静态pod总是由kubelet创建的,并且只在kubelet所在的Node上运行。静态pod 不能通过 api-server来管理,无法和 RC,RS,Deployment或者 DaemonSet进行关联;并且 kubelet无法对静态pod 进行健康检查。
创建静态 pod 的两种方式
1、本地配置文件方式
kubelet 启动时由 --pod-manifest-path 指定的目录(默认/etc/kubernetes/manifests),kubelet会定期扫描这个目录,并根据这个目录下的 .yaml 或 .json 文件进行创建和更新操作
- 如果把 pod的yaml描述文件放到 这个目录中,等kubelet扫描到文件,会自动在本机创建出来 pod;
- 如果把 pod的yaml文件更改了,kubelet也会识别到,会自动更新 pod;
- 如果把 pod的yaml文件删除了,kubelet会自动删除掉pod;
- 因为静态pod 不能被 api-server 直接管理,所以它的更新删除操作不能由 kubectl 来执行,只能直接修改或删除文本文件。
1.1、查看本机 kubelet
kubelet 是linux原生service unit,在k8s 的每台机器上包括master都存在。
1.2、查看本机 kubelet 的service unit
1.3、举例,k8s集群中的静态pod
都在 master 机器上
- etcd
- kube-apiserver
- kube-controller-manager
- kube-scheduler
如下是kube-apiserver.yaml的文件内容
apiVersion: v1
kind: Pod
metadata:
annotations:
kubeadm.kubernetes.io/kube-apiserver.advertise-address.endpoint: 192.168.2.79:6443
creationTimestamp: null
labels:
component: kube-apiserver
tier: control-plane
name: kube-apiserver
namespace: kube-system
spec:
containers:
- command:
- kube-apiserver
- --advertise-address=192.168.2.79
- --allow-privileged