A Deployment controller provides declarative updates for Pods and ReplicaSets.
Deployments提供了Pods 和 ReplicaSets 的更新和维护
- Deployments配置文件
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.12.2
ports:
- containerPort: 80
- 创建
kubectl create -f deployment_nginx.yml
- 查看
kubectl get deployment
- 查看更多信息
kubectl get deployment -o wide
- 升级image
kubectl set image deployment nginx-deployment nginx=nginx:1.13
- 查看rollout历史
kubectl rollout history deployment nginx-deployment
- 回到上一个版本
kubectl rollout undo deployment nginx-deployment
- 查看node情况
kubectl get node
- 查看node详情
kubectl get node -o wide
- 把服务暴露给外部
kubectl expose deployment nginx-deployment --type=NodePort
- 查看服务
kubectl get svc
- 删除服务
kubectl delete services nginx-deployment
- 创建deployment的services
kubectl expose deployment service-test
如果deployment有多个pod,那么用services的IP访问的时候,会自动进行负载均衡
services的服务有三种类型
ClusterIp
内部能访问的,ClusterIp的IP是不会变的
创建pod的services
kubectl expose pods nginx-pod
NodePort
外部能访问的,绑定在Node上面
创建的时候指定type=NodePort,不指定则是默认的ClusterIp
kubectl expose deployment nginx-deployment --type=NodePort
创建之后,就可以通过node的IP和端口访问了,并且每一台Node都可以访问
另外创建方式是通过配置文件创建services
service_nginx.yml
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
ports:
- port: 32333
# 映射到外部的端口
nodePort: 32333
targetPort: nginx-port
protocol: TCP
selector:
app: nginx
# services类型
type: NodePort
LoadBalancer
云服务商提供的
- 编辑deployment服务
kubectl edit deployment service-test