如何创建和删除静态pod

562 阅读3分钟

读者朋友们好,我将介绍关于如何在kubernates中创建和删除静态pod的细节。本指南的前提是你对Kubernetes和pod的运行方式有基本的了解。

简介

静态pod是由特定节点上的kubelet守护程序直接管理的,没有API服务器的观察。

它没有一个与之相关的复制控制器;相反,kubelet守护进程一直在跟踪它,并在它崩溃时重新启动。

在不涉及Kubernetes控制平面的情况下,在单个节点上执行pod的一个不错的选择是使用静态pod。

前提条件

需要一个Kubernetes集群,并且必须设置命令行工具kubectl来与你的集群连接。(通过工作流程和Kubernetes控制平面组件)

现在让我们看看如何创建静态pods

首先,我们需要连接到我们希望静态pod运行的节点。由于我们是在minikube上工作的,所以使用.NET命令登录到minikube。

minikube ssh

使用这个命令,我们进入到我们的minikube节点。

下一步是,我们必须将我们的静态pod清单文件放入所有其他静态pod清单文件所在的目录中。

要检查哪个pod是静态pod,从你的minikube节点退出,在你的终端输入命令。

kubectl get pods --all-namespaces

通过使用这个命令,你会看到一个pod的列表。但是,如何识别哪个pod是静态pod呢?

正如我们所知,静态pod是由kubelet管理的。kubelet会做什么,kubelet会将节点的名字与pod的名字相加。

例如,"etcd-minikube"

现在,如何找出这4个pod的清单文件所在的路径?为此,我们必须检查我们的config.yaml文件,它存在于kubelet文件夹中。使用命令抓取config.yaml文件。

在该文件中搜索静态pod路径。

sudo cat /var/lib/kubelet/config.yaml 

再次执行 "minikube ssh"

之后,键入命令cd /etc/kubernetes/manifests在节点内,Kubernetes组件的清单文件是指静态pods文件。

cd /etc/kubernetes/manifests

然后做ls来查看/etc/kubernetes/manifests里面的静态pod文件。

ls

现在我在这个目录里面为静态pod写一个清单文件。

注意:首先安装任何你选择的文本编辑器,如nano或vim。我使用nano来编写清单文件,确保在nano前输入sudo,否则会出现权限拒绝的错误。

sudo nano staticpod.yaml

apiVersion: v1
kind: Pod
metadata: 
  name: staticpod
  labels:
    role: staticpod-role
spec:
  containers:
    - name: container
      image: nginx
      ports:
        - name: port
          containerPort: 80
          protocol: TCP

我们已经创建了一个Nginx容器的文件,作为一个静态pod在80端口运行。

从你的minikube节点注销,回到你的正常终端,输入 "exit"。

并再次使用命令来检查pod的状态。

kubectl get pods

现在,输入命令

kubectl get pods --all-namespaces

你会看到,先前有4个文件,现在有5个文件。

所以,你可以看到,名称为staticpod-minikube的pod已经成功运行。

pod创建-> kubelet管理静态pod,所以,kubelet扫描目录并相应地根据配置文件的配置创建/删除静态pod。

最后,要删除静态pod,只需做minikube ssh,并再次使用cd /etc/kubernetes/manifests .

并使用命令删除该文件。

rm -rf staticpod.yaml

总结一下

该博客解释了如何创建和删除静态pod。我希望你喜欢这个实用的指导。激励自己创建静态pod,并利用它们,同时在Google上查找更多的例子。