原创文章,欢迎转载。转载请注明:转载自 IT人故事会,谢谢!
原文链接地址: 『中级篇』k8s重要的Deployment(64)
之前介绍了,pod,ReplicationController,ReplicaSet。这次主要说下Deoloyments。源码: https://github.com/limingios/docker/tree/master/No.9
官方介绍
https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
Deployment为Pod和Replica Set提供声明式更新。
你只需要在 Deployment 中描述您想要的目标状态是什么,Deployment controller 就会帮您将 Pod 和ReplicaSet 的实际状态改变到您的目标状态。您可以定义一个全新的 Deployment 来创建 ReplicaSet 或者删除已有的 Deployment 并创建一个新的来替换。
注意:您不该手动管理由 Deployment 创建的 Replica Set,否则您就篡越了 Deployment controller 的职责!下文罗列了 Deployment 对象中已经覆盖了所有的用例。如果未有覆盖您所有需要的用例,请直接在 Kubernetes 的代码库中提 issue。
Delpyment演示
启动minikube
minikube start
deployment_nginx.yml
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
创建deployment
kubectl create -f deployment_nginx.yml kubectl get deployment kubectl get rs kubectl get pods
deployment信息
可以看到这个deloyment下的详情,nginx是1.12.2
kubectl get deployment -o wide
deployment的升级
针对目前的nginx1.12升级成1.13的命令,老的下面自动移除了,全部都在新的下面。
kubectl set image deployment nginx-deployment nginx=nginx:1.13 kubectl get deployment kubectl get deployment -o wide kubectl get pods
deployment查看历史版本
kubectl rollout history deployment nginx-deployment
deployment 回滚到之前的版本
又变成了nginx 1.12.2
kubectl rollout undo deployment nginx-deployment
deployment 端口暴露
其实就是把端口暴露在minikube上。
kubectl get node kubectl get node -o wide kubectl expose deployment nginx-deployment --type=NodePort #查看node节点暴露的端口30960 kubectl get svc #进入minikube查看ip地址192.168.99.100 minikube ssh
PS:不管怎么样完成了服务的暴露,具体这个service是什么,暴露的NodePort 是什么东西,下次咱们在详细说一下。
回贴