k8s安装部署5 - Deployment & Service
k8s学习笔记
·
Deployment
Deployment 控制Pod,使Pod拥有多副本,自愈,扩缩容等能力
kubectl run mynginx --image=nginx
kubectl create deployment mytomcat --image=tomcat:8.5.68
#等待pod运行
kubectl get pods -w
#直接删除pod
kubectl delete pod mynginx
#删除pod后,会自动再启动一个pod(自愈能力)
kubectl delete pod mytomcat-6f5f895f4f-5rbj6
#自动启动了一个mytomcat的容器
kubectl get pods -w
kubectl get deploy
kubectl delete deploy mytomcat
#如果有pod节点的服务器停机,5分钟后会检测出服务器的状态,在其它服务器上部署启动pod
Pod多副本
#参数replicas指定Pod副本的个数
kubectl create deployment my-dep --image=nginx --replicas=3
kubectl get pods -w
对应yaml格式的配置文件内容是
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: my-dep
name: my-dep
spec:
replicas: 3
selector:
matchLabels:
app: my-dep
template:
metadata:
labels:
app: my-dep
spec:
containers:
- image: nginx
name: nginx
Pod扩缩容
#scale重新设定副本的个数
kubectl scale --replicas=5 deployment/my-dep
#或者也可以修改replicas的值
kubectl edit deployment my-dep
#-w同步阻塞监听事件变化
kubectl get pod -w
#查看pod的ip地址及在那个服务器上
kubectl get pods -owide
kubectl get deploy my-dep -oyaml
Pod滚动更新
#滚动更新,参数record纪录变更的原因
kubectl set image deployment/my-dep nginx=nginx:1.16.1 --record
kubectl get pods -owide -w
#查看正在滚动升级的状态
kubectl rollout status deployment/my-dep
#查看历史记录
kubectl rollout history deployment/my-dep
#查看某个历史详情
kubectl rollout history deployment/my-dep --revision=2
#回滚(回到上次)
kubectl rollout undo deployment/my-dep
#回滚(回到指定版本)
kubectl rollout undo deployment/my-dep --to-revision=2
#查看使用的镜像版本
kubectl get deploy/my-dep -oyaml|grep image
Service
Service: Pod的服务发现与负载均衡
#暴露Deploy,对外端口8000,容器内部的端口80
kubectl expose deployment my-dep --port=8000 --target-port=80
#service有一个固定的ip,对外提供负载均衡
kubectl get service
#查看my-dep的CLUSTER-IP,在3台机器上都可以访问到
curl 10.96.104.11:8000
#service的ip地址只能内网访问。其它pod访问service可以使用服务域名的方式
#服务域名格式:服务名.所在名称空间.svc:端口
#如 curl my-dep.default.svc:8000,这种方式只在容器内部使用
kubectl get pods
kubectl exec -it my-dep-5b7868d854-j94dd -- /bin/bash
curl my-dep.default.svc:8000
exit
kubectl get pod --show-labels
kubectl delete service my-dep
kubectl get svc
kubectl get deploy
使用配置文件创建Service
vi my-dep-service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: my-dep
name: my-dep
spec:
selector:
app: my-dep
ports:
- port: 8000
protocol: TCP
targetPort: 80
kubectl apply -f my-dep-service.yaml
kubectl get svc
kubectl delete -f my-dep-service.yaml
Service暴露外网访问的端口
ClusterIP:集群ip,暴露的端口只能在集群内访问
# 没有设置type时,默认值是ClusterIP
kubectl expose deployment my-dep --port=8000 --target-port=80 --type=ClusterIP
kubectl delete service my-dep
#NodePort 集群外也可以访问
kubectl expose deployment my-dep --port=8000 --target-port=80 --type=NodePort
#查看my-dep的PORT(S) 如 8000:30688/TCP,在windows浏览器中访问 http://192.168.99.200:30688
#会在所有的机器开放30688端口,使用外网ip加端口,每个节点外网都能够访问到
kubectl get svc
NodePort范围在 30000-32767 之间
更多推荐
已为社区贡献16条内容
所有评论(0)