测试报告
测试环境
使用华为云 ECS 进行 Kubernetes 集群的搭建,集群由一个 master 节点和一个 worker 节点组成,两个主机操作系统环境为 。
其中 master 节点为:
- x86_64: 通用计算增强型 | c6s.large.2 | 2vCPUs | 4GiB | Ubuntu 20.04
worker 节点为:
- aarch64: 鲲鹏通用计算增强型 | kc1.large.2 | 2vCPUs | 4GiB | Ubuntu 18.04
通过 calico 搭建完成 pod 网络之后通过部署 nginx 来进行测试,以能够看到 nginx 的欢迎页面为测试成功。
参考资料
- https://zhuanlan.zhihu.com/p/138554103
- https://python.iitter.com/other/10768.html
- https://www.weave.works/docs/net/latest/kubernetes/kube-addon/
- https://hollowmansblog.wordpress.com/2022/01/28/deploy-a-kubernetes-cluster-based-on-calico-and-opensuse-kubic/
- https://leehao.me/k8s-%E9%83%A8%E7%BD%B2-nginx-%E5%85%A5%E9%97%A8/
测试步骤以及结果
开通华为云 ECS 服务流程(需要弹性公网IP)以及登录进入两个主机界面则不再阐述,这里放出我的两个主机界面截图:
- Master:
![](https://img-blog.csdnimg.cn/05e9b17a5655493f877321390da6067b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASG9sbG93TWFuNg==,size_20,color_FFFFFF,t_70,g_se,x_16) - Worker:
![](https://img-blog.csdnimg.cn/a2e941b08f4e41a5b4f8530bce066dd9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASG9sbG93TWFuNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
准备Kubernetes环境
首先再master中执行:
modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
修改/etc/sysctl.d/10-network-security.conf :
将下面两个参数的值从2修改为1:
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1
然后使之生效:sudo sysctl --system
更新系统,安装软件:
sudo apt update && sudo apt dist-upgrade -y
sudo apt install docker.io -y
sudo systemctl start docker
sudo systemctl enable docker
sudo apt-get update && sudo apt-get install -y ca-certificates curl software-properties-common apt-transport-https
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
sudo tee /etc/apt/sources.list.d/kubernetes.list <<EOF
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
sudo apt-get update && sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
修改Docker,在/etc/docker/daemon.json 中{} 内,添加"exec-opts": ["native.cgroupdriver=systemd"] ,并执行
mkdir -p /var/lib/kubelet
cat > /var/lib/kubelet/config.yaml <<EOF
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd
EOF
sudo systemctl restart docker
拉取镜像:
sudo kubeadm config images pull --image-repository registry.aliyuncs.com/google_containers
![](https://img-blog.csdnimg.cn/bef30084aa6e48f687c52e1a1ee33c83.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASG9sbG93TWFuNg==,size_20,color_FFFFFF,t_70,g_se,x_16) 将CoreDNS镜像替换为openEuler版:
docker rmi -f registry.aliyuncs.com/google_containers/coredns:v1.8.6
docker pull hollowman6/coredns-openeuler:1.9.0-21.09
docker tag docker.io/hollowman6/coredns-openeuler:1.9.0-21.09 registry.aliyuncs.com/google_containers/coredns:v1.8.6
![](https://img-blog.csdnimg.cn/b768b6fc0b30484bba297c5b62483ae1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASG9sbG93TWFuNg==,size_20,color_FFFFFF,t_70,g_se,x_16) 然后将这节上述步骤再在worker中重复执行一遍。
部署Kubernetes
在master中执行:
sudo kubeadm init --pod-network-cidr 172.16.0.0/16 \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers
![](https://img-blog.csdnimg.cn/c929a4dd2834416ab116952b31d5dc42.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASG9sbG93TWFuNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
记下最后打印的join命令,然后执行:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
在master中下载 https://docs.projectcalico.org/manifests/calico.yaml 修改CALICO_IPV4POOL_CIDR 对应值为172.16.0.0/16 ,取消掉对应注释。 ![](https://img-blog.csdnimg.cn/6d95c774a4b24ff7a1c7bead63049377.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASG9sbG93TWFuNg==,size_20,color_FFFFFF,t_70,g_se,x_16) 然后 kubectl apply -f calico.yaml ![](https://img-blog.csdnimg.cn/3b22f9408fa34d4d8617adc5029d757e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASG9sbG93TWFuNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
worker中运行刚刚记录的join命令: ![](https://img-blog.csdnimg.cn/6116dbd50bb447b599b141433b1c0195.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASG9sbG93TWFuNg==,size_20,color_FFFFFF,t_70,g_se,x_16) 集群构建成功!
稍等片刻,所有节点都正常运行:(以下命令都在master中执行)kubectl get nodes ![](https://img-blog.csdnimg.cn/17420af9383e4160b6c9f5e2f09c430e.png) kubectl get pods --all-namespaces ![](https://img-blog.csdnimg.cn/ea00b1fcaa4e4f0f87db019f36734938.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASG9sbG93TWFuNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
可知master节点(x86_64)与worker节点(aarch64)的CoreDNS镜像都部署测试成功。 一切正常!
测试在集群中部署Nginx应用
执行nano nginx-pod.yml ,输入以下内容:
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
Ctrl-O ,Enter ,Ctrl-X 保存。
执行kubectl apply -f nginx-pod.yml
然后执行kubectl get pods nginx -o wide ,可以看到 nginx pod 已处于 Running 状态,表示刚创建的 pod 已成功运行起来。 ![](https://img-blog.csdnimg.cn/ab39f41e3ae54159a4f4ba74981988e9.png) 执行nano nginx-dep.yml ,输入以下内容:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:alpine
ports:
- containerPort: 80
Ctrl-O ,Enter ,Ctrl-X 保存。
执行kubectl apply -f nginx-dep.yml
然后执行kubectl get deploy -o wide 可以看到,刚创建的 nginx-deployment 的 3 个副本均处于 READY 状态: ![](https://img-blog.csdnimg.cn/408b1372c37c45f99fd6163108bb89f1.png) 执行nano nginx-svc.yml ,输入以下内容:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30080
type: NodePort
Ctrl-O ,Enter ,Ctrl-X 保存。
执行kubectl apply -f nginx-svc.yml
然后执行kubectl get svc nginx-service -o wide 查看 service 的状态: ![](https://img-blog.csdnimg.cn/c8efc82d257541a0aaa74be2d3b819b3.png) 执行curl 127.0.0.1:30080 ,可以看到nginx 的欢迎页面源代码,说明一切正常,集群测试到此结束! ![](https://img-blog.csdnimg.cn/da5f9a1e416f49c6b54b0f600cce3b4a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBASG9sbG93TWFuNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
|