栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

K8S中deployment和service案例

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

K8S中deployment和service案例

文章目录
  • 案例要求:
  • 1、案例一
    • 1 创建deployment,在还原到之前版本
  • 2、案例二:
    • 副本数扩容
  • 3、案例三
    • 多端口实例
  • 4、部署service端,在容器外进行访问

案例要求:

1、创建一个deployment副本数为2,在滚动更新镜像版本,并记录这个更新记录,最后在还原到上一个版本。
2、给这个应用扩容副本数到4。
3、创建一个pod,pod里面运行3个容器,nginx、tomcat、redis。
4、给一个pod创建service,并且可以通过Clusterip/NodePort方式访问。

1、案例一 1 创建deployment,在还原到之前版本
[root@k8s-master ~]# kubectl create deployment xin --image=nginx --dry-run=client -o yaml > xin.yaml

[root@k8s-master ~]# vim xin.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: xin
  name: xin
spec:
  replicas: 2
  selector:
    matchLabels:
      app: xin
  template:
    metadata:
      labels:
        app: xin
    spec:
      containers:
      - image: nginx:1.14
        name: nginx
[root@k8s-master ~]# kubectl get pod
NAME                   READY   STATUS    RESTARTS   AGE
xin-5958d7557f-7l4cw   1/1     Running   0          3m50s
xin-5958d7557f-9jj68   1/1     Running   0          3m18s

[root@k8s-master ~]# kubectl rollout history deployment		# 记录历史发布的版本
deployment.apps/xin 
REVISION  CHANGE-CAUSE
1         

[root@k8s-master ~]# vim xin.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: xin
  name: xin
spec:
  replicas: 2
  selector:
    matchLabels:
      app: xin
  template:
    metadata:
      labels:
        app: xin
    spec:
      containers:
      - image: nginx:1.17	# 更改nginx版本
        name: nginx

[root@k8s-master ~]# kubectl get pod

[root@k8s-master ~]# kubectl rollout history deployment
deployment.apps/xin 
REVISION  CHANGE-CAUSE
1         
2         

[root@k8s-master ~]# kubectl rollout undo deployment xin --to-revision=1
deployment.apps/xin rolled back

[root@k8s-master ~]# kubectl rollout history deployment
deployment.apps/xin 
REVISION  CHANGE-CAUSE
2         
3         
2、案例二: 副本数扩容
[root@k8s-master ~]# kubectl scale deployment xin --replicas=4		# 新增副本数,也可以直接到yaml文件中改replicas的值

[root@k8s-master ~]# kubectl get pod
NAME                  READY   STATUS    RESTARTS   AGE
xin-bf9b569b9-2slgt   1/1     Running   0          13m
xin-bf9b569b9-fqhlb   1/1     Running   0          13m
xin-bf9b569b9-m9hzd   1/1     Running   0          8s
xin-bf9b569b9-txpbl   1/1     Running   0          8s
3、案例三 多端口实例
[root@k8s-master ~]# kubectl create deployment zz --image=nginx --image=redis --image=tomcat --dry-run=client -o yaml  > zhao.yaml

[root@k8s-master ~]# vim zz.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: sz
  name: zz
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sz
  template:
    metadata:
      labels:
        app: sz
    spec:
      containers:
      - image: nginx
        name: http
      - image: tomcat
        name: web
      - image: redis
        name: db
        
[root@k8s-master ~]# kubectl apply -f zz.yaml

[root@k8s-master ~]# kubectl get pod -o wide
NAME                   READY   STATUS    RESTARTS   AGE     IP               NODE        NOMINATED NODE   READINESS GATES
xin-54f665d556-jm2pn   1/1     Running   0          3h29m   10.244.169.168   k8s-node2              
xin-54f665d556-rg6cm   1/1     Running   0          3h29m   10.244.36.97     k8s-node1              
zz-7d5b8995b8-g8s5r    3/3     Running   0          58m     10.244.36.117    k8s-node1              

[root@k8s-master ~]# kubectl exec -it -c web zz-7d5b8995b8-g8s5r -- bash	#进入apache容器中

root@zz-7d5b8995b8-g8s5r:/usr/local/tomcat# cd webapps

root@zz-7d5b8995b8-g8s5r:/usr/local/tomcat/webapps# mkdir ROOT	#创建apache发布目录

root@zz-7d5b8995b8-g8s5r:/usr/local/tomcat/webapps# cd ROOT/

root@zz-7d5b8995b8-g8s5r:/usr/local/tomcat/webapps/ROOT# echo 123 > index.html

root@zz-7d5b8995b8-g8s5r:/usr/local/tomcat/webapps/ROOT# exit

[root@k8s-master ~]# curl 10.244.36.117:8080
123

[root@k8s-master ~]# curl -I 10.244.36.117:8080		#容器内访问tomcat
HTTP/1.1 200 
Accept-Ranges: bytes
ETag: W/"4-1652434459188"
Last-Modified: Fri, 13 May 2022 09:34:19 GMT
Content-Type: text/html
Content-Length: 4
Date: Fri, 13 May 2022 09:37:03 GMT

[root@k8s-master ~]# curl -I 10.244.36.117:80	#容器内访问nginx
HTTP/1.1 200 OK
Server: nginx/1.21.5
Date: Fri, 13 May 2022 10:08:59 GMT
Content-Type: text/html
Content-Length: 615
Last-Modified: Tue, 28 Dec 2021 15:28:38 GMT
Connection: keep-alive
ETag: "61cb2d26-267"
Accept-Ranges: bytes
4、部署service端,在容器外进行访问
[root@k8s-master ~]# kubectl expose deployment zhao --port=80 --type=NodePort --dry-run=client -o yaml > zhao-service.yaml

[root@k8s-master ~]# vim zhao-service.yaml 
apiVersion: v1
kind: Service
metadata:
  labels:
    app: sz
  name: zhao
spec:
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
    nodePort: 30003
  - name: web
    port: 8080
    protocol: TCP
    targetPort: 8080
    nodePort: 30004
  - name: db
    port: 6379
    protocol: TCP
    targetPort: 6379
    nodePort: 30005
  selector:
    app: sz
  type: NodePort

[root@k8s-master ~]# kubectl get pod,service -o wide
NAME                       READY   STATUS    RESTARTS   AGE    IP               NODE        NOMINATED NODE   READINESS GATES
pod/xin-54f665d556-jm2pn   1/1     Running   0          4h9m   10.244.169.168   k8s-node2              
pod/xin-54f665d556-rg6cm   1/1     Running   0          4h9m   10.244.36.97     k8s-node1              
pod/zz-7d5b8995b8-g8s5r    3/3     Running   0          98m    10.244.36.117    k8s-node1              

NAME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                      AGE    SELECTOR
service/kubernetes   ClusterIP   10.96.0.1                443/TCP                                      2d3h   
service/zhao         NodePort    10.111.136.204           80:30003/TCP,8080:30004/TCP,6379:30005/TCP   33m    app=sz

# 使用浏览器访问:
1、任意node节点+指定nodePort端口
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/880606.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号