参考:https://kubernetes.io/docs/tutorials/kubernetes-basics/

步骤1:扩展部署

要列出部署,请使用GET部署命令:kubectl get deployments

我们应该有一个POD。如果没有,请再次运行该命令。这显示:所需的状态显示的是已配置的副本数量,当前的状态显示了现在运行的副本的数量,最新的是更新以匹配所需(配置的)状态的副本的数量,可用状态显示用户实际可用的副本数量。

输出的自字段含义:
NAME: Deployments名称
DESIRED:创建Deployments时指定的副本数量。
CURRENT:当前正在运行的副本数量。
UP-TO-DATE:成功升级的副本数量。
AVAILABLE:可用的副本数量,注意副本在运行不等于可用。
AGE:应用运行时间。 

接下来,让我们将部署扩展到4个副本。我们将使用kubectl Scale命令,后面跟着deployment类型、名称和所需的实例数:

$ kubectl scale deployments/kubernetes-bootcamp --replicas=4
deployment.extensions/kubernetes-bootcamp scaled

  

$ kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
kubernetes-bootcamp 4/4 4 4 15m

现在我们有4个可用的应用程序实例。接下来,让我们检查一下Pods的数量是否发生了变化:

$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kubernetes-bootcamp-6bf84cb898-7mcsw 1/1 Running 0 2m53s 172.18.0.7 minikube <none> <none>
kubernetes-bootcamp-6bf84cb898-92gcb 1/1 Running 0 17m 172.18.0.4 minikube <none> <none>
kubernetes-bootcamp-6bf84cb898-949rh 1/1 Running 0 2m53s 172.18.0.6 minikube <none> <none>
kubernetes-bootcamp-6bf84cb898-r678j 1/1 Running 0 2m53s 172.18.0.5 minikube <none> <none>

  

现在有4种不同的IP地址。更改已在deployments事件日志中注册。要检查这一点,请使用Description命令:

$ kubectl describe deployments/kubernetes-bootcamp
Name: kubernetes-bootcamp
Namespace: default
CreationTimestamp: Sun, 07 Apr 2019 08:48:24 +0000
Labels: run=kubernetes-bootcamp
Annotations: deployment.kubernetes.io/revision: 1
Selector: run=kubernetes-bootcamp
Replicas: 4 desired | 4 updated | 4 total | 4 available | 0 unavailable #这里
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: run=kubernetes-bootcamp
Containers:
kubernetes-bootcamp:
Image: gcr.io/google-samples/kubernetes-bootcamp:v1
Port: 8080/TCP
Host Port: 0/TCP
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Progressing True NewReplicaSetAvailable
Available True MinimumReplicasAvailable
OldReplicaSets: <none>
NewReplicaSet: kubernetes-bootcamp-6bf84cb898 (4/4 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 20m deployment-controller Scaled up replica set kubernetes-bootcamp-6bf84cb898 to 1
Normal ScalingReplicaSet 5m39s deployment-controller Scaled up replica set kubernetes-bootcamp-6bf84cb898 to 4

您还可以在此命令的输出中查看现在有4个副本。

步骤2:负载平衡

让我们检查一下service是否是负载平衡的流量。为了找到公开的IP和端口,我们可以使用 describe service:

$ kubectl describe services/kubernetes-bootcamp
Name: kubernetes-bootcamp
Namespace: default
Labels: run=kubernetes-bootcamp
Annotations: <none>
Selector: run=kubernetes-bootcamp
Type: NodePort
IP: 10.96.175.74
Port: <unset> 8080/TCP
TargetPort: 8080/TCP
NodePort: <unset> 31242/TCP
Endpoints: 172.18.0.4:8080,172.18.0.5:8080,172.18.0.6:8080 + 1 more...
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>

创建一个名为Node_Port的环境变量,其值为Node端口:

$ export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}')
$ echo NODE_PORT=$NODE_PORT
NODE_PORT=31242

接下来,我们将对公开的IP和端口进行curl。多次执行该命令

$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6bf84cb898-949rh | v=1
$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6bf84cb898-r678j | v=1
$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6bf84cb898-949rh | v=1
$ curl $(minikube ip):$NODE_PORT
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-6bf84cb898-r678j | v=1

我们每次请求都会碰到不同的情况。这表明负载平衡是有效的。

查看Deployments的推进状态(rollout status):

$ kubectl rollout status deployments/kubernetes-bootcamp
deployment "kubernetes-bootcamp" successfully rolled out

  

第三步:缩小规模

若要将服务缩小到2个副本,请再次运行Scale命令:

$ kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
kubernetes-bootcamp 4/4 4 4 35m
$ kubectl scale deployments/kubernetes-bootcamp --replicas=2
deployment.extensions/kubernetes-bootcamp scaled
$ kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
kubernetes-bootcamp 2/2 2 2 42m

复制数减少到2个。列出Pods的数量:

$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kubernetes-bootcamp-6bf84cb898-4rhbr 1/1 Running 0 5m35s 172.18.0.6 minikube <none> <none>
kubernetes-bootcamp-6bf84cb898-v6zf2 1/1 Running 0 5m39s 172.18.0.3 minikube <none> <none>

  

  

最新文章

  1. ANDROID STDUIO 项目里的R文件突然丢失的解决办法N种之一
  2. ACM 兰州烧饼
  3. Shell重定向文件描述符
  4. PDF 补丁丁 0.4.2.1023 测试版使用手册发布
  5. Tilera 服务器上OpenJDK的安装尝试
  6. eclipse中自动生成javadoc文档
  7. wampserver 自定义站点
  8. MVC 5 属性路由中添加自己的自定义约束
  9. HNU 13074 Goldbach’s Conjecture 解题报告
  10. ThinkPHP数据字段的缓存问题
  11. 201521123007《Java程序设计》第13周学习总结
  12. RequireJS(一)
  13. Django_xadmin_应用外键搜索功能错误
  14. httpclient的主要业务代码逻辑(图解)
  15. asp.net mvc中action接收客户端发送过来的html片段
  16. C#代码执行耗时计算,此处是监测的mvc控制器方法
  17. Suricata规则编写——常用关键字
  18. Hook lua库函数时遇到的问题
  19. Office 365 - For security reasons DTD is prohibited in this XML document
  20. ansible 变量定义和引用

热门文章

  1. mfc创建文档视图过程
  2. Bootstrap日期/日历插件Datepicker 时间加标记
  3. Oracle RAC TAF 无缝failover
  4. lua 函数调用 -- 闭包详解和C调用
  5. TP5隐藏url中的index.php
  6. Jumony.Core非常厉害的一个开源项目!
  7. linux日常管理-rsync格式
  8. T-SQL 高级编程
  9. Nodejs调试技术
  10. [poj1737]Connected Graph(连通图计数)