kubernetes1.29.0 使用手册
本文介绍龙芯架构上1.29.0 kubernetes的使用方法,在欧拉2403、loongnix-server23、anolisos23系统上使用方法一致,这里以openeuler24.03系统为例进行部署。
环境准备
使用欧拉2403两台虚拟机部署。
设置主机名
两台机器: Master节点命名为k8s-master Worker节点命名为k8s-node
hostnamectl set-hostname k8s-master #在Master节点机器上执行
hostnamectl set-hostname k8s-node #在Worker节点机器上执行
关闭SElinux
在k8s-master和k8s-node两台机器上执行:
setenforce 0
禁用防火墙
在k8s-master和k8s-node两台机器上执行:
systemctl stop firewalld.service
systemctl disable firewalld.service
关闭swap
在k8s-master和k8s-node两台机器上执行:
swapoff -a
sed -ri '/\sswap\s/s/^#?/#/' /etc/fstab
清理iptables
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z
host解析文件配置
在k8s-master和k8s-node两台机器上执行:
cat >>/etc/hosts<< EOF
Master节点机器IP k8s-master
Worker节点机器IP k8s-node
EOF
注:将指令中Master/Worker IP修改为自己节点的IP
转发IPv4
在k8s-master和k8s-node两台机器上执行:
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# 设置所需的 sysctl 参数,参数在重新启动后保持不变:
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
# 应用 sysctl 参数而不重新启动:
sudo sysctl --system
通过运行以下指令确认 br_netfilter 和 overlay 模块被加载:
lsmod | grep br_netfilter
lsmod | grep overlay
通过运行以下指令确认 net.bridge.bridge-nf-call-iptables、net.bridge.bridge-nf-call-ip6tables 和 net.ipv4.ip_forward 系统变量在你的 sysctl 配置中被设置为 1:
sysctl net.bridge.bridge-nf-call-iptables net.bridge.bridge-nf-call-ip6tables net.ipv4.ip_forward
安装containerd
在k8s-master和k8s-node两台机器上执行以下操作。
下载 containerd 压缩包:
wget https://github.com/Loongson-Cloud-Community/containerd/releases/download/v1.7.13/containerd-1.7.13-static-abi2.0-bin.tar.gz
tar -xf containerd-1.7.13-static-abi2.0-bin.tar.gz
mv containerd-1.7.13-static-abi2.0-bin/* /usr/local/bin/
生成默认配置文件:
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
下载 containerd.service 文件:
wget -O /usr/lib/systemd/system/containerd.service https://raw.githubusercontent.com/containerd/containerd/main/containerd.service
systemctl daemon-reload
systemctl enable --now containerd
结合 runc 使用 systemd cgroup 驱动,在 /etc/containerd/config.toml 中设置:
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
...
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true
在 /etc/containerd/config.toml中重载沙箱(pause)镜像:
[plugins."io.containerd.grpc.v1.cri"]
sandbox_image = "lcr.loongnix.cn/kubernetes/pause:3.9"
一旦更新了这个配置文件,需要重启 containerd:systemctl restart containerd
安装runc
在k8s-master和k8s-node两台机器上执行:
wget https://github.com/Loongson-Cloud-Community/runc/releases/download/v1.1.12/runc-seccomp-1.1.12-abi2.0-bin.tar.gz
tar -xf runc-seccomp-1.1.12-abi2.0-bin.tar.gz
mv runc-seccomp-1.1.12-abi2.0-bin/runc-static /usr/local/bin/runc
安装rpm包
在k8s-master和k8s-node两台机器上执行:
mkdir -p /tmp/rpms
cd /tmp/rpms
wget http://cloud.loongnix.cn/releases/loongarch64/kubernetes/kubernetes/v1.29.0/cri-tools-1.29.0-0.loongarch64.rpm
wget http://cloud.loongnix.cn/releases/loongarch64/kubernetes/kubernetes/v1.29.0/kubeadm-1.29.0-0.loongarch64.rpm
wget http://cloud.loongnix.cn/releases/loongarch64/kubernetes/kubernetes/v1.29.0/kubectl-1.29.0-0.loongarch64.rpm
wget http://cloud.loongnix.cn/releases/loongarch64/kubernetes/kubernetes/v1.29.0/kubelet-1.29.0-0.loongarch64.rpm
wget http://cloud.loongnix.cn/releases/loongarch64/kubernetes/kubernetes/v1.29.0/kubernetes-cni-1.3.0-0.loongarch64.rpm
yum install -y ./*.rpm
配置crictl
在k8s-master和k8s-node两台机器上执行:
cat <<EOF|tee /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
EOF
kubeadm初始化集群
在k8s-master机器上执行:
kubeadm init \
--image-repository lcr.loongnix.cn/kubernetes \
--kubernetes-version v1.29.0 \
--cri-socket=/run/containerd/containerd.sock \
--pod-network-cidr=10.244.0.0/16 -v=5
成功后根据提示配置:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
加入node
在k8s-node机器上执行:
kubeadm join Master_Node_IP:6443 --token wngmgg.sxr4n542r4y4pji7 \
--discovery-token-ca-cert-hash sha256:a0a15138d3d2149c3cca6e6fc9ead95439e00f60fda314d9cef31ff1a6baa461
添加网络插件
在k8s-master机器上执行:
wget https://github.com/Loongson-Cloud-Community/calico/releases/download/v3.26.1/calico.yaml
yaml文件中的CALICO_IPV4POOL_CIDR字段需要与初始化时的pod-network-cidr一致,修改后执行:
kubectl apply -f calico.yaml
查看node状态
在k8s-node机器上执行:
kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane 2d20h v1.29.0
k8s-node Ready <none> 3m55s v1.29.0
在master查看服务运行状态
在k8s-master机器上执行:
[root@k8s-master ~]# crictl ps -a
CONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID POD
a7d8d059e8e02 2871df61a54d6 2 days ago Running kube-controller-manager 0 f3a3c8407b728 kube-controller-manager-k8s-master
d63237c7aac98 a7e10853f9188 2 days ago Running kube-scheduler 0 71073e48c9784 kube-scheduler-k8s-master
1bd194a81bce9 2825abb18f823 2 days ago Running kube-apiserver 0 07924775c0d04 kube-apiserver-k8s-master
5803d8045cce8 8e9ab6a2962af 2 days ago Running etcd 0 2d9c7fa539f94 etcd-k8s-master
8e97dc40d64cb 8906c2ada14aa 3 days ago Running calico-node 0 7f4bdb53da150 calico-node-gmw54
2ff2535a30694 ffbde5bcb96c4 3 days ago Running kube-proxy 0 fc6762b89b59a kube-proxy-rr4bx