1. 程式人生 > >『中級篇』k8s重要的Deployment(64)

『中級篇』k8s重要的Deployment(64)

bind zhong 網絡 ner 都在 資源限制 ice swarm ont

>原創文章,歡迎轉載。轉載請註明:轉載自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 是什麽東西,下次咱們在詳細說一下。


往期精彩
  1. docker導學(一)
  2. 容器的技術概述(二)
  3. docker的魅力初體驗-5分鐘安裝wordpress不走彎路(三)
  4. docker官網介紹(四)
  5. 如何在mac上安裝docker(五)
  6. 如何在window上安裝docker(六)
  7. 如何在mac上通過vagrant安裝虛擬機(七)
  8. 如何在window上通過vagrant安裝虛擬機(八)
  9. docker-Machine的本地使用(九)
  10. docker-Machine的本地使用(十)
  11. 在linux/mac下通過Docker-Machine在阿裏雲上的使用(11)
  12. docker架構和底層技術(12)
  13. docker Image概述(13)
  14. 手動建立一個base Image(14)
  15. 什麽是Container(15)
  16. 構建自己的Docker鏡像(16)
  17. Dockerfile詳解(17)
  18. 鏡像的發布(18)
  19. Dockerfile實戰(19)
  20. 容器的操作(20)
  21. Dockerfile實戰CMD和ENTRTYPOINT的配合(21)
  22. 容器的資源限制(22)
  23. docker網絡(23)
  24. docker學習必會網絡基礎(24)
  25. Linux網絡命名空間(25)
  26. Docker Bridge詳解(26)
  27. 容器之間的Link(27)
  28. 容器的端口映射(28)
  29. 容器網絡之host和none(29)
  30. 多容器復雜應用的部署(30)
  31. overlay網絡和etcd實現多機的容器通信(31)
  32. docker的數據持久化存儲和數據共享(32)
  33. windows下vagrant 通過SecureCRT連接centos7(33)
  34. 數據持久化之Data Volume(34)
  35. 數據持久化之bind Mounting(35)
  36. docker 使用bind Mounting實戰(36)
  37. docker容器安裝wordpress(37)
  38. docker Compose到底是什麽(38)
  39. Docker Compose的安裝和基本使用(39)
  40. Docker 水平擴展和負載均衡(40)
  41. Docker compose 部署一個復雜的應用(41)
  42. 容器編排Docker Swarm介紹(42)
  43. docker-swarm創建一個多節點集群(43)
  44. play with docker 的使用(44)
  45. docker-swarm中的Service創建維護和水平擴展(45)
  46. 在docker-swarm集群裏通過serivce部署wordpress(46)
  47. 集群服務間通信之RoutingMesh(47)
  48. RoutingMesh之Ingress負載均衡(48)
  49. Docker-Stack部署wordpress(49)
  50. Docker-Stack部署投票應用(50)
  51. Docker-Secret管理和使用(51)
  52. Docker service更新(52)
  53. Docker的收費模式(53)
  54. Docker-cloud介紹(54)
  55. Docker Cloud自動構建 Docker image(55)
  56. Docker企業版的在線免費體驗(56)
  57. docker企業版本地安裝之UCP(57)
  58. docker體驗阿裏雲的容器服務(58)
  59. 阿裏雲安裝Docker企業版UCP和DTR(59)
  60. Kubenetes簡介(60)
  61. Minikube快速搭建K8S單節點環境(61)
  62. K8S最小調度單位Pod(62)
  63. K8S橫向擴展功能ReplicaSet和ReplicationController(63)

技術分享圖片

『中級篇』k8s重要的Deployment(64)