推荐答案
// www.javascriptcn.com code example
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: my-daemonset
spec:
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: my-image:latest
ports:
- containerPort: 80本题详细解读
1. DaemonSet 概述
DaemonSet 是 Kubernetes 中的一种控制器,用于确保所有(或部分)节点上运行一个 Pod 的副本。当有新的节点加入集群时,DaemonSet 会自动在该节点上创建一个 Pod;当节点从集群中移除时,DaemonSet 也会自动删除该节点上的 Pod。
2. DaemonSet 的 YAML 结构
- apiVersion: 指定 Kubernetes API 的版本,通常为
apps/v1。 - kind: 指定资源类型为
DaemonSet。 - metadata: 包含 DaemonSet 的元数据,如名称、标签等。
- spec: 定义 DaemonSet 的规格,包括选择器和 Pod 模板。
- selector: 用于选择哪些 Pod 属于这个 DaemonSet。
matchLabels指定了 Pod 的标签。 - template: 定义 Pod 的模板,包括 Pod 的元数据和规格。
- metadata: 定义 Pod 的元数据,如标签。
- spec: 定义 Pod 的规格,包括容器、镜像、端口等。
- selector: 用于选择哪些 Pod 属于这个 DaemonSet。
3. 关键字段解释
- selector.matchLabels: 用于匹配 Pod 的标签,确保 DaemonSet 管理的 Pod 符合指定的标签。
- template.metadata.labels: 定义 Pod 的标签,这些标签应与
selector.matchLabels匹配。 - template.spec.containers: 定义 Pod 中的容器,包括容器名称、镜像和端口等。
4. 创建 DaemonSet
将上述 YAML 文件保存为 daemonset.yaml,然后使用以下命令创建 DaemonSet:
kubectl apply -f daemonset.yaml
5. 验证 DaemonSet
使用以下命令查看 DaemonSet 的状态:
kubectl get daemonset
使用以下命令查看 DaemonSet 创建的 Pod:
kubectl get pods -l app=my-app