Pod控制器DaemonSet
DaemonSet控制器简述:DaemonSet在整个集群的每一个节点上运行指定pod的一个副本并且只能是一个副本,或者是在集群中某些符合选择器的节点上运行一个指定的pod副本,用于实现系统级的管理功能,可以把节点上的某个目录作为存储卷关联到pod中,让pod实现某些管理功能一:创建一个DaemonSet实例[root@k8s-master manifests]# vim ds-demo.yaml
·
DaemonSet控制器简述:
DaemonSet在整个集群的每一个节点上运行指定pod的一个副本并且只能是一个副本,或者是在集群中某些符合选择器的节点上运行一个指定的pod副本,用于实现系统级的管理功能,可以把节点上的某个目录作为存储卷关联到pod中,让pod实现某些管理功能
一:创建一个DaemonSet实例
[root@k8s-master manifests]# vim ds-demo.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: filebeat-ds
namespace: default
spec:
selector:
matchLabels:
app: filebeat
release: stable
template:
metadata:
labels:
app: filebeat
release: stable
spec:
containers:
- name: filebeat
image: ikubernetes/filebeat:5.6.5-alpine
env:
- name: REDIS_HOST
value: redis.default.svc.cluster.local
- name: REDIS_LOG_LEVEL
value: info
[root@k8s-master manifests]# kubectl apply -f ds-demo.yaml 声明一个yaml文件。
[root@k8s-master manifests]# kubectl get ds 查看daemonset创建
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
filebeat-ds 2 2 2 2 2 <none> 6d19h
[root@k8s-master manifests]# kubectl get pods -l app=filebeat -o wide 这里可以看出一个节点只运行一个pod副本。
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
filebeat-ds-75zx9 1/1 Running 0 6d19h 10.244.1.31 k8s-node1 <none> <none>
filebeat-ds-8tcn7 1/1 Running 0 6d19h 10.244.2.17 k8s-node2 <none> <none>
[root@k8s-master manifests]# kubectl explain ds.spec.updateStrategy 查看daemonSet的更新策略
支持两种更新策略:RollingUpdate(滚动更新), OnDelete(表示一删除就更新)
KIND: DaemonSet
VERSION: apps/v1
RESOURCE: updateStrategy <Object>
DESCRIPTION:
An update strategy to replace existing DaemonSet pods with new pods.
DaemonSetUpdateStrategy is a struct used to control the update strategy for
a DaemonSet.
FIELDS:
rollingUpdate <Object>
Rolling update config params. Present only if type = "RollingUpdate".
type <string>
Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default is
RollingUpdate.
[root@k8s-master manifests]#
二:修改daemonset控制器镜像版本,进行版本更新
[root@k8s-master manifests]# kubectl set image daemonSet filebeat-ds filebeat=ikubernetes/filebeat:5.6.6-alpine
daemonset.apps/filebeat-ds image updated
[root@k8s-master manifests]#
[root@k8s-master manifests]# kubectl get pods -l app=filebeat -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
filebeat-ds-75zx9 1/1 Running 0 6d19h 10.244.1.31 k8s-node1 <none> <none>
filebeat-ds-dgk75 0/1 ContainerCreating 0 20s <none> k8s-node2 <none> <none>
[root@k8s-master manifests]# kubectl get ds -o wide 查看到镜像已经变动到5.6.6版本了
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE CONTAINERS IMAGES SELECTOR
filebeat-ds 2 2 1 2 1 <none> 6d19h filebeat ikubernetes/filebeat:5.6.6-alpine app=filebeat,release=stable
[root@k8s-master manifests]# kubectl rollout history daemonset 查看daemonset的历史版本
daemonset.apps/filebeat-ds
REVISION CHANGE-CAUSE
1 <none>
2 <none>
[root@k8s-master manifests]# kubectl rollout undo daemonset --to-revision=1 让镜像版本重新回滚到v1版,回滚只回滚到上一个版本。
daemonset.apps/filebeat-ds rolled back
[root@k8s-master manifests]# kubectl rollout history daemonset 当回滚到v1版在查看历史版本变成2,3。
daemonset.apps/filebeat-ds
REVISION CHANGE-CAUSE
2 <none>
3 <none>
[root@k8s-master manifests]# kubectl explain pod.spec
hostNetwork:pod可以直接使用主机的名称空间,那么当我们使用Daemonset控制器来创建pod时,可以指明让pod共享主机的网络名称空间,因为daemonset状态是一个节点只运行一个pod副本。
更多推荐
已为社区贡献5条内容
所有评论(0)