5.k8s 日常运维事项

k8s 运维示例:
和运维相关的日常运维事宜

手动调整pod数量:
kubectl scale 对运行在k8s 环境中的pod 数量进行扩容(增加)或缩容(减小
当前pod数量:
root@k8s-master1:~# kubectl get deployment -n linux36
NAME READY UP-TO-DATE AVAILABLE AGE
linux36-nginx-deployment 1/1 1 1 3h22m
linux36-tomcat-app1-deployment 1/1 1 1 4h
#查看命令使用帮助
# kubectl --help | grep scale
scale Set a new size for a Deployment, ReplicaSet, Replication Controller, or Job
# kubectl scale --help
#执行扩容/缩容
# kubectl scale deployment/linux36-tomcat-app1-deployment --replicas=2 -n linux36
deployment.extensions/linux36-tomcat-app1-deployment scaled
#验证手动扩容结果
root@k8s-master1:~# kubectl get deployment -n linux36
NAME READY UP-TO-DATE AVAILABLE AGE
linux36-nginx-deployment 1/1 1 1 3h23m
linux36-tomcat-app1-deployment 2/2 2 2 4h1m
查看一个yaml几个pod
root@master:/opt/k8s-data/dockerfile/web/linux37/tomcat-app2# kubectl get  deployment  -n linux37 
NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
linux37-nginx-deployment         2/2     2            2           5h29m
linux37-tomcat-app1-deployment   1/1     1            1           10h
linux37-tomcat-app2-deployment   1/1     1            1           9h

扩建4个pod

root@master:/opt/k8s-data/dockerfile/web/linux37/tomcat-app1# kubectl scale deployment linux37-tomcat-app1-deployment --replicas=4 -n linux37 deployment.extensions linux37-tomcat-app1-deployment scaled
查看4个
root@master:/opt/k8s-data/dockerfile/web/linux37/tomcat-app1# kubectl get deployment -n linux37 | grep 4
linux37-tomcat-app1-deployment   4/4     4            4           11h
查看pod信息
root@master:/opt/k8s-data/dockerfile/web/linux37/tomcat-app1# kubectl get pod -n linux37
NAME                                              READY   STATUS    RESTARTS   AGE
linux37-nginx-deployment-76c4687b54-l2n26         1/1     Running   0          121m
linux37-nginx-deployment-76c4687b54-r6mk9         1/1     Running   0          121m
linux37-tomcat-app1-deployment-798998586b-ck7g7   1/1     Running   0          2m29s
linux37-tomcat-app1-deployment-798998586b-kb8dm   1/1     Running   0          2m29s
linux37-tomcat-app1-deployment-798998586b-lz58s   1/1     Running   0          86m
linux37-tomcat-app1-deployment-798998586b-vwdfd   1/1     Running   0          2m29s
缩减pod
root@master:/opt/k8s-data/dockerfile/web/linux37/tomcat-app1# kubectl scale deployment linux37-tomcat-app1-deployment --replicas=1 -n linux37 deployment.extensions linux37-nginx-deployment scaled

动态修改资源内容kubectl edit:
用于临时修改某些配置后需要立即生效的场景

查看资源的名称
root@master:/opt/k8s-data/dockerfile/web/linux37/nginx# kubectl get deployment -n linux37
NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
linux37-nginx-deployment         1/1     1            1           20h
linux37-tomcat-app1-deployment   1/1     1            1           25h
linux37-tomcat-app2-deployment   1/1     1            1           24h


查看pod的信息
root@master:/opt/k8s-data/dockerfile/web/linux37/nginx# kubectl describe pod linux37-nginx-deployment-76c4687b54-87ctw -n linux37

root@master:~# kubectl edit deployment linux37-nginx-deployment -n linux37
 45         image: harbor.wyh.net/linux37/nginx:v2
修改镜像为v2
再次查看pod信息就变成v2了
root@master:/opt/k8s-data/dockerfile/web/linux37/nginx# kubectl describe pod linux37-nginx-deployment-86f758d6f-z9snf -n linux37 | grep v2
    Image:          harbor.wyh.net/linux37/nginx:v2
  Normal  Pulling    3m25s  kubelet, 192.168.200.206  Pulling image "harbor.wyh.net/linux37/nginx:v2"
  Normal  Pulled     3m25s  kubelet, 192.168.200.206  Successfully pulled image "harbor.wyh.net/linux37/nginx:v2"
这个修改并不会保存到yaml文件里
edit命令临时修改还可以不建议用在永久化的配置

定义node资源标签:
lable是一个键值对,创建pod的时候会查询那些node有这个标签,只会将pod创建在符合指定label值的node节点
上。

查看node信息
root@master:/opt/k8s-data/yaml/web/linux37/nginx# kubectl get node
NAME              STATUS                     ROLES    AGE     VERSION
192.168.200.197   Ready                      <none>   4d22h   v1.14.7
192.168.200.198   Ready,SchedulingDisabled   master   6d22h   v1.14.7
192.168.200.206   Ready                      node     4d21h   v1.14.7
192.168.200.207   Ready                      node     4d21h   v1.14.7

打标签
root@master:/opt/k8s-data/yaml/web/linux37/nginx# kubectl label node 192.168.200.197 project=linux37
node/192.168.200.197 labeled
查看node信息发现多了一个标签
root@master:/opt/k8s-data/yaml/web/linux37/nginx# kubectl describe node 192.168.200.197 | grep  project=linux37
                    project=linux37
查看pod都运行在那些节点上
root@master:/opt/k8s-data/yaml/web/linux37/nginx# kubectl get pod -n linux37 -o wide
NAME                                              READY   STATUS    RESTARTS   AGE   IP               NODE              NOMINATED NODE   READINESS GATES
linux37-nginx-deployment-76c4687b54-77b9k         1/1     Running   0          19m   172.31.167.107   192.168.200.206   <none>           <none>
linux37-nginx-deployment-76c4687b54-cff5p         1/1     Running   0          19m   172.31.104.180   192.168.200.207   <none>           <none>
linux37-tomcat-app1-deployment-798998586b-lz58s   1/1     Running   1          16h   172.31.104.172   192.168.200.207   <none>           <none>
linux37-tomcat-app2-deployment-f5749f98c-lcwqm    1/1     Running   1          15h   172.31.104.171   192.168.200.207   <none>           <none>

root@master:/opt/k8s-data/yaml/web/linux37/nginx# vim nginx.yaml 
 54       nodeSelector:
 55         project: linux37
添加pod节点指定放在哪个节点的标签
执行更新pod
root@master:/opt/k8s-data/yaml/web/linux37/nginx# kubectl apply -f nginx.yaml 
deployment.extensions/linux37-nginx-deployment configured
service/linux37-nginx-service unchanged
查看pod的节点在哪里node信息里
root@master:/opt/k8s-data/yaml/web/linux37/nginx# kubectl get pod -o wide
NAME                               READY   STATUS    RESTARTS   AGE   IP               NODE              NOMINATED NODE   READINESS GATES
net-test-cd766cb69-2rfpz           1/1     Running   0          72m   172.31.180.118   192.168.200.197   <none>           <none>
net-test-cd766cb69-8lk5h           1/1     Running   0          97m   172.31.104.177   192.168.200.207   <none>           <none>
net-test-cd766cb69-94zhm           1/1     Running   0          72m   172.31.180.114   192.168.200.197   <none>           <none>
net-test-cd766cb69-vgsn7           1/1     Running   0          97m   172.31.104.178   192.168.200.207   <none>           <none>
nginx-deployment-995964986-7v2rr   1/1     Running   0          97m   172.31.104.179   192.168.200.207   <none>           <none>
查看他的project的
root@master:/opt/k8s-data/yaml/web/linux37/nginx# kubectl describe node 192.168.200.206  | grep 37
                    project=linux37
删除linux37的标签
root@master:/opt/k8s-data/yaml/web/linux37/nginx# kubectl label node 192.168.200.206 project-
node/192.168.200.206 labeled
再看一下就没有标签了
root@master:/opt/k8s-data/yaml/web/linux37/nginx# kubectl describe node 192.168.200.206  | grep 37


业务镜像版本升级及回滚:
在指定的deployment中通过kubectl set image指定新版本的 镜像:tag 来实现更新代码的目的。
构建三个不同版本的nginx镜像,第一次使用v1版本,后组逐渐升级到v2与v3,测试镜像版本升级与回滚操作

升级到镜像到指定版本:
root@master:/opt/k8s-data/yaml/web/linux37/nginx# vim nginx.yaml 
 20         image: harbor.wyh.net/linux37/nginx:v1
修改为v1的版本
执行版本
root@master:/opt/k8s-data/yaml/web/linux37/nginx# kubectl apply -f nginx.yaml 

root@master:/opt/k8s-data/yaml/web/linux37/nginx# kubectl get deployment -n linux37
NAME                             READY   UP-TO-DATE   AVAILABLE   AGE
linux37-nginx-deployment         5/5     5            5           23h
linux37-tomcat-app1-deployment   1/1     1            1           37m
linux37-tomcat-app2-deployment   1/1     1            1           36m
查看现在的pod的版本
root@master:/opt/k8s-data/dockerfile/web/linux37/nginx# kubectl describe pod linux37-nginx-deployment-774844fc84-5v52d -n linux37 | grep v1
    Image:          harbor.wyh.net/linux37/nginx:v1


镜像更新命令格式为
root@master:/opt/k8s-data/yaml/web/linux37/nginx# kubectl set image deployment/linux37-nginx-deployment linux37-nginx-container=harbor.wyh.net/linux37/nginx:v2 -n linux37
查看更新后就变 成v2版本了
root@master:/opt/k8s-data/dockerfile/web/linux37/nginx# kubectl describe  pod linux37-nginx-deployment-d7d97866c-2lv5w  -n linux37 | grep v2
    Image:          harbor.wyh.net/linux37/nginx:v2
  Normal  Pulling    110s  kubelet, 192.168.200.197  Pulling image "harbor.wyh.net/linux37/nginx:v2"
回滚到上一个版本:
root@master:/opt/k8s-data/dockerfile/web/linux37/nginx# kubectl rollout undo deployment/linux37-nginx-deployment -n linux37
deployment.extensions/linux37-nginx-deployment rolled back
查看版本已经回滚到v1了
root@master:/opt/k8s-data/dockerfile/web/linux37/nginx# kubectl describe pod  linux37-nginx-deployment-774844fc84-bdc9l -n linux37 | grep v
Start Time:     Sat, 30 Nov 2019 07:08:54 +0000
    Image:          harbor.wyh.net/linux37/nginx:v1

查看历史版本
root@master:/opt/k8s-data/dockerfile/web/linux37/nginx# kubectl rollout history deployment/linux37-nginx-deployment -n linux37
deployment.extensions/linux37-nginx-deployment 
REVISION  CHANGE-CAUSE
1         <none>
2         <none>
3         <none>
回滚到指定版本
root@master:/opt/k8s-data/dockerfile/web/linux37/nginx# kubectl rollout undo deployment/linux37-nginx-deployment --to-revision=1 -n linux37
deployment.extensions/linux37-nginx-deployment rolled back

配置主机为封锁状态且不参与调度:
kubectl --help | grep cordon #警戒线
cordon Mark node as unschedulable #标记为警戒,即不参加pod调度
uncordon Mark node as schedulable #去掉警戒,即参加pod调度

查看node的信息
root@master:/opt/k8s-data/dockerfile/web/linux37/nginx# kubectl get node
NAME              STATUS                     ROLES    AGE    VERSION
192.168.200.197   Ready                      <none>   5d3h   v1.14.7
192.168.200.198   Ready,SchedulingDisabled   master   7d3h   v1.14.7
192.168.200.206   Ready                      node     5d1h   v1.14.7
192.168.200.207   Ready                      node     5d1h   v1.14.7

标记为可以在这个节点创建pod
root@master:/opt/k8s-data/dockerfile/web/linux37/nginx# kubectl uncordon 192.168.200.198
node/192.168.200.198 uncordoned

再次查看node的信息
root@master:/opt/k8s-data/dockerfile/web/linux37/nginx# kubectl get node
NAME              STATUS   ROLES    AGE    VERSION
192.168.200.197   Ready    <none>   5d3h   v1.14.7
192.168.200.198   Ready    master   7d3h   v1.14.7
192.168.200.206   Ready    node     5d1h   v1.14.7
192.168.200.207   Ready    node     5d1h   v1.14.7

设置192.168.200.198不参加调度
root@master:/opt/k8s-data/dockerfile/web/linux37/nginx# kubectl cordon 192.168.200.198
node/192.168.200.198 cordoned

root@master:/opt/k8s-data/dockerfile/web/linux37/nginx# kubectl get node
NAME              STATUS                     ROLES    AGE    VERSION
192.168.200.197   Ready                      <none>   5d3h   v1.14.7
192.168.200.198   Ready,SchedulingDisabled   master   7d3h   v1.14.7
192.168.200.206   Ready                      node     5d1h   v1.14.7
192.168.200.207   Ready                      node     5d1h   v1.14.7

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

推荐阅读更多精彩内容

  • 排错指南 - Pod 本文档介绍 Pod 的异常状态,可能原因和解决办法。 排查 Pod 异常的常用命令如下: 查...
    小孩子的童话2014阅读 6,973评论 0 2
  • Kubernetes(K8S)中文文档_Kubernetes中文社区 Kubernetes基础 在集群上规模化,带...
    任嘉平生愿阅读 401评论 0 0
  • 上周,抽空听了两场云栖大会(一场关于k8s 云原生的发展趋势,一场是关于k8s安全的话题), 这几年, 容器领域的...
    Markwei阅读 3,777评论 1 3
  • 昆明梁艳分享134天。网络初级五期。2017.09.28 今天的晨读,刘老师在读到“有扎实理论基础的督导的陪...
    诗心小鹿阅读 247评论 0 0
  • 那本书又忘记拿回来看了,那不着调的记忆,真是什么都记不住。我想写起来有一气呵成那种,但抠破脑壳的皮还是修修补补,东...
    请叫我代号光阅读 1,391评论 14 0