使用Deployment运行一个无状态应用

    • 创建一个nginx deployment.
    • 使用kubectl列举关于deployment信息.
    • 更新deployment.

    准备开始

    你必须拥有一个 Kubernetes 的集群,同时你的 Kubernetes 集群必须带有 kubectl 命令行工具。 如果你还没有集群,你可以通过 构建一 个你自己的集群,或者你可以使用下面任意一个 Kubernetes 工具构建:

    要获知版本信息,请输入 .

    你可以通过创建一个Kubernetes Deployment对象来运行一个应用, 可以在一个YAML文件中描述Deployment. 例如, 下面这个YAML文件描述了一个运行nginx:1.7.9 Docker镜像的Deployment:

    1. 通过YAML文件创建一个Deployment:

      1. kubectl apply -f https://k8s.io/examples/application/deployment.yaml
    2. 展示Deployment相关信息:

      kubectl describe deployment nginx-deployment

      1. user@computer:~/website$ kubectl describe deployment nginx-deployment
      2. Name: nginx-deployment
      3. Namespace: default
      4. CreationTimestamp: Tue, 30 Aug 2016 18:11:37 -0700
      5. Labels: app=nginx
      6. Annotations: deployment.kubernetes.io/revision=1
      7. Selector: app=nginx
      8. Replicas: 2 desired | 2 updated | 2 total | 2 available | 0 unavailable
      9. StrategyType: RollingUpdate
      10. MinReadySeconds: 0
      11. Pod Template:
      12. Labels: app=nginx
      13. Containers:
      14. nginx:
      15. Image: nginx:1.7.9
      16. Port: 80/TCP
      17. Environment: <none>
      18. Mounts: <none>
      19. Conditions:
      20. Type Status Reason
      21. ---- ------ ------
      22. Available True MinimumReplicasAvailable
      23. Progressing True NewReplicaSetAvailable
      24. OldReplicaSets: <none>
      25. NewReplicaSet: nginx-deployment-1771418926 (2/2 replicas created)
      26. No events.
    3. kubectl get pods -l app=nginx

      1. NAME READY STATUS RESTARTS AGE
      2. nginx-deployment-1771418926-7o5ns 1/1 Running 0 16h
      3. nginx-deployment-1771418926-r18az 1/1 Running 0 16h
    4. 展示某一个pod信息:

      kubectl describe pod

      该处 <pod-name> 指某一pod的名称.

    更新deployment

    你可以通过更新一个新的YAML文件来更新deployment. 下面的YAML文件指定该deployment镜像更新为nginx 1.8.

    1. 应用新的YAML:

      1. kubectl apply -f https://k8s.io/examples/application/deployment-update.yaml
      1. kubectl get pods -l app=nginx

    你可以通过应用新的YAML文件来增加Deployment中pods的数量. 该YAML文件将replicas设置为4, 指定该Deployment应有4个pods:

    1. 应用新的YAML文件:

    2. 验证Deployment有4个pods:

      1. kubectl get pods -l app=nginx

      输出的结果类似于:

      1. NAME READY STATUS RESTARTS AGE
      2. nginx-deployment-148880595-4zdqq 1/1 Running 0 25s
      3. nginx-deployment-148880595-6zgi1 1/1 Running 0 25s
      4. nginx-deployment-148880595-fxcez 1/1 Running 0 2m
      5. nginx-deployment-148880595-rwovn 1/1 Running 0 2m

    删除deployment

    通过名称删除deployment:

      创建一个多副本应用首选方法是使用Deployment,反过来使用ReplicaSet. 在Deployment和ReplicaSet加入到Kubernetes之前, 多副本应用通过ReplicationController来配置.

      接下来