溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

K8S的名稱空間創(chuàng)建&&版本的升級、回滾操作(回滾到指定版本)

發(fā)布時間:2020-06-07 00:06:11 來源:網(wǎng)絡(luò) 閱讀:529 作者:warrent 欄目:云計算
創(chuàng)建一個私有倉庫。
#運行一個registry容器
[root@master ~]# docker run -tid --name registry -p 5000:5000 --restart always registry:latest 
#在所有需要使用私有倉庫的的節(jié)點上進行以下配置:
[root@master ~]# vim /usr/lib/systemd/system/docker.service 
ExecStart=/usr/bin/dockerd -H unix:// --insecure-registry 192.168.20.6:5000
#修改上述配置項,指定私有倉庫的監(jiān)聽地址及端口
[root@master ~]# systemctl daemon-reload 
[root@master ~]# systemctl restart docker
1)在master節(jié)點,自定義一個鏡像,基于nginx鏡像,默認界面內(nèi)容改為:Version:v1,版本2內(nèi)容為:Version:v2.版本3內(nèi)容為:Version:v3
[root@master test]# vim Dockerfile       #編寫dockerfile文件
FROM nginx
ADD index.html /usr/share/nginx/html/
[root@master test]# echo "Version:v1" > index.html   #編輯版本1的首頁
[root@master test]# docker build -t 192.168.20.6:5000/ljz:v1 .  #制作版本1的鏡像
#制作版本2的鏡像
[root@master test]# echo "Version:v2" > index.html
[root@master test]# docker build -t 192.168.20.6:5000/ljz:v2 .
#制作版本3的鏡像
[root@master test]# echo "Version:v3" > index.html
[root@master test]# docker build -t 192.168.20.6:5000/ljz:v3 .
#將上面三個鏡像上傳至私有倉庫
[root@master test]# docker push 192.168.20.6:5000/ljz:v1
[root@master test]# docker push 192.168.20.6:5000/ljz:v2
[root@master test]# docker push 192.168.20.6:5000/ljz:v3
2)創(chuàng)建一個Namespace.接下來的所有操作都在此名稱空間之下。
[root@master test]# vim ns.yaml      #編寫yaml文件
apiVersion: v1
kind: Namespace
metadata:
  name: lvjianzhao
[root@master test]# kubectl apply -f ns.yaml     #運行yaml文件
namespace/lvjianzhao created
[root@master test]# kubectl get ns lvjianzhao     #查看創(chuàng)建的namespace。
NAME         STATUS   AGE
lvjianzhao   Active   11s

創(chuàng)建一個Deployment資源對象。鏡像版本為v1。

[root@master test]# vim lvjianzhao.yaml      #編寫yaml文件

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: lvjianzhao
  namespace: lvjianzhao
spec:
  revisionHistoryLimit: 5           #規(guī)定記錄多少個版本,這個字段通過 kubectl explain deploy.spec  命令找到revisionHistoryLimit <integer>行獲得
  replicas: 2
  template:
    metadata:
      labels:
        name: lvjianzhaoa
    spec:
      containers:
      - name: lvjianzhao
        image: 192.168.20.6:5000/ljz:v1     #鏡像版本為1
        ports:
        - containerPort: 80

[root@master test]# kubectl apply -f lvjianzhao.yaml  --record  #執(zhí)行該yaml文件,  --record表示記錄版本歷史
[root@master test]# kubectl get pod  #查看上面yaml文件運行的pod
No resources found.
#可以得出結(jié)論,如果在編寫yaml文件時,指定了歸屬于哪個namespace,
#那么執(zhí)行上面的命令是查看不到運行的pod的,而不是沒有運行的pod
[root@master test]# kubectl get pod -n lvjianzhao    #增加“-n”選項,指定名稱空間,即可看對應(yīng)的pod
NAME                         READY   STATUS    RESTARTS   AGE
lvjianzhao-865d4b6b6-2mlcj   1/1     Running   0          101s
lvjianzhao-865d4b6b6-7kbnb   1/1     Running   0          101s
[root@master test]# kubectl rollout history deployment -n lvjianzhao lvjianzhao 
#查看lvjianzhao的namespace名稱空間的名為lvjianzhao的deployment資源對象
deployment.extensions/lvjianzhao 
REVISION  CHANGE-CAUSE
1         kubectl apply --filename=lvjianzhao.yaml --record=true
#可以看到當(dāng)前只有一個版本
3)創(chuàng)建一個Service資源對象,關(guān)聯(lián)到上面的Deployment資源對象。
[root@master test]# vim ljz-svc.yaml    #創(chuàng)建service的yaml文件

apiVersion: v1
kind: Service
metadata:
  name: lvjianzhao-service
  namespace: lvjianzhao
spec:
  type: NodePort
  selector:
    name: lvjianzhaoa
  ports:
  - name: lvjianzhao-port
    port: 8080    #這是service的IP端口
    targetPort: 80     #這是pod的端口
    nodePort: 31111          #這是映射到宿主機的端口
[root@master test]# kubectl apply -f ljz-svc.yaml   #執(zhí)行yaml文件
service/lvjianzhao-service created
[root@master test]# kubectl get svc         #同理,若不指定名稱空間,是查不到對應(yīng)的service的
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   4d1h
[root@master test]# kubectl get svc -n lvjianzhao   #使用“-n”選項查看指定的名稱空間中的service
NAME                 TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
lvjianzhao-service   NodePort   10.104.119.94   <none>        8080:31111/TCP   111s

注意:創(chuàng)建的service資源對象必須和創(chuàng)建的deployment資源對象在同一個namespace中,否則無法進行關(guān)聯(lián)!?。?/strong>

現(xiàn)在客戶端就可以訪問k8s群集中的任意一個節(jié)點的31111端口訪問其pod提供的服務(wù)了,如下:
K8S的名稱空間創(chuàng)建&&版本的升級、回滾操作(回滾到指定版本)

如果需要在線修改pod提供的網(wǎng)頁文件,可以先查看到pod的name,然后直接在主節(jié)點上登錄到此pod即可,命令如下:

[root@master httpd-web]# kubectl get pod -o wide       #查看pod的name
NAME                              READY   STATUS    RESTARTS   AGE     IP           NODE     NOMINATED NODE   READINESS GATES
httpd-devploy1-6f987c9764-5g92w   1/1     Running   0          8m35s   10.244.1.5   node01   <none>           <none>
httpd-devploy1-6f987c9764-wvgft   1/1     Running   0     
[root@master httpd-web]# kubectl exec -it httpd-devploy1-6f987c9764-5g92w /bin/bash    #通過指定pod的name,進入pod
現(xiàn)在由1版本,滾動更新至2版本、再到3版本,最后回滾到指定1版本內(nèi)容。
[root@master test]# sed -i 's/ljz:v1/ljz:v2/' lvjianzhao.yaml   #更改為版本2
[root@master test]# kubectl apply -f lvjianzhao.yaml    #執(zhí)行
deployment.extensions/lvjianzhao configured
[root@master test]# curl 127.0.0.1:31111    #訪問驗證
Version:v2
[root@master test]# kubectl rollout history deployment -n lvjianzhao lvjianzhao 
#再次查看歷史版本
deployment.extensions/lvjianzhao 
REVISION  CHANGE-CAUSE
1         kubectl apply --filename=lvjianzhao.yaml --record=true
2         <none>
#現(xiàn)在是有兩個歷史版本了
#接下來再次升級并驗證
[root@master test]# sed -i 's/ljz:v2/ljz:v3/' lvjianzhao.yaml 
[root@master test]# kubectl apply -f lvjianzhao.yaml    
[root@master test]# curl 127.0.0.1:31111     #現(xiàn)在是版本3了
Version:v3
[root@master test]# kubectl rollout history deployment -n lvjianzhao lvjianzhao 
#查看歷史版本信息
deployment.extensions/lvjianzhao 
REVISION  CHANGE-CAUSE
1         kubectl apply --filename=lvjianzhao.yaml --record=true
2         <none>
3         <none>
#現(xiàn)在執(zhí)行回滾操作:
[root@master test]# kubectl rollout undo deployment -n lvjianzhao lvjianzhao --to-revision=1   
#回滾到版本1,需要指定namespace,“--to-revision”是指定回滾到哪個版本
deployment.extensions/lvjianzhao rolled back
[root@master test]# curl 127.0.0.1:31111   #驗證
Version:v1
[root@master test]# kubectl rollout history deployment -n lvjianzhao lvjianzhao 
#再次查看歷史記錄,發(fā)現(xiàn)版本1變成了版本4。
deployment.extensions/lvjianzhao 
REVISION  CHANGE-CAUSE
2         <none>
3         <none>
4         kubectl apply --filename=lvjianzhao.yaml --record=true
向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI