Kubernetes之Deployment控制器
Pod与controllers的关系
- controllers:在集群上管理和运行容器的对象
- 通过label-selector相关联
- Pod通过控制器实现应用的运维,如伸缩,滚动升级等

Deployment功能与应用场景
- 部署无状态应用
- 管理Pod和ReplicaSet
- 具有上线部署,副本设定,滚动升级,回滚等功能
- 提供声明式更新,例如只更新一个新的Image
应用场景:Web服务,微服务
yaml字段解析
模板
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-depolyment
namespace: default
spec:
replicas: 3
selector:
matchLables:
app: nginx
template:
metadate:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
创建deployment的yaml的文件
kubectl create deployment web --image=nginx --dry-run -o 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: {}
重定向到一个文件
kubectl create deployment web --image=nginx --dry-run -o yaml >web.yaml
修改该yaml文档成测试的java-demo
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: web
name: web
spec:
replicas: 3
selector:
matchLabels:
app: web
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: web
spec:
containers:
- image: lizhenliang/java-demo
name: java
resources: {}
status: {}
执行
kubectl apply -f web.yaml
查看
kubectl get pods

查看容器日志,显示端口已经启动
kubectl logs web-867dd4dcf-fsgq8

部署完应用怎么让应用暴露外部访问
service和ingress两种方法暴露
查看部署deploy
kubectl get deploy

应用发布
kubectl expose --name=web deployment web --port=80 --target-port=8080 --type=NodePort
指定资源的类型是deployment
指定资源的名称是web
指定service作为这一组的访问入口,负载均衡到后端的端口 指定为80
--target-port指定后端tomcat的端口
--name指定service的名称,如果不指定和deployment的名称是一样的
--type指定service的类型为NodePort分配一个随机的端口
想要产生一个yaml使用以下命令
kubectl expose --name=web deployment web --port=80 --target-port=8080 --type=NodePort --dry-run -o yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: web
name: web
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8080
selector:
app: web
type: NodePort
status:
loadBalancer: {}
查看创建的service
kubectl get service

使用node的ip加端口号可以访问

浙公网安备 33010602011771号