第二种创建pod文件的方法:无状态服务deployment

一、实验环境:

master1\node1\node2恢复到单节点集群

二、Node1\node2上传nginx-1.25.1镜像压缩文件

[root@node1 ~]# ctr -n k8s.io images import nginx-1.25.1.tar 		容器运行时导入nginx-1.25.1的镜像
unpacking docker.io/library/nginx:1.25.1 (sha256:220f06adf50c8d0dbb287301993a43e4e90721b83d4ed337780b59d51cdef48e)...done
[root@node2 ~]# ctr -n k8s.io images import nginx-1.25.1.tar	容器运行时导入nginx-1.25.1的镜像	
unpacking docker.io/library/nginx:1.25.1 (sha256:220f06adf50c8d0dbb287301993a43e4e90721b83d4ed337780b59d51cdef48e)...done

三、在master1节点上创建无状态服务的nginx,镜像版本是nginx:1.21.6

[root@master1 ~]# kubectl create deployment nginx --image=docker.io/library/nginx:1.21.6
创建无状态服务的nginx,镜像版本是nginx:1.21.6
deployment.apps/nginx created
[root@master1 ~]# kubectl get deployments.apps	查看无状态apps的信息
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
nginx   1/1     1            1           19s
[root@master1 ~]# kubectl get rs	查看副本集 replayside(无状态就会生成副本集)
NAME               DESIRED   CURRENT   READY   AGE
nginx-6d55555679   1         1         1       31s
[root@master1 ~]# kubectl get pod		查看pod信息		查看pod信息
NAME                     READY   STATUS    RESTARTS   AGE
nginx-6d55555679-qclww   1/1     Running   0          34s
[root@master1 ~]#

四、将nginx扩容,副本数为2

[root@master1 ~]# kubectl get pod -o wide			查看pod详细信息
NAME                     READY   STATUS    RESTARTS   AGE     IP             NOD                                                                                   E    NOMINATED NODE   READINESS GATES
nginx-6d55555679-qclww   1/1     Running   0          3m53s   10.244.104.3   nod                                                                                   e2   <none>           <none>
[root@master1 ~]# kubectl scale deployment nginx --replicas=2	将nginx扩容,副本数为2
deployment.apps/nginx scaled
[root@master1 ~]# kubectl get pod				查看pod信息	查看副本数,副本数为2
NAME                     READY   STATUS    RESTARTS   AGE
nginx-6d55555679-qclww   1/1     Running   0          4m49s
nginx-6d55555679-v2tzl   1/1     Running   0          10s
[root@master1 ~]# kubectl get pod				查看pod信息 -o wide	查看详细信息(分配的节点是随机的)
NAME                     READY   STATUS    RESTARTS   AGE    IP               NO                                                                                   DE    NOMINATED NODE   READINESS GATES
nginx-6d55555679-qclww   1/1     Running   0          5m4s   10.244.104.3     no                                                                                   de2   <none>           <none>
nginx-6d55555679-v2tzl   1/1     Running   0          25s    10.244.166.129   no                                                                                   de1   <none>           <none>
[root@master1 ~]#

五、创建nginx的集群IP服务,并建立端口映射,宿主机的80映射到容器的80

[root@master1 ~]# kubectl create service clusterip nginx --tcp=80:80
创建nginx的集群IP服务,并建立端口映射,宿主机的80映射到容器的80
service/nginx created				
[root@master1 ~]#
[root@master1 ~]# kubectl get svc	查看集群服务
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP   4d23h	只有k8s的集群,没有nginx的服务
nginx        ClusterIP   10.106.200.83   <none>        80/TCP    9s
[root@master1 ~]#
[root@master1 ~]# kubectl get pod -o wide查看pod详细信息
NAME                     READY   STATUS    RESTARTS   AGE     IP               N                                                                                   ODE    NOMINATED NODE   READINESS GATES
nginx-6d55555679-qclww   1/1     Running   0          8m9s    10.244.104.3     n                                                                                   ode2   <none>           <none>
nginx-6d55555679-v2tzl   1/1     Running   0          3m30s   10.244.166.129   n                                                                                   ode1   <none>           <none>
[root@master1 ~]#

六、分别进俩容器里,创建测试页面及访问集群的IP:

[root@master1 ~]# kubectl exec -it nginx-6d55555679-qclww -- bash	进入第一个容器里
root@nginx-6d55555679-qclww:/# echo "111" > /usr/share/nginx/html/index.html	创建111的测试页面
root@nginx-6d55555679-qclww:/# exit
exit
[root@master1 ~]# kubectl exec -it nginx-6d55555679-v2tzl -- bash	进入第二个容器里
root@nginx-6d55555679-v2tzl:/# echo "222" > /usr/share/nginx/html/index.html		创建222的测试页面
root@nginx-6d55555679-v2tzl:/# exit
exit
[root@master1 ~]# 
[root@master1 ~]# kubectl get svc -o wide	查看集群IP的详细信息
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE     SELECTOR
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP   4d23h   <none>
nginx        ClusterIP   10.105.134.86   <none>        80/TCP    2m28s   app=nginx
[root@master1 ~]#
[root@master1 ~]# curl 10.106.200.83			访问集群的IP
111
[root@master1 ~]# curl 10.106.200.83				访问集群的IP(轮询
222

七、查看原版本信息:nginx/1.21.6

八、升级nginx版本:

[root@master1 ~]# kubectl set image deployment/nginx nginx=docker.io/library/ngi                                                                                   nx:1.21.6 --record             将无状态的nginx镜像1.21.6打标记
Flag --record has been deprecated, --record will be removed in the future
deployment.apps/nginx image updated
[root@master1 ~]#

[root@node1 ~]# ctr -n k8s.io images ls | grep nginx  容器运行时查看nginx版本信息
docker.io/library/nginx:1.21.6                         nginx:1.21.6                                                                                                                                                                   application/vnd.docker.di                                                                                   stribution.manifest.v2+json      sha256:94b808e393739b5363decf631a746d0241083d40                                                                                   eb05f07200a6d1c0c16f54b8 139.2 MiB linux/amd64                                                                                                                                                     io.cri-containerd.image=managed                                                                                                    
docker.io/library/nginx:1.25.1                         nginx:1.25.1                                                                                                                                                                              application/vnd.docker.di                                                                                   stribution.manifest.v2+json      sha256:220f06adf50c8d0dbb287301993a43e4e90721b8                                                                                   3d4ed337780b59d51cdef48e 182.2 MiB linux/amd64                                                                                                                                                     io.cri-containerd.image=managed                                                                                                    
[root@node1 ~]#

[root@node2 ~]# ctr -n k8s.io images ls | grep nginx  容器运行时查看nginx版本信息
docker.io/library/nginx:1.21.6                          nginx:1.21.6                                                                                                                                                                application/vnd.docker.di                                                                                   stribution.manifest.v2+json      sha256:94b808e393739b5363decf631a746d0241083d40                                                                                   eb05f07200a6d1c0c16f54b8 139.2 MiB linux/amd64                                                                                                                                                     io.cri-containerd.image=managed                                                                                                    
docker.io/library/nginx:1.25.1                        nginx:1.25.1                                                                                                                                                                     application/vnd.docker.di                                                                                   stribution.manifest.v2+json      sha256:220f06adf50c8d0dbb287301993a43e4e90721b8                                                                                   3d4ed337780b59d51cdef48e 182.2 MiB linux/amd64                                                                                                                                                     io.cri-containerd.image=managed                                                                                                    
[root@node2 ~]#

九、动态查看nginx信息

[root@master1 ~]# kubectl get pod				查看pod信息 -w
NAME                     READY   STATUS    RESTARTS   AGE
nginx-6d55555679-qclww   1/1     Running   0          23m
nginx-6d55555679-v2tzl   1/1     Running   0          19m
^C[root@master1 ~]#
[root@master1 ~]# kubectl set image deployment/nginx nginx=docker.io/library/ngi                                                                                   nx:1.25.1 --record             将无状态的nginx镜像1.25.1打标记
Flag --record has been deprecated, --record will be removed in the future
deployment.apps/nginx image updated
[root@master1 ~]# kubectl get pod -w				动态查看nginx信息
NAME                     READY   STATUS    RESTARTS   AGE
nginx-76b6fcbc46-gz4hm   1/1     Running   0          16s
nginx-76b6fcbc46-j9k4s   1/1     Running   0          14s
^C[root@master1 ~]# kubectl get pod				查看pod信息
NAME                     READY   STATUS    RESTARTS   AGE
nginx-76b6fcbc46-gz4hm   1/1     Running   0          21s
nginx-76b6fcbc46-j9k4s   1/1     Running   0          19s
[root@master1 ~]# kubectl get pod -w				动态查看nginx信息
NAME                     READY   STATUS    RESTARTS   AGE
nginx-76b6fcbc46-gz4hm   1/1     Running   0          56s
nginx-76b6fcbc46-j9k4s   1/1     Running   0          54s

十、查看nginx的使用版本

[root@master1 ~]# curl 10.106.200.83/1		 #访问集群IP的错误页面
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.25.1</center>			#能查看nginx的使用版本
</body>
</html>
[root@master1 ~]#

十一、查看副本及无状态nginx的详细信息

[root@master1 ~]# kubectl get rs		查看副本
NAME               DESIRED   CURRENT   READY   AGE
nginx-6d55555679   0         0         0       42m
nginx-76b6fcbc46   2         2         2       17m
[root@master1 ~]# kubectl describe deployment.apps nginx	查看无状态nginx的详细信息
Name:                   nginx
Namespace:              default
CreationTimestamp:      Tue, 24 Jun 2025 16:04:14 +0800
Labels:                 app=nginx
Annotations:            deployment.kubernetes.io/revision: 2
                        kubernetes.io/change-cause: kubectl set image deployment                                                                                   /nginx nginx=docker.io/library/nginx:1.25.1 --record=true
Selector:               app=nginx
Replicas:               2 desired | 2 updated | 2 total | 2 available | 0 unavai                                                                                   lable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  app=nginx
  Containers:
   nginx:
    Image:         docker.io/library/nginx:1.25.1
    Port:          <none>
    Host Port:     <none>
    Environment:   <none>
    Mounts:        <none>
  Volumes:         <none>
  Node-Selectors:  <none>
  Tolerations:     <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Available      True    MinimumReplicasAvailable
  Progressing    True    NewReplicaSetAvailable
OldReplicaSets:  nginx-6d55555679 (0/0 replicas created)
NewReplicaSet:   nginx-76b6fcbc46 (2/2 replicas created)
Events:
  Type    Reason             Age   From                   Message
  ----    ------             ----  ----                   -------
  Normal  ScalingReplicaSet  43m   deployment-controller  Scaled up replica set                                                                                    nginx-6d55555679 to 1
  Normal  ScalingReplicaSet  38m   deployment-controller  Scaled up replica set                                                                                    nginx-6d55555679 to 2 from 1

Events:
  Type    Reason             Age   From                   Message
  ----    ------             ----  ----                   -------
  Normal  ScalingReplicaSet  43m   deployment-controller  Scaled up replica set                                                                                    nginx-6d55555679 to 1
  Normal  ScalingReplicaSet  38m   deployment-controller  Scaled up replica set                                                                                    nginx-6d55555679 to 2 from 1
  Normal  ScalingReplicaSet  18m   deployment-controller  Scaled up replica set                                                                                    nginx-76b6fcbc46 to 1
  Normal  ScalingReplicaSet  18m   deployment-controller  Scaled down replica se                                                                                   t nginx-6d55555679 to 1 from 2
  Normal  ScalingReplicaSet  18m   deployment-controller  Scaled up replica set                                                                                    nginx-76b6fcbc46 to 2 from 1
  Normal  ScalingReplicaSet  18m   deployment-controller  Scaled down replica se                                                                                   t nginx-6d55555679 to 0 from 1
[root@master1 ~]# kubectl get svc 	查看服务
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP   4d23h
nginx        ClusterIP   10.106.200.83   <none>        80/TCP    36m
[root@master1 ~]# curl 10.106.200.83/1
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx/1.25.1</center>
</body>
</html>
[root@master1 ~]#

十二、回滚版本:

[root@master1 ~]# kubectl rollout  history deployment nginx	查看无状态ningx回滚的历史记录
deployment.apps/nginx
REVISION  CHANGE-CAUSE
1         kubectl set image deployment/nginx nginx=docker.io/library/nginx:1.21.                                                                                   6 --record=true
2         kubectl set image deployment/nginx nginx=docker.io/library/nginx:1.25.                                                                                   1 --record=true

[root@master1 ~]# kubectl rollout undo deployment nginx --to-revision=1			将nginx无状态版本回滚到标记号1
deployment.apps/nginx rolled back
[root@master1 ~]# curl 10.106.200.83/1		访问错误测试页面
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>	又回到之前的版本1.21.6了
<hr><center>nginx/1.21.6</center>
</body>
</html>
[root@master1 ~]#

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇