k8s資源對象的升級、回滾、擴容、縮容

1、資源建立的方式之一,命令的方式建立資源,理解命令運行以後的動做,經過查看資源的方式,總結Pod名稱的由來。

當咱們執行建立資源的命令後,deployment這個控制器會經過replicaset控制器去管理pod,下面經過一個實例來分析,當咱們執行建立資源的命令後,k8s都作了些什麼(經過其NAME便可發現規律)?html

運行一個deployment

[root@master ~]# kubectl run test01 --image=nginx:latest --replicas=2
#運行一個nginx容器,指定副本數量爲2個
[root@master ~]# kubectl get deployments.    #查看deployment控制器
NAME     READY   UP-TO-DATE   AVAILABLE   AGE
test01   2/2     2            2           48s
#能夠看到deployment的name是咱們指定的test01
[root@master ~]# kubectl get replicasets.   #而後查看replicasets這個控制器
#注:replicasets能夠簡寫爲「rs」
NAME                DESIRED   CURRENT   READY   AGE
test01-799bb6cd4d   2         2         2       119s
#能夠看到replicasets的NAME就是在deployment的NAME後面追加了一串ID號
[root@master ~]# kubectl get pod      #查看pod的name
NAME                      READY   STATUS    RESTARTS   AGE
test01-799bb6cd4d-d88wd   1/1     Running   0          3m18s
test01-799bb6cd4d-x8wpm   1/1     Running   0          3m18s
#能夠看到該pod的NAME就是在上面replicasets的後面又追加了一段ID

同時,能夠查看每個資源對象的詳細信息,來驗證上面的說法,以下:node

[root@master ~]# kubectl describe deployments test01   #查看test01的詳細信息

返回的信息以下,能夠看到其生成了一個新的replicasets控制器,以下:
k8s資源對象的升級、回滾、擴容、縮容nginx

那麼,如今查看其replicasets詳細信息,以下:web

k8s資源對象的升級、回滾、擴容、縮容

2、若是想要client訪問部署的服務,須要怎麼作?關鍵點在哪裏?

若是須要client來訪問k8s部署的服務,那麼須要建立一個service資源對象,而且其類型必須是NodePort,客戶端經過訪問service這個資源對象映射的端口,與k8s集羣中的proxy進行聯繫,以便訪問到部署的服務。docker

實現過程以下:

[root@master ~]# kubectl run test02 --image=nginx:latest --port=80 --replicas=2
#基於nginx鏡像建立deployment資源對象,映射容器的80端口到宿主機
[root@master ~]# kubectl expose deployment test02 --name=web01 --port=80 --type=NodePort
#建立一個service,將部署的test02的80端口映射出來
[root@master ~]# kubectl get svc web01    #查看建立的web01這個service的信息
NAME    TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
web01   NodePort   10.103.223.105   <none>        80:30230/TCP   86s
#能夠看到將部署的服務端口映射到了宿主機的30230,

客戶端訪問k8s羣集中的任意一個節點的30230端口,均可以訪問到服務的首頁,以下:
k8s資源對象的升級、回滾、擴容、縮容vim

3、搭建registry倉庫,。基於nginx自定義鏡像,將默認訪問界面更改成:hello k8s。此爲1.10版本。並基於此鏡像運行一個Deployment資源對象,replicas數量爲4個。

#搭建registry倉庫,並在羣集中的節點指定到私有倉庫
[root@master ~]# docker run -tid --name registry -p 5000:5000 --restart always registry:latest 
[root@master ~]# vim /usr/lib/systemd/system/docker.service    #編輯配置文件
ExecStart=/usr/bin/dockerd -H unix:// --insecure-registry 192.168.20.6:5000
#將修改後的配置文件發送到k8s羣集中的其餘節點
[root@master ~]# scp /usr/lib/systemd/system/docker.service root@node01:/usr/lib/systemd/system/
[root@master ~]# scp /usr/lib/systemd/system/docker.service root@node02:/usr/lib/systemd/system/
#全部更改了docker配置文件的節點都須要進行如下操做,以便更改生效
[root@master ~]# systemctl daemon-reload 
[root@master ~]# systemctl restart docker
#製做自定義鏡像
[root@master ~]# vim Dockerfile
FROM nginx:latest
ADD index.html /usr/share/nginx/html/
[root@master ~]# echo "hello k8s" > index.html
[root@master ~]# docker build -t 192.168.20.6:5000/nginx:1.10 .
[root@master ~]# docker push 192.168.20.6:5000/nginx:1.10    #上傳至私有倉庫
#基於自定義鏡像運行一個Deployment資源對象,replicas數量爲4個。
[root@master ~]# kubectl run test03 --image=192.168.20.6:5000/nginx:1.10 --port=80 --replicas=4
[root@master ~]# kubectl get pod -o wide | grep test03 | awk '{print $6}'   #查看四個副本的IP地址
10.244.2.20
10.244.1.18
10.244.1.19
10.244.2.21
#接下來在k8s羣集內部訪問該上述四個任意IP,便可看到其提供的服務,以下:
#訪問測試
[root@master ~]# curl 10.244.2.21 
hello k8s
[root@master ~]# curl 10.244.2.20
hello k8s

4、將上述Deployment資源對象,進行更新、擴容操做,replicas數量更新爲6個.鏡像仍爲自定義鏡像,且默認訪問界面更改成:Hello update.

#更新鏡像並上傳至私有倉庫
[root@master ~]# echo "Hello update" > index.html 
[root@master ~]# docker build -t 192.168.20.6:5000/nginx:2.20 .
[root@master ~]# docker push 192.168.20.6:5000/nginx:2.20 
#更新資源對象,進行擴容
[root@master ~]# kubectl set image deployment test03 test03=192.168.20.6:5000/nginx:2.20 && kubectl scale deployment test03 --replicas=6
#查看pod的IP地址
[root@master ~]# kubectl get pod -o wide | grep test03 | awk '{print $6}'
10.244.2.24
10.244.2.22
10.244.1.21
10.244.2.23
10.244.1.22
10.244.1.20
#訪問測試
[root@master ~]# curl 10.244.1.20
Hello update
[root@master ~]# curl 10.244.1.22
Hello update

5、對此Deployment資源對象進行回滾操做,查看驗證最後版本的訪問界面內容和replicas數量。

[root@master ~]# kubectl rollout undo deployment test03   #執行回滾操做
[root@master ~]# kubectl get pod -o wide | grep test03 | wc -l
#查看replicas的數量仍是6個
6

#訪問測試
[root@master ~]# kubectl get pod -o wide | grep test03 | awk '{print $6}'
10.244.1.23
10.244.2.27
10.244.1.24
10.244.1.25
10.244.2.26
10.244.2.25
[root@master ~]# curl 10.244.2.25
hello k8s
[root@master ~]# curl 10.244.2.26
hello k8s

———————— 本文至此結束,感謝閱讀 ————————curl

相關文章
相關標籤/搜索