美文网首页
备战CKA每日一题——第2天

备战CKA每日一题——第2天

作者: 小E的私房菜 | 来源:发表于2020-03-09 16:52 被阅读0次

第2题:Daemonset:


题目:
  • 确保在kubernetes集群的每个节点上运行一个Pod nginx实例,其中nginx还表示必须使用的镜像名称。
  • 不要覆盖任何当前存在的污点( 不要有tolerations)
  • 使用Daemonset 完成此任务,并使用ds.kusc00201作为Daemonset名称
解题思路:

本题考的是kubectl Deamon操作指令,DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本。当有节点加入集群时, 也会为他们新增一个 Pod 。当有节点从集群移除时,这些 Pod 也会被回收。

具体可参考:https://kubernetes.io/zh/docs/concepts/workloads/controllers/daemonset/

解题步骤:
  • 可以先使用kubectl run 生成一个 YAML 文件中描述 DaemonSet
sudo kubectl run ds.kusc00201 --generator=run-pod/v1 --image=nginx -n ns-ehj --dry-run -o yaml > daeminset.yaml

生成的yaml如下:

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: ds.kusc00201
  name: ds.kusc00201
spec:
  containers:
  - image: nginx
    name: ds.kusc00201
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

显然,需要修改后才能apply:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  creationTimestamp: null
  labels:
    run: nginx
  name: ds.kusc00201
  namespace: ns-ehj
spec:
  selector:
    matchLabels:
      run: nginx
  template:
    metadata:
      labels:
        run: nginx
    spec:
      containers:
      - image: nginx
        name: nginx
        resources: {}

运行结果:


image.png

注意:

必需字段
  • 和其它所有 Kubernetes 配置一样,DaemonSet 需要 apiVersion、kind 和 metadata 字段。
Pod 模板
  • .spec 中唯一必需的字段是 .spec.template
  • 如果指定了 .spec.template.spec.nodeSelector,DaemonSet Controller 将在能够与 Node Selector 匹配的节点上创建 Pod。类似这种情况,可以指定 .spec.template.spec.affinity,然后 DaemonSet Controller 将在能够与 node Affinity 匹配的节点上创建 Pod。 如果根本就没有指定,则 DaemonSet Controller 将在所有节点上创建 Pod。
  • .spec.template是一个 [Pod 模板](https://kubernetes.io/docs/concepts/workloads/pods/pod-overview/#pod-templates)。除了它是嵌套的,而且不具有apiVersionkind` 字段,它与 Pod 具有相同的 schema。
    除了 Pod 必需字段外,在 DaemonSet 中的 Pod 模板必须指定合理的标签(查看 Pod Selector)。

相关文章

网友评论

      本文标题:备战CKA每日一题——第2天

      本文链接:https://www.haomeiwen.com/subject/wrrpdhtx.html