LoongArch64 (loong64) 龙芯架构:AnolisOS 龙蜥 23.4 安装 Kubernetes v1.30.1

前提

amd64arm64 一键安装:https://k8s-sh.xuxiaowei.com.cn

已经提前安装了 containerd:LoongArch64 (loong64) 龙芯架构:安装 containerd、docker 话题列表

从 Kubernetes 1.24.0 开始,容器运行时默认不再使用 docker,而是使用 containerd

相关文章

查看系统版本

cat /etc/os-release
[root@anolis ~]# cat /etc/os-release 
NAME="Anolis OS"
VERSION="23.4"
ID="anolis"
VERSION_ID="23.4"
PLATFORM_ID="platform:an23"
PRETTY_NAME="Anolis OS 23.4"
ANSI_COLOR="0;31"
HOME_URL="https://openanolis.cn/"
BUG_REPORT_URL="https://bugzilla.openanolis.cn/"

[root@anolis ~]# 

查看系统内核

uname -a
[root@anolis ~]# uname -a
Linux anolis 6.6.102-5.3.3.an23.loongarch64 #1 SMP Tue May 26 14:00:16 CST 2026 loongarch64 loongarch64 loongarch64 GNU/Linux
[root@anolis ~]# 

前期环境准备

关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

关闭交换空间

swapoff -a
sudo sed -i 's/.*swap.*/#&/' /etc/fstab

网络配置

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
EOF
sudo sysctl --system

创建文件夹

此文件夹用于存放下载的 rpm 包、配置文件等

后续执行的命令,均在此文件夹下

mkdir kubernetes-v1.30.1
cd kubernetes-v1.30.1

下载 rpm 包

curl -LO https://cloud.loongnix.cn/releases/loongarch64/kubernetes/kubernetes/v1.30.1/cri-tools-1.30.1-0.loongarch64.rpm
curl -LO https://cloud.loongnix.cn/releases/loongarch64/kubernetes/kubernetes/v1.30.1/kubeadm-1.30.1-0.loongarch64.rpm
curl -LO https://cloud.loongnix.cn/releases/loongarch64/kubernetes/kubernetes/v1.30.1/kubectl-1.30.1-0.loongarch64.rpm
curl -LO https://cloud.loongnix.cn/releases/loongarch64/kubernetes/kubernetes/v1.30.1/kubelet-1.30.1-0.loongarch64.rpm
curl -LO https://cloud.loongnix.cn/releases/loongarch64/kubernetes/kubernetes/v1.30.1/kubernetes-cni-1.4.0-0.loongarch64.rpm

安装 rpm 包

yum install *.rpm

设置 kubelet 开机自动启动

systemctl enable kubelet.service

查看所需默认镜像

kubeadm config images list --kubernetes-version=v1.30.1
[root@anolis kubernetes-v1.30.1]# kubeadm config images list --kubernetes-version=v1.30.1
registry.k8s.io/kube-apiserver:v1.30.1
registry.k8s.io/kube-controller-manager:v1.30.1
registry.k8s.io/kube-scheduler:v1.30.1
registry.k8s.io/kube-proxy:v1.30.1
registry.k8s.io/coredns/coredns:v1.11.1
registry.k8s.io/pause:3.9
registry.k8s.io/etcd:3.5.12-0
[root@anolis kubernetes-v1.30.1]# 

查看所需龙蜥镜像

kubeadm config images list --image-repository=lcr.loongnix.cn/kubernetes --kubernetes-version=v1.30.1
[root@anolis kubernetes-v1.30.1]# kubeadm config images list --image-repository=lcr.loongnix.cn/kubernetes --kubernetes-version=v1.30.1
lcr.loongnix.cn/kubernetes/kube-apiserver:v1.30.1
lcr.loongnix.cn/kubernetes/kube-controller-manager:v1.30.1
lcr.loongnix.cn/kubernetes/kube-scheduler:v1.30.1
lcr.loongnix.cn/kubernetes/kube-proxy:v1.30.1
lcr.loongnix.cn/kubernetes/coredns:v1.11.1
lcr.loongnix.cn/kubernetes/pause:3.9
lcr.loongnix.cn/kubernetes/etcd:3.5.12-0
[root@anolis kubernetes-v1.30.1]#

拉取所需龙蜥镜像

此处为提前执行

kubeadm config images pull --image-repository=lcr.loongnix.cn/kubernetes --kubernetes-version=v1.30.1

修改 containerd 配置

sudo sed -i "s#SystemdCgroup = false#SystemdCgroup = true#g" /etc/containerd/config.toml
NEW_PAUSE=$(kubeadm config images list --image-repository=lcr.loongnix.cn/kubernetes --kubernetes-version=v1.30.1 | grep pause | head -1)
sed -i.bak "s|sandbox = '.*'|sandbox = '$NEW_PAUSE'|" /etc/containerd/config.toml
echo "Updated sandbox to: $NEW_PAUSE"
systemctl restart containerd.service

创建 Kubernetes 初始化配置文件

下列配置中,有部分环境变量不存在,说明此处并不涉及。

有需要再更新环境变量

kubernetes_version=v1.30.1
kubernetes_images=lcr.loongnix.cn/kubernetes
kubeadm_apiVersion=$(kubeadm config print init-defaults | head -n 1)
cat <<EOF | sudo tee kubeadm-config.yaml
$kubeadm_apiVersion
kind: ClusterConfiguration
kubernetesVersion: $kubernetes_version
$control_plane_endpoint
$caCertificateValidityPeriod
$certificateValidityPeriod
imageRepository: $kubernetes_images
networking:
  dnsDomain: cluster.local
  $service_cidr
  $pod_network_cidr

EOF

初始化 Kubernetes

--node-name=:指定节点名称

kubeadm init --node-name=k8s-1 --config=kubeadm-config.yaml

创建 kubectl 配置文件

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

查看 Kubernetes 节点信息

kubectl get node -o wide
[root@anolis kubernetes-v1.30.1]# kubectl get node -o wide
NAME    STATUS     ROLES           AGE   VERSION   INTERNAL-IP      EXTERNAL-IP   OS-IMAGE         KERNEL-VERSION                   CONTAINER-RUNTIME
k8s-1   NotReady   control-plane   61s   v1.30.1   192.168.103.23   <none>        Anolis OS 23.4   6.6.102-5.3.3.an23.loongarch64   containerd://2.3.1
[root@anolis kubernetes-v1.30.1]# 

查看 pod 信息

kubectl get pod -o wide -A
[root@anolis kubernetes-v1.30.1]# kubectl get pod -o wide -A
NAMESPACE     NAME                            READY   STATUS    RESTARTS   AGE   IP               NODE     NOMINATED NODE   READINESS GATES
kube-system   coredns-7d9c65d499-mgtqz        0/1     Pending   0          89s   <none>           <none>   <none>           <none>
kube-system   coredns-7d9c65d499-x6294        0/1     Pending   0          89s   <none>           <none>   <none>           <none>
kube-system   etcd-k8s-1                      1/1     Running   0          90s   192.168.103.23   k8s-1    <none>           <none>
kube-system   kube-apiserver-k8s-1            1/1     Running   0          90s   192.168.103.23   k8s-1    <none>           <none>
kube-system   kube-controller-manager-k8s-1   1/1     Running   0          90s   192.168.103.23   k8s-1    <none>           <none>
kube-system   kube-proxy-4shfb                1/1     Running   0          89s   192.168.103.23   k8s-1    <none>           <none>
kube-system   kube-scheduler-k8s-1            1/1     Running   0          90s   192.168.103.23   k8s-1    <none>           <none>
[root@anolis kubernetes-v1.30.1]#