目录
4.3.导出deployment发布yaml文件,对外发布该服务,暴露ip和端口
1.什么是controller
- 在集群上管理和运行容器的对象
- 确保预期的pod副本数量,确保所有的node运行同一个pod
2.pod和controller关系
pod是通过controller实现运用的运维,比如伸缩,滚动升级
通过label标签和selector标签选择器来管理pod
3.deployment控制器应用场景
- 部署无状态应用
- 管理pod和replicaSet(副本)数量
- 部署,滚动升级等功能
- 应用场景:web服务,微服务
4.使用deployment部署应用(yaml)
4.1.导出deployment部署yaml文件
kubectl create deployment web --image=nginx --dry-run -o yaml > web.yaml
#内容如下:
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: {}
其中标签和标签选择器的位置截图如下:
4.2.运行deployment部署文件
kubectl apply -f web.yaml
kubectl get pods -A
4.3.导出deployment发布yaml文件,对外发布该服务,暴露ip和端口
kubectl expose deployment web --port=80 --target-port=80 --type=NodePort --name=web1 -o yaml > web1.yaml
#内容如下:
apiVersion: v1
kind: Service
metadata:
creationTimestamp: "2021-03-26T03:19:25Z"
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
operation: Update
time: "2021-03-26T03:19:25Z"
name: web1
namespace: default
resourceVersion: "1839035"
selfLink: /api/v1/namespaces/default/services/web1
uid: 779ccd35-4513-48ea-a706-19137f31a27a
spec:
clusterIP: 10.0.0.76
externalTrafficPolicy: Cluster
ports:
- nodePort: 31558
port: 80
protocol: TCP
targetPort: 80
selector:
app: web
sessionAffinity: None
type: NodePort
status:
loadBalancer: {}
#运行发布文件
kubectl apply -f web1.yaml
kubectl get pods,svc -A
运行截图如下:
5.应用升级回滚和弹性伸缩
应用升级:镜像版本升级
弹性伸缩
#版本替换,应用升级
kubectl set image deployment web nginx=nginx:1.15
#查看升级状态,是否成功
kubectl rollout status deployment web
#deployment "web" successfully rolled out
#查看升级的历史版本
kubectl rollout history deployment web
#REVISION CHANGE-CAUSE
#1 <none>
#2 <none>
#回滚到上一个版本
kubectl rollout undo deployment web
#查看回滚状态
kubectl rollout status deployment web
#回滚到指定的版本
kubectl rollout undo deployment web --to-revision=2
#查看回滚状态
kubectl rollout status deployment web
#弹性伸缩 10个pod
kubectl scale deployment web --replicas=10
kubectl get pods -A
上一章:kubernetes集群核心技术----pod(四)
https://blog.csdn.net/weixin_42211693/article/details/115210951
下一章:kubernetes集群核心技术----service和ingress(六)
https://blog.csdn.net/weixin_42211693/article/details/115242960