08.验证集群功能
本文档使用 daemonset 验证 master 和 worker 节点是否工作正常。
检查节点状态
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
m7-demo-136001 Ready <none> 30m v1.8.15
m7-demo-136002 Ready <none> 27m v1.8.15
m7-demo-136003 Ready <none> 27m v1.8.15
都为 Ready 时正常。
创建测试文件
cat > nginx-ds.yml <<EOF
apiVersion: v1
kind: Service
metadata:
name: nginx-ds
labels:
app: nginx-ds
spec:
type: NodePort
selector:
app: nginx-ds
ports:
- name: http
port: 80
targetPort: 80
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: nginx-ds
labels:
addonmanager.kubernetes.io/mode: Reconcile
spec:
template:
metadata:
labels:
app: nginx-ds
spec:
containers:
- name: my-nginx
image: nginx:1.7.9
ports:
- containerPort: 80
EOF
kubectl create -f nginx-ds.yml
检查各 Node 上的 Pod IP 连通性
$ kubectl get pods -o wide|grep nginx-ds
nginx-ds-58xr7 1/1 Running 0 3m 172.30.96.2 m7-demo-136002
nginx-ds-hd9gz 1/1 Running 0 3m 172.30.200.2 m7-demo-136003
nginx-ds-v4mk7 1/1 Running 0 3m 172.30.112.2 m7-demo-136001
可见,nginx-ds 的 Pod IP 分别是 172.30.96.2
、172.30.200.2
、172.30.112.2
,在所有 Node 上分别 ping 这三个 IP,看是否连通:
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh ${node_ip} "ping -c 1 172.30.96.2"
ssh ${node_ip} "ping -c 1 172.30.200.2"
ssh ${node_ip} "ping -c 1 172.30.112.2"
echo -e "\n\n"
done
检查服务 IP 和端口可达性
$ kubectl get svc |grep nginx-ds
nginx-ds NodePort 10.254.212.157 <none> 80:32024/TCP 5m
可见:
- Service Cluster IP:10.254.212.157
- 服务端口:80
- NodePort 端口:32024
在所有 Node 上 curl Service IP:
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh ${node_ip} "curl 10.254.212.157"
done
预期输出 nginx 欢迎页面内容。
检查服务的 NodePort 可达性
在所有 Node 上执行:
source /opt/k8s/bin/environment.sh
for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh ${node_ip} "curl ${node_ip}:32024"
done
预期输出 nginx 欢迎页面内容。