k8s 集群搭建-09-集群冒烟测试
九、集群冒烟测试
冒烟测试一词,来源于电路板测试:电路板拼接或组装完成后,进行通电测试,如果冒烟,则说明存在缺陷。而软件应用中,对其的定义为:在软件开发过程中的一种针对软件版本包的快速基本功能验证策略,是对软件基本功能进行确认验证的手段,并非深入测试。
针对每个版本或每次需求变更后,在正式测试前,对产品或系统的一次简单的验证性测试。
冒烟测试是在版本转测试之前,先选择一部分基础的测试用例进行验证,确保全流程没有严重、阻塞性的问题。有些也将其称为高压线测试。
1. 创建nginx ds
# 写入配置
$ 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: apps/v1
kind: DaemonSet
metadata:
name: nginx-ds
spec:
selector:
matchLabels:
app: nginx-ds
template:
metadata:
labels:
app: nginx-ds
spec:
containers:
- name: my-nginx
image: nginx:1.19
ports:
- containerPort: 80
EOF
# 创建ds
$ kubectl apply -f nginx-ds.yml
查看 Pod状态:
[root@homaybd03 ~]# kubectl get po
NAME READY STATUS RESTARTS AGE
nginx-ds-87flg 1/1 Running 0 57s
nginx-ds-j7mqr 1/1 Running 0 57s
查看节点:
[root@homaybd03 ~]# kubectl get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-ds-87flg 1/1 Running 0 2m23s 192.200.245.131 homaybd04 <none> <none>
nginx-ds-j7mqr 1/1 Running 0 2m23s 192.200.72.195 homaybd05 <none> <none>
[root@homaybd03 ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 192.233.0.1 <none> 443/TCP 10h
nginx-ds NodePort 192.233.76.14 <none> 80:30983/TCP 2m49s
[root@homaybd03 ~]#
2. 检查各种ip连通性
# 检查各 Node 上的 Pod IP 连通性
$ kubectl get pods -o wide
# 在每个worker节点上ping pod ip
$ ping <pod-ip>
# 检查service可达性
$ kubectl get svc
# 在每个worker节点上访问服务
$ curl <service-ip>:<port>
# 在每个节点检查node-port可用性
$ curl <node-ip>:<port>
实操:
①、 检查各 Node 上的 Pod IP 连通性
[root@homaybd03 ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-ds-87flg 1/1 Running 0 25m 192.200.245.131 homaybd04 <none> <none>
nginx-ds-j7mqr 1/1 Running 0 25m 192.200.72.195 homaybd05 <none> <none>
[root@homaybd03 ~]#
可以看到 pod ip 为 192.200.245.131,192.200.72.195
[root@homaybd04 ~]# ping 192.200.72.195
PING 192.200.72.195 (192.200.72.195) 56(84) bytes of data.
64 bytes from 192.200.72.195: icmp_seq=1 ttl=63 time=0.288 ms
64 bytes from 192.200.72.195: icmp_seq=2 ttl=63 time=0.171 ms
64 bytes from 192.200.72.195: icmp_seq=3 ttl=63 time=0.195 ms
[root@homaybd05 ~]# ping 192.200.72.195
PING 192.200.72.195 (192.200.72.195) 56(84) bytes of data.
64 bytes from 192.200.72.195: icmp_seq=1 ttl=64 time=0.063 ms
64 bytes from 192.200.72.195: icmp_seq=2 ttl=64 time=0.033 ms
在 worker 节点上可以ping 的通 Pod IP,但是在 master节点上 ping不通。
②、 检查service可达性
[root@homaybd04 ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 192.233.0.1 <none> 443/TCP 10h
nginx-ds NodePort 192.233.76.14 <none> 80:30983/TCP 40m
Service IP:192.233.76.14, 端口 为 80
[root@homaybd04 ~]# curl 192.233.76.14:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
③、在每个节点检查node-port可用性
node节点对应的端口为 30983,先检查是否有启用:
[root@homaybd04 ~]# netstat -ntlp| grep 30983
tcp 0 0 0.0.0.0:30983 0.0.0.0:* LISTEN 29807/kube-proxy
可以看到该端口有启用,然后使用 Node Ip 来访问:
[root@homaybd04 ~]# netstat -ntlp| grep 30983
tcp 0 0 0.0.0.0:30983 0.0.0.0:* LISTEN 29807/kube-proxy
[root@homaybd04 ~]# curl 192.168.1.125:30983
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
通过浏览器即可查看节点可以访问的通:
3. 检查dns可用性
# 创建一个nginx pod
$ cat > pod-nginx.yaml <<EOF
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: docker.io/library/nginx:1.19
ports:
- containerPort: 80
EOF
# 创建pod
$ kubectl apply -f pod-nginx.yaml
# 进入pod,查看dns
$ kubectl exec nginx -it -- /bin/bash
# 查看dns配置
root@nginx:/# cat /etc/resolv.conf
# 查看名字是否可以正确解析
root@nginx:/# curl nginx-ds
4. 日志功能
测试使用kubectl查看pod的容器日志
$ kubectl get pods
$ kubectl logs <pod-name>
5. Exec功能
测试kubectl的exec功能
$ kubectl get pods -l app=nginx-ds
$ kubectl exec -it <nginx-pod-name> -- nginx -v
为者常成,行者常至
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)