在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

如何使用DaemonSet控制器

120次阅读
没有评论

共计 4057 个字符,预计需要花费 11 分钟才能阅读完成。

这期内容当中丸趣 TV 小编将会给大家带来有关如何使用 DaemonSet 控制器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

我们通过几个简单的例子来快速体验 DaemonSet 控制器。

环境准备

我们使用 Kind 工具来创建一个包含三个节点的集群,使用的配置如下所示:

[root@ecs-d8b6 book]# cat config_kind.yaml 
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
- role: worker

然后,创建一 个 v1.18.0 版本的 Kubernetes 集群:

[root@ecs-d8b6 book]# kind create cluster --config config_kind.yaml --image=kindest/node:v1.18.0
Creating cluster  kind  ...
 ? Ensuring node image (kindest/node:v1.18.0) ???? 
 ? Preparing nodes ???? ???? ???? ???? 
 ? Writing configuration ???? 
 ? Starting control-plane ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 
 ? Installing CNI ???? 
 ? Installing StorageClass ???? 
 ? Joining worker nodes ???? 
Set kubectl context to  kind-kind 
You can now use your cluster with:
kubectl cluster-info --context kind-kind

集群创建完成后,检查各节点是否已正常工作:

[root@ecs-d8b6 book]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kind-control-plane Ready master 3m6s v1.18.0
kind-worker Ready  none  2m30s v1.18.0
kind-worker2 Ready  none  2m31s v1.18.0
kind-worker3 Ready  none  2m30s v1.18.0

可以看到所有节点都已处于 Ready 状态,接下来我们就创建一个 DaemonSet 对象,它可以保证在每个工作节点上创建一个 Pod 副本。

创建

首先我们先将以下配置保存到名为 daemonset.yaml 的文件中。

[root@ecs-d8b6 manifests]# cat daemonset.yaml 
apiVersion: apps/v1
kind: DaemonSet
metadata:
 name: nginx-daemonset
 labels:
 app: nginx
spec:
 selector:
 matchLabels:
 app: nginx
 template:
 metadata:
 labels:
 app: nginx
 spec:
 containers:
 - name: nginx
 image: nginx:1.19.0

该份配置将创建一个 DaemonSet 对象,然后 DaemonSet 控制器会根据该对象信息分别在每个节点上创建一个 Pod 副本。

接下来使用 kubectl create 命令将该配置提次给 kube-apiserver,如下所示:

[root@ecs-d8b6 manifests]# kubectl create -f daemonset.yaml 
daemonset.apps/nginx-daemonset created

查看

首先查看刚刚创建的 DaemonSet 对象:

[root@ecs-d8b6 manifests]# kubectl get daemonset 
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
nginx-daemonset 3 3 3 3 3  none  5m6s

命令行输出中各字段含义如下:

NAME: DaemonSet 对象名称,同配置中的 metadata.name;

DESIRED:需求副本个数,由于没有刻意筛选节点,所以副本个数等同于节点个数;

CURRENT:当前已创建的副本个数;

READY:处于 Ready 状态的副本个数;

UP-TO-DATE:已按最新 Pod 模版创建的 Pod 个数;

AVAILABLE:可用的副本个数;

NODE SELECTOR:节点选择器,本例中我们没有选择,值为空;

AGE:创建至今经历的时间。

上面的字段中,除了 NODE SELECTOR 以外,我们已在前面的章节中介绍过。其实 Node Selector 并不是 DaemonSet 对象特有的配置,它是 Pod 模版中用于为 Pod 匹配节点的配置,DaemonSet 控制器使用该 Node Selector 来筛选需要创建副本的节点,如果没有指定,则默认选择全部节点。

接着,查看 DaemonSet 控制器所创建的 Pod 副本信息:

[root@ecs-d8b6 manifests]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-daemonset-78dbc 1/1 Running 0 5m13s 10.244.3.2 kind-worker3  none   none 
nginx-daemonset-gmpdg 1/1 Running 0 5m13s 10.244.1.2 kind-worker2  none   none 
nginx-daemonset-l6wn4 1/1 Running 0 5m13s 10.244.2.2 kind-worker  none   none

可以看到,每个节点上均创建了一个副本,符合预期。

更新

接下来我们试图调整 Pod 部署策略,我们只希望 Pod 运行在名为 kind-worker 的节点上,这样我们只需要配置 DaemonSet 对象的 spec.template.spec.nodeSelector 来选择节点即可。

在 kind-worker 的节点中存在一个标识节点的 label:

kubernetes.io/hostname: kind-worker

所以 DaemonSet 对象的 spec.template.spec.nodeSelector 配置如下:

apiVersion: apps/v1
kind: DaemonSet
metadata:
 ...
spec:
 ...
 template:
 ...
 spec:
 ...
 nodeSelector:
 kubernetes.io/hostname: kind-worker

使用 kubectl edit 命令修改配置,然后再次观察 DaemonSet 对象和 Pod 副本:

[root@ecs-d8b6 manifests]# kubectl get daemonsets
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
nginx-daemonset 1 1 1 1 1 kubernetes.io/hostname=kind-worker 37m
[root@ecs-d8b6 manifests]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-daemonset-66gk2 1/1 Running 0 10s 10.244.2.3 kind-worker  none   none

可以发现 DaemonSet 状态中,NODE SELECTOR 正确地体现了我们的修改,而且需求的 Pod 副本数也变成了 1 个,符合预期。原来运行的 3 个 Pod 副本减少到 1 个,而且只在我们选定的节点上运行。

删除

像其他 Pod 控制器一样,当删除 DaemonSet 对象时,其所管理的 Pod 默认也会被删除,操作如下所示:

[root@ecs-d8b6 ~]# kubectl delete daemonsets nginx-daemonset 
daemonset.apps  nginx-daemonset  deleted
[root@ecs-d8b6 ~]# kubectl get pods 
No resources found in default namespace.

上述就是丸趣 TV 小编为大家分享的如何使用 DaemonSet 控制器了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-17发表,共计4057字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 青青草原综合久久大伊人精品 | 午夜视频福利在线观看 | 久久久久国产精品无码免费看 | 99久久国产综合精品五月天喷水 | 亚洲欧美精品天堂久久综合一区 | 国产一区视频在线播放 | 久久国产这里只有精品 | 国产美女精品视频线免费播放软件 | 亚洲天堂一区二区三区 | 91高清在线成人免费观看 | 国产精品亚洲欧美日韩一区在线 | 国产精品入口免费视频 | 成人观看天堂在线影片 | 2021成人国产精品 | 97精品国产91久久久久久久 | 日韩欧美成人免费观看 | 真人一进一出120秒试看 | 久久99国产精品视频 | 日日摸夜添夜夜夜添高潮 | 久久精品中文字幕大胸 | 亚洲最新在线视频 | 亚洲产在线精品第一站不卡 | 一级毛片免费的 | 自拍偷拍第3页 | 免费中文熟妇在线影片 | 亚洲欧洲精品一区二区三区 | 精品无码久久久久久久久久 | 4hu四虎永久免在线视看 | 日韩欧美精品在线观看 | 色老板精品视频在线观看 | 精品成人av一区二区三区 | 性午夜影院 | 午夜裸体性播放 | 尤物在线观看精品国产福利片 | 一区二区三区免费电影 | 中国精品一级毛片免费播放 | 欧美亚洲欧美日韩中文二区 | 久久亚洲国产欧洲精品一 | 国内精品久久久久激情影院 | 男人天堂伊人网 | 精品400部自拍视频在线播放 |