静态Pod

        在Kubernetes集群中除了我们经常使用到的普通的 Pod 外,还有一种特殊的 Pod,叫做Static Pod,就是我们说的静态 Pod,静态 Pod 有什么特殊的地方呢?

        静态 Pod 直接由特定节点上的kubelet进程来管理,不通过 master 节点上的apiserver。无法与我们常用的控制器Deployment或者DaemonSet进行关联,它由kubelet进程自己来监控,当pod崩溃时重启该pod,kubelete也无法对他们进行健康检查。静态 pod 始终绑定在某一个kubelet,并且始终运行在同一个节点上。 kubelet会自动为每一个静态 pod 在 Kubernetes 的 apiserver 上创建一个镜像 Pod(Mirror Pod),因此我们可以在 apiserver 中查询到该 pod,但是不能通过 apiserver 进行控制(例如不能删除)。

        创建静态 Pod 有两种方式:配置文件和 HTTP 两种方式,在这里面我们主要讲解配置文件创建的方式。

        配置文件就是放在特定目录下的标准的 JSON 或 YAML 格式的 pod 定义文件。用kubelet --pod-manifest-path=<the directory>来启动kubelet进程,kubelet 定期的去扫描这个目录,根据这个目录下出现或消失的 YAML/JSON 文件来创建或删除静态 pod。

cat > /etc/kubernetes/manifests/static-nginx.yaml << EOF
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: default
  labels:
    app:  nginx
spec:
  containers:
  - name:  nginx
    ports:
    - containerPort: 80
    image: nginx:1.20
EOF

        写在/etc/kubernetes/manifests/目录下即可

[root@master ~]# cat > /etc/kubernetes/manifests/static-nginx.yaml << EOF
> apiVersion: v1
> kind: Pod
> metadata:
>   name: nginx
>   namespace: default
>   labels:
>     app:  nginx
> spec:
>   containers:
>   - name:  nginx
>     ports:
>     - containerPort: 80
>     image: nginx:1.20
>   imagePullPolicy: IfNotPresent
> EOF
[root@master ~]# 
[root@master ~]# kubectl get pod
NAME           READY   STATUS              RESTARTS   AGE
nginx-master   0/1     ContainerCreating   0          5s

# 静态pod删除以后还在
[root@master ~]# kubectl delete pod nginx-master
pod "nginx-master" deleted
[root@master ~]# kubectl get pod
NAME           READY   STATUS    RESTARTS   AGE
nginx-master   1/1     Running   0          14s

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值