Controller-Deployment
1、什么是controller 2、 pod和controller关系 3、Deployment控制器应用场景 3.1 部署时yaml文件书写 3.2 实际部署应用 3.3 升级回滚
3.4 弹性伸缩
1、什么是controller
2、 pod和controller关系
pod是通过Controller实现应用的运维,比如伸缩、滚动升级等 pod和Controller之间通过label建立关系。通过下图进行深刻理解
3、Deployment控制器应用场景
一般部署无状态应用 管理Pod和ReplicaSet 部署,滚动升级等功能 应用场景:web服务、微服务
3.1 部署时yaml文件书写
[ root@master example]
[ root@master example]
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: web
name: web
spec:
replicas: 1
selector:
matchLabels:
app: web
strategy: { }
template:
metadata:
creationTimestamp: null
labels:
app: web
spec:
containers:
- image: nginx
name: nginx
resources: { }
status: { }
3.2 实际部署应用
[ root@master example]
[ root@master example]
[ root@master example]
[ root@master example]
[ root@master example]
apiVersion: v1
kind: Service
metadata:
creationTimestamp: "2022-05-05T12:57:40Z"
labels:
app: web
managedFields:
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:labels:
.: { }
f:app: { }
f:spec:
f:externalTrafficPolicy: { }
f:ports:
.: { }
k:{ "port" :80,"protocol" : "TCP" } :
.: { }
f:port: { }
f:protocol: { }
f:targetPort: { }
f:selector:
.: { }
f:app: { }
f:sessionAffinity: { }
f:type: { }
manager: kubectl-expose
operation: Update
time: "2022-05-05T12:57:40Z"
name: webexpose
namespace: default
resourceVersion: "184540"
uid: b79e14cb-2b1b-44c1-b626-f4903786fb8a
spec:
clusterIP: 10.103 .24.195
clusterIPs:
- 10.103 .24.195
externalTrafficPolicy: Cluster
ports:
- nodePort: 30605
port: 80
protocol: TCP
targetPort: 80
selector:
app: web
sessionAffinity: None
type: NodePort
status:
loadBalancer: { }
[ root@master example]
NAME READY STATUS RESTARTS AGE
pod/mypod 1 /1 Running 0 10h
pod/nginx 1 /1 Running 1 27h
pod/web-96d5df5c8-kkmsz 1 /1 Running 0 10m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT( S) AGE
service/kubernetes ClusterIP 10.96 .0.1 < none> 443 /TCP 57d
service/webexpose NodePort 10.103 .24.195 < none> 80 :30605/TCP 21s
3.3 升级回滚
3.3.1 升级
[ root@master example]
[ root@master example]
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: web
name: web
spec:
replicas: 2
selector:
matchLabels:
app: web
strategy: { }
template:
metadata:
creationTimestamp: null
labels:
app: web
spec:
containers:
- image: nginx:1.14
name: nginx
resources: { }
status: { }
[ root@master example]
deployment.apps/web created
[ root@master example]
NAME READY STATUS RESTARTS AGE
web-5bb6fd4c98-bskvw 1 /1 Running 0 3s
web-5bb6fd4c98-qtv8q 0 /1 ContainerCreating 0 3s
[ root@master example]
NAME READY STATUS RESTARTS AGE
web-5bb6fd4c98-bskvw 1 /1 Running 0 30s
web-5bb6fd4c98-qtv8q 1 /1 Running 0 30s
[ root@master example]
[ root@master example]
deployment "web" successfully rolled out
3.3.2 回滚
[ root@master example]
deployment.apps/web
REVISION CHANGE-CAUSE
1 < none>
2 < none>
[ root@master example]
deployment.apps/web rolled back
[ root@master example]
deployment "web" successfully rolled out
[ root@master example]
NAME READY STATUS RESTARTS AGE
web-5bb6fd4c98-hm2jt 1 /1 Running 0 17s
web-5bb6fd4c98-nmjcg 1 /1 Running 0 16s
[ root@master example]
[ root@master example]
deployment.apps/web rolled back
[ root@master example]
deployment "web" successfully rolled out
3.4 弹性伸缩
[ root@master example]
deployment.apps/web scaled
[ root@master example]
NAME READY STATUS RESTARTS AGE
web-f686c9cdf-72fhz 1 /1 Running 0 4s
web-f686c9cdf-7kxgm 1 /1 Running 0 4s
web-f686c9cdf-89zwq 1 /1 Running 0 3m6s
web-f686c9cdf-gm6r6 1 /1 Running 0 3m5s
web-f686c9cdf-q45v2 1 /1 Running 0 4s