Docs/CloudNative/Kubernetes/Base/静态pod.md
2022-10-18 16:59:37 +08:00

2.6 KiB
Raw Blame History

静态 Pod 在指定的节点上由 kubelet 守护进程直接管理,不需要 API 服务器 监管。 与由控制面管理的 Pod例如Deployment 不同kubelet 监视每个静态 Pod在它崩溃之后重新启动

静态 Pod 永远都会绑定到一个指定节点上的 Kubelet。

kubelet 会尝试通过 Kubernetes API 服务器为每个静态 Pod 自动创建一个 镜像 Pod。 这意味着节点上运行的静态 Pod 对 API 服务来说是可见的,但是不能通过 API 服务器来控制。

可以通过文件系统上的配置文件 或者 web 网络上的配置文件 来配置静态 Pod

文件系统上的静态 Pod 声明文件

文件系统上的静态 Pod 声明文件 声明文件是标准的 Pod 定义文件,以 JSON 或者 YAML 格式存储在指定目录。路径设置在 Kubelet 配置文件 的 staticPodPath: <目录> 字段kubelet 会定期的扫描这个文件夹下的 YAML/JSON 文件来创建/删除静态 Pod。 注意 kubelet 扫描目录的时候会忽略以点开头的文件。 1、选择一个需要运行静态pod的节点 2、选择一个目录创建yaml文件。如/etc/kubelet.d目录保存静态pod定义文件。定义文件与其他pod文件格式相同

apiVersion: v1
kind: Pod
metadata:
  name: static-web
  labels:
    role: myrole
spec:
  containers:
    - name: web
      image: nginx
      ports:
        - name: web
          containerPort: 80
          protocol: TCP

3、配置这个节点上的 kubelet使用这个参数执行 --pod-manifest-path=/etc/kubelet.d/

KUBELET_ARGS="--cluster-dns=10.254.0.10 --cluster-domain=kube.local --pod-manifest-path=/etc/kubelet.d/"

或者在kubelet配置文件中加上staticPodPath: <目录>字段 4、重启 kubelet

Web 网上的静态 Pod 声明文件

Kubelet 根据 --manifest-url= 参数的配置定期的下载指定文件,并且转换成 JSON/YAML 格式的 Pod 定义文件。 与文件系统上的清单文件使用方式类似kubelet 调度获取清单文件。 如果静态 Pod 的清单文件有改变kubelet 会应用这些改变 1、创建一个 YAML 文件,并保存在 web 服务上,为 kubelet 生成一个 URL。

apiVersion: v1
kind: Pod
metadata:
  name: static-web
  labels:
    role: myrole
spec:
  containers:
    - name: web
      image: nginx
      ports:
        - name: web
          containerPort: 80
          protocol: TCP

2、通过在选择的节点上使用 --manifest-url= 配置运行 kubelet。

KUBELET_ARGS="--cluster-dns=10.254.0.10 --cluster-domain=kube.local --manifest-url=<manifest-url>"

3、重启 kubelet