2017年4月9日星期日

OpenShift_074:亲和性和反亲和性测试

环境 OCP 3.4

测试场景 1. 各个 Node 节点没有设置特别的 label

1.1 确认 Node 节点配置没有设置特别的 label
oc get node --show-labels
输出如下:
NAME                 STATUS                     AGE       LABELS
master.example.com   Ready,SchedulingDisabled   78d       beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=master.example.com
node1.example.com    Ready                      78d       beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=node1.example.com
node2.example.com    Ready                      78d       beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=node2.example.com

1.2 部署 myphp 应用,Replicas=2
多试验几次,发现 2 个 pod 有时会运行在同一个 node 上,有时会运行在 2 个 node 上。
oc get pod -o wide | grep myphp

1.3 手工把 pod 数量降为 0,再升到 1,再升到 2
oc scale --replicas=0 dc/myphp
oc scale --replicas=1 dc/myphp
oc scale --replicas=2 dc/myphp
多试验几次,发现 2 个 pod 有时会运行在同一个 node 上,有时会运行在 2 个 node 上。
这说明,默认情况下 pod 选择运行的 node 是随机的。

1.4 清理应用
oc delete is/myphp bc/myphp dc/myphp svc/myphp routes/myphp

测试场景 2. 对 Node 节点设置特别的 label:region

2.1 对 Node 节点设置 label:region
oc label node node1.example.com region=r1 --overwrite
oc label node node2.example.com region=r2 --overwrite

2.2 部署 myphp 应用,Replicas=2
多试验几次,发现 2 个 pod 只会运行在 region label 值相同的 node  值 上。
这说明 region 默认是亲和性的,一旦第 1 个 pod 运行在某一个 node(region=r1) 上,scale up 的 pod 也会运行在该 node(region=r1)  上。

2.3 手工把 pod 数量降为 0,再升到 1,再升到 2
多试验几次,发现 2 个 pod 只会运行在 region label 值相同的 node  值 上。

2.4 清理应用

测试场景 3. 对 Node 节点设置特别的 label:zone

3.1 对 Node 节点设置 label:zone
oc label node node1.example.com region-
oc label node node2.example.com region-
oc label node node1.example.com zone=z1 --overwrite
oc label node node2.example.com zone=z2 --overwrite

3.2 部署 myphp 应用,Replicas=2
多试验几次,发现 2 个 pod 会运行在 zone label 值不同的 node 上。
这说明 zone 默认是反亲和性的,多个 pod 会运行在 zone label 值不同的 node 上。
// TODO 实际测试结果不是这样,需要再分析原因。

3.3 手工把 pod 数量降为 0,再升到 1,再升到 2
多试验几次,发现 2 个 pod 会运行在 zone label 值不同的 node 上。
// TODO 实际测试结果不是这样,需要再分析原因。

3.4 清理应用

没有评论: