使用kubectl创建Daemonset?

Adi*_*tov 6 kubernetes kubectl daemonset

我参加了CKA考试,因此需要在Daemonsets中工作一段时间。由于使用kubectl进行所有操作要快得多,而不是为k8s资源创建yaml清单,因此我想知道是否可以使用创建Daemonset资源kubectl

我知道kubectl create daemonset至少目前无法使用常规创建它。并且在文档中没有对此的描述。但是也许有一种方法可以以不同的方式做到这一点?

我现在能做的最好的事情就是先创建Deployment,kubectl create deployment然后编辑它的输出清单。这里有什么选择吗?

Pra*_*ati 9

CKA 允许访问K8S 文档。因此,应该可以从那里获得不同资源的示例 YAML。是 K8S 文档中 Daemonset 的一个。

另外,不确定认证环境是否可以访问 kube-system 命名空间中的资源。如果是,则使用以下命令获取 Daemonset 的示例 yaml。

kubectl 获取 daemonsets kube-flannel-ds-amd64 -o yaml -n=kube-system > daemonset.yaml


小智 6

最快的创建方式

kubectl create deploy nginx --image=nginx --dry-run -o yaml > nginx-ds.yaml
Run Code Online (Sandbox Code Playgroud)

现在将 nginx-ds.yaml 中的 kind: Deployment 行替换为 kind: DaemonSet 并删除replicas : 1行、strategy {}status {}行。否则,它会显示某些必填字段的错误,如下所示

error: error validating "nginx-ds.yaml": error validating data: [ValidationError(DaemonSet.spec): unknown field "strategy" in io.k8s.api.apps.v1.DaemonSetSpec, ValidationError(DaemonSet.status): missing required field "currentNumberScheduled" in io.k8s.api.apps.v1.DaemonSetStatus,ValidationError(DaemonSet.status): missing required field "numberMisscheduled" in io.k8s.api.apps.v1.DaemonSetStatus, ValidationError(DaemonSet.status): missing required field "desiredNumberScheduled" in io.k8s.api.apps.v1.DaemonSetStatus, ValidationError(DaemonSet.status): missing required field "numberReady" in io.k8s.api.apps.v1.DaemonSetStatus]; if you choose to ignore these errors, turn validation off with --validate=false
Run Code Online (Sandbox Code Playgroud)


zam*_*kib 5

最快的破解方法是使用以下命令创建部署文件

kubectl create deploy nginx --image=nginx --dry-run -o yaml > nginx-ds.yaml
Run Code Online (Sandbox Code Playgroud)

现在更换线kind: Deploymentkind: DaemonSetnginx的-ds.yaml和删除行replicas: 1

但是,考虑到“ apps / v1”是集群中用于DaemonSet的api,以下命令将提供干净的daemonset清单

kubectl create deploy nginx --image=nginx --dry-run -o yaml | \
    sed '/null\|{}\|replicas/d;/status/,$d;s/Deployment/DaemonSet/g' > nginx-ds.yaml
Run Code Online (Sandbox Code Playgroud)

您有您的nginx DaemonSet。

  • 一项改进 - 您还需要从生成的部署的 yaml 中删除 **strategy: {}** 属性 (2认同)