我参加了CKA考试,并且在那里需要与Daemonsets合作一段时间。由于用kubectl进行所有操作要比为k8s资源创建yaml清单要快得多,所以我想知道是否可以使用kubectl
创建Daemonset资源。
我知道,至少目前无法使用常规kubectl create daemonset
创建它。并且在文档中没有对此的描述。但是也许有一种方法可以以不同的方式做到这一点?
我现在能做的最好的事情就是先创建kubectl create deployment
之类的Deployment,然后编辑它的输出清单。这里有什么选择吗?
答案 0 :(得分:0)
没有使用kubectl
创建DaemonSet的选项。但是,您仍然可以为DaemonSet准备具有基本配置的Yaml文件,例如daemon-set-basic.yaml
,然后使用kubectl create -f daemon-set-basic.yaml
您可以使用kubectl edit daemonset <name-of-the-daemon-set>
编辑新的DaemonSet。或修改Yaml文件并通过kubectl apply -f daemon-set-basic.yaml
应用更改。请注意,如果要更新配置修改文件并使用apply
命令,最好在创建DaemonSet时使用apply
而不是create
。
这是一个简单的DaemonSet的示例:
kind: DaemonSet
metadata:
name: fluentd-elasticsearch
labels:
k8s-app: fluentd-logging
spec:
selector:
matchLabels:
name: fluentd-elasticsearch
template:
metadata:
labels:
name: fluentd-elasticsearch
spec:
containers:
- name: fluentd-elasticsearch
image: k8s.gcr.io/fluentd-elasticsearch:1.20
答案 1 :(得分:0)
CKA允许访问K8S documentation。因此,应该有可能从那里获得针对不同资源的样本YAML。 Here是K8S文档中用于Daemonset的版本。
此外,不确定认证环境是否可以访问kube-system命名空间中的资源。如果是,则使用以下命令获取Daemonset的示例yaml。
kubectl获取daemonsets kube-flannel-ds-amd64 -o yaml -n = kube-system> daemonset.yaml
答案 2 :(得分:0)
不可能。至少对于Kubernetes 1.12。唯一的选择是获取一个示例Daemonset yaml文件,然后从那里开始。
答案 3 :(得分:0)
最快的黑客是使用
创建部署文件kubectl create deploy nginx --image=nginx --dry-run -o yaml > nginx-ds.yaml
现在用 nginx-ds.yaml 中的kind: Deployment
替换行kind: DaemonSet
,并删除行replicas: 1
您拥有nginx DaemonSet。
答案 4 :(得分:0)
您可以利用Kubernetes架构从现有集群中获取 DaemonSet 的定义。看一下kube-proxy
,它是在群集中每个节点上运行的网络组件。
kube-proxy
部署为 DaemonSet ,因此您可以使用以下命令提取其定义。
$ kubectl get ds kube-proxy -n kube-system -o yaml > kube-proxy.ds.yaml
警告!
通过从kube-proxy
中提取 DaemonSet 的定义,请注意:
extensions/v1beta1
更改为apps/v1
答案 5 :(得分:0)
使用命令部署来创建和修改它,可以非常快速地创建守护程序集。 下面是创建守护程序集的一行命令
kubectl create deployment elasticsearch --namespace=kube-system --image=k8s.gcr.io/fluentd-elasticsearch:1.20 --dry-run -o yaml | grep -v "creationTimestamp\|status" | awk '{gsub(/Deployment/, "DaemonSet"); print }'
答案 6 :(得分:0)
我通过以下命令使用它:
kubectl创建部署
编辑种类并替换DaemonSet,将副本和策略字段删除。
kubectl apply -f file.txt
答案 7 :(得分:0)
最快的创建方式
kubectl创建部署nginx --image = nginx --dry-run -o yaml> nginx-ds.yaml
现在替换行类型:nginx-ds.yaml中的行部署:DaemonSet并删除行副本: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
答案 8 :(得分:0)
在 CKA 考试期间,您可以访问 Kubernetes Documentation for DaemonSets。您可以使用该链接并获取 DaemonSet yaml 文件的示例。但是,您可以使用您提到的方式,将部署规范更改为 DaemonSet 规范。您需要将 kind 更改为 Daemonset,删除 strategy、replicas 和 status 字段。那就行了。