介绍
在 Kubernetes 中,DaemonSet 是一种控制器,用于确保集群中的每个节点上都运行着一个 Pod 的副本。本实验将指导你创建一个 DaemonSet,以便在集群中的每个节点上运行 Pod 的副本。
在 Kubernetes 中,DaemonSet 是一种控制器,用于确保集群中的每个节点上都运行着一个 Pod 的副本。本实验将指导你创建一个 DaemonSet,以便在集群中的每个节点上运行 Pod 的副本。
在创建资源之前,你需要一个正在运行的 Kubernetes 集群。Minikube 是一个轻量级的 Kubernetes 环境,可以在你的本地机器上运行。
导航到工作目录:
打开终端并导航到默认的项目文件夹:
cd /home/labex/project
启动 Minikube:
启动 Minikube 以初始化一个 Kubernetes 集群:
minikube start
验证 Minikube 是否正在运行:
检查 Minikube 集群的状态:
minikube status
kubelet
和 apiserver
等组件是否显示为 Running
。minikube start
。如果启动 Minikube 时遇到问题,可以使用 minikube delete
重置环境(如有需要)。
创建一个简单的 Pod,它将作为副本的模板。创建一个名为 /home/labex/project/myapp-pod.yaml
的文件,内容如下:
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
spec:
containers:
- name: myapp-container
image: nginx
ports:
- containerPort: 80
使用以下命令创建 Pod:
kubectl apply -f /home/labex/project/myapp-pod.yaml
创建一个 DaemonSet,以便在集群中的每个节点上运行 myapp-pod
的副本。创建一个名为 /home/labex/project/myapp-daemonset.yaml
的文件,内容如下:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: myapp-daemonset
spec:
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: nginx
ports:
- containerPort: 80
此 DaemonSet 使用 myapp-pod
作为副本的模板,并将 matchLabels
选择器设置为 app: myapp
,以确保在每个节点上创建副本。
使用以下命令创建 DaemonSet:
kubectl apply -f /home/labex/project/myapp-daemonset.yaml
验证 DaemonSet 是否已创建,并确保 myapp-pod
的副本在集群中的每个节点上运行。使用以下命令列出集群中的节点:
kubectl get nodes
使用以下命令列出由 DaemonSet 创建的 Pod:
kubectl get pods -l app=myapp
你应该会看到集群中每个节点对应一个 Pod。
更新 DaemonSet 以更改 myapp-container
使用的镜像。创建一个名为 /home/labex/project/myapp-daemonset-update.yaml
的文件,内容如下:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: myapp-daemonset
spec:
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: busybox
command: ["sleep", "3600"]
此更新后的 DaemonSet 将 myapp-container
使用的镜像更改为 busybox
,并将命令设置为 sleep 3600
。
使用以下命令更新 DaemonSet:
kubectl apply -f /home/labex/project/myapp-daemonset-update.yaml
验证 DaemonSet 是否已更新,并确保 myapp-pod
的副本正在使用新镜像运行。使用以下命令列出由 DaemonSet 创建的 Pod:
kubectl get pods -l app=myapp
你应该会看到使用更新后的镜像创建的新 Pod。
在本实验中,你学习了如何在 Kubernetes 中使用 DaemonSet 在集群中的每个节点上运行 Pod 的副本。