2022-03-04 day98 kubernetes deamonset deployment

第1章 ReplicaSet控制器
1.ReplicaSet作用
可以创建多个POD的副本
始终保持POD副本数满足用户期望的数量在运行

2.ReplicaSet资源配置清单

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginx-rs
  labels:
    app: nginx-rs
spec:
  replicas: 2
  selector:                                  #选择
    matchLabels:                        #匹配pod的标签
      app: nginx                           #pod的标签
  template:                                 #模板,按照以下模板创建pod
    metadata:
      name: nginx-pod
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.0
        imagePullPolicy: IfNotPresent
        ports:
        - name: http                            #给port起一个名字
          containerPort: 80                 #容器的80端口暴露出来
image.png
image.png
image.png

他会把他分配到不同的节点

image.png

pod命名都是在元数据命名后面随机添加名称用来区别

image.png
image.png

3.扩容和收缩

命令行

scale 是改变的意思
replicas 复制,副本的意思
kubectl scale rs rs资源名称 --replicas=4
kubectl scale rs nginx-rs --replicas=4

image.png

或者修改配置清单

修改配置清单

vim nginx-rs.yml
kubectl apply -f nginx-rs.yml

image.png
image.png

4.删除RS

命令行删除

kubectl delete rs nginx-rs

image.png

删除资源配置清单

kubectl delete -f nginx-rs.yml

image.png
image.png

rs也是一个资源类型,跟pod一样也可以使用kubectl get rs rs名


image.png

现在是nginx 1.14.0版本
查看pod详细信息 kubectl describe pod


image.png

修改nginx-rs.yml 资源配置清单nginx版本为1.16.0


image.png

重新执行资源配置清单
还是nginx:1.14.0版本


image.png

只有删除了所有pod重新执行,才会更新版本


image.png
image.png

查看pod标签
kubectl get pod --show-labels

修改pod标签
去掉标签
kubectl label pod nginx-rs-4xbtt app-
修改标签

kubectl label pod nginx-rs-4xbtt app=xxx

image.png

注意:修改pod标签,要先把标签去掉载删除,再添加标签

image.png

注意:pod标签名修改后,rs就不认识pod了,它就会自动创建一个pod。rs都是通过标签名来识别pod

image.png

deployment

1.deployment和RS区别
RS只负责创建和持续保持相应副本数量的POD在运行,但是不能动态更新POD版本
Deployment替你创建RS,RS再创建相应副本数的POD

2.deployment资源配置

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-dp
  labels:
    app: nginx-dp
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      name: nginx-pod
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.0
        imagePullPolicy: IfNotPresent
        ports:
        - name: http
          containerPort: 80
image.png

注意:现在又6个pod,但是不会冲突,每个人找的pod标签不一样

先删除以前的rs创建的pod

image.png

3.通过查看日志观察Deployment升级POD过程

NAME READY STATUS RESTARTS AGE

正在运行的旧版本的POD

nginx-dp-6c8996fdc9-7smdf 1/1 Running 0 13m
nginx-dp-6c8996fdc9-kqdw6 1/1 Running 0 14m

先查看运行pod的nginx版本
kubectl describe pod


image.png

vim 修改nignx-dp.yml资源配置
修改nginx版本为1.14.0


image.png

运行成功第一个新版本的POD

nginx-dp-57559d66df-pkwsw 0/1 Pending 0 0s
nginx-dp-57559d66df-pkwsw 0/1 Pending 0 0s
nginx-dp-57559d66df-pkwsw 0/1 ContainerCreating 0 0s
nginx-dp-57559d66df-pkwsw 1/1 Running 0 1s

删除一个旧的POD

nginx-dp-6c8996fdc9-7smdf 1/1 Terminating 0 14m

运行成功第二个新版本的POD

nginx-dp-57559d66df-r22c2 0/1 Pending 0 0s
nginx-dp-57559d66df-r22c2 0/1 Pending 0 0s
nginx-dp-57559d66df-r22c2 0/1 ContainerCreating 0 1s
nginx-dp-57559d66df-r22c2 1/1 Running 0 1s

删除二个旧的POD

nginx-dp-6c8996fdc9-7smdf 0/1 Terminating 0 14m
nginx-dp-6c8996fdc9-kqdw6 1/1 Terminating 0 14m

image.png
image.png

4.更新镜像版本方法

更改资源配置清单

vim nginx-dp.yaml
kubectl apply -f nginx-dp.yaml

image.png

使用命令更新

kubectl set image deployment nginx-dp nginx=nginx:1.14.0
kubectl set image -f nginx-dp.yaml nginx=nginx:1.16.0

image.png
image.png

时时监控pod状态


image.png
image.png

更新nginx:1.16.0版本


image.png
image.png

5.查看历史版本

默认查看历史版本是没有说明信息的

kubectl rollout history deployment nginx-dp

image.png

注意:使用deployment创建pod都要创建一个rs 控制器,相当于历史版本

可以在更新命令后面添加--record来记录本次更新的命令

record记录
kubectl apply -f nginx-dp.yaml --record

image.png

kubectl set image -f nginx-dp.yaml nginx=1.16.0 --record


image.png

kubectl set image deployment nginx-dp nginx=1.16.0 --record


image.png

查看指定版本的信息

kubectl rollout history deployment nginx-dp --revision=1
kubectl rollout history deployment nginx-dp --revision=3

image.png
image.png

6.回滚到上一个版本
kubectl rollout undo deployment nginx-dp

image.png

7.回滚到指定版本
kubectl rollout undo deployment nginx-dp --to-revision=2

image.png

8.扩容和缩小
跟rs控制器是一样的
1.vim修改资源配置清单


image.png
image.png

2.使用命令扩容收缩
收缩
kubectl scale deployment nginx-dp --replicas=2

image.png

扩容
kubectl scale deployment nginx-dp --replicas=4


image.png

daemonset

1.DaemonSet作用
1.每个节点运行1个POD

  1. pod数量由node节点数量控制

2.DaemonSet应用场景
在每个节点上运行集群守护进程
在每个节点上运行日志收集守护进程
在每个节点上运行监控守护进程

3.资源配置清单

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: filebeat-ds
  labels:
    app: filebeat-ds
spec:
  selector:
    matchLabels:
      app: filebeat 
  template:
    metadata:
      name: filebeat
      labels:
        app: filebeat 
    spec:
      containers:
      - name: filebeat 
        image: nginx:1.16.0
        imagePullPolicy: IfNotPresent
        ports:
        - name: http
          containerPort: 80
image.png

首先删除所有的节点pod运行

image.png
image.png

创建pod
kubectl apply -f nginx-ds.yml

image.png

5.选择特定节点运行
kubectl label nodes node1 disktype=SATA
kubectl label nodes node2 disktype=ssd

image.png
---------------------------------------
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: filebeat-ds
  labels:
    app: filebeat-ds
spec:
  selector:
    matchLabels:
      app: filebeat 
  template:
    metadata:
      name: filebeat
      labels:
        app: filebeat 
    spec:
      nodeSelector: 
        disktype: SATA 
      containers:
      - name: filebeat 
        image: nginx:1.16.0
        imagePullPolicy: IfNotPresent
        ports:
        - name: http
          containerPort: 80
image.png

image.png

image.png

查询运行在哪个节点


image.png
image.png

4.问题记录:
报错内容: 重置node节点后,POD在节点创建不了

Warning  FailedCreatePodSandBox  39s (x4 over 42s)   kubelet            (combined from similar events): Failed to create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "fdb7453e4026417f56e9a09f01d68225bd2ecc65136f418aeef38496cc0e4afc" network for pod "filebeat-ds-9txt9": networkPlugin cni failed to set up pod "filebeat-ds-9txt9_default" network: failed to set bridge addr: "cni0" already has an IP address different from 10.2.3.1/24

问题原因:
重置节点的时候,flannel文件未清理,导出创建的cni0和flannel地址不一样
[root@node2 ~]# cat /run/flannel/subnet.env
FLANNEL_NETWORK=10.2.0.0/16
FLANNEL_SUBNET=10.2.3.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=true

解决: 删除cni0网卡,让他重新创建,重建的时候会去读flannel环境变量文件
ifconfig cni0 down
ip link delete cni0

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,277评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,777评论 1 298
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,946评论 0 245
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,271评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,636评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,767评论 1 221
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,989评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,733评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,457评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,674评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,155评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,518评论 3 258
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,160评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,114评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,898评论 0 198
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,822评论 2 280
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,705评论 2 273

推荐阅读更多精彩内容