当前位置:   article > 正文

k8s之静态 pod_k8s 静态pod

k8s 静态pod

静态pod 是由 kubelet 管理的只在特定node上存在的pod;静态pod总是由kubelet创建的,并且只在kubelet所在的Node上运行。
静态pod 不能通过 api-server来管理,无法和 RC,RS,Deployment或者 DaemonSet进行关联;
并且 kubelet无法对静态pod 进行健康检查。
创建静态pod
1、本地配置文件方式:
kubelet 启动时由 staticPodPath 指定的目录(默认/etc/kubernetes/manifests),kubelet会定期扫描这个目录,并根据这个目录下的 .yaml 或 .json 文件进行创建和更新操作

  • 如果把 pod的yaml描述文件放到 这个目录中,等kubelet扫描到文件,会自动在本机创建出来 pod;
  • 如果把 pod的yaml文件更改了,kubelet也会识别到,会自动更新 pod;
  • 如果把 pod的yaml文件删除了,kubelet会自动删除掉pod;
  • 因为静态pod 不能被 api-server 直接管理,所以它的更新删除操作不能由 kubectl 来执行,只能直接修改或删除文本文件。
    如果不知道这个目录在哪可以使用如下方法进行查找:
[root@k8s-master-1 ~]# systemctl cat kubelet
# /usr/lib/systemd/system/kubelet.service
[Unit]
Description=kubelet: The Kubernetes Node Agent
Documentation=https://kubernetes.io/docs/
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/bin/kubelet
Restart=always
StartLimitInterval=0
RestartSec=10

[Install]
WantedBy=multi-user.target

# /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf
# Note: This dropin only works with kubeadm and kubelet v1.11+
[Service]
Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf 
            --kubeconfig=/etc/kubernetes/kubelet.conf"
Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
# This is a file that "kubeadm init" and "kubeadm join" generates at
runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically

--config=/var/lib/kubelet/config.yaml文件集中存在静态pod的配置目录,编辑查看:
shutdownGracePeriodCriticalPods: 0s
staticPodPath: /etc/kubernetes/manifests  ###
streamingConnectionIdleTimeout: 0s
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

编辑pod.yaml文件,如下:

---
apiVersion: v1
kind: Pod
metadata:
  name: static-pod
  lables:
    app: nginx
spec:
  containers:
    - name: test-static
      image: nginx:latest
      ports:
        - containerPort: 81
          name: http-server
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

将此文件拷贝到 /etc/kubernetes/manifests目录下
查看pod。如下:

[root@k8s-master-1 ~]# 
[root@k8s-master-1 ~]# kubectl get po -o wide
NAME                      READY   STATUS    RESTARTS   AGE     IP           NODE           NOMINATED NODE   READINESS GATES
static-pod-k8s-master-1   1/1     Running   1          3h36m   10.244.0.7   k8s-master-1   <none>           <none>
static-pod-k8s-node-1     1/1     Running   0          3h11m   10.244.1.2   k8s-node-1     <none>           <none>
[root@k8s-master-1 ~]# 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

我在两个节点放了这个文件,所有会有两个pod,根据node进行区分。
要想删除pod,直接把yaml文件移走即可。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/162094?site
推荐阅读
相关标签
  

闽ICP备14008679号