麒麟os部署kubernetes失败主因是依赖缺失、镜像源不可达或内核模块未启用;推荐采用apt标准流程:更新系统、装基础工具、配docker阿里源、装docker并启用、配kubernetes阿里源。

如果您正在麒麟操作系统上部署容器编排平台,但Kubernetes组件无法正常安装或初始化失败,则可能是由于系统依赖缺失、镜像源不可达或内核模块未启用所致。以下是针对麒麟OS安装Kubernetes的多种可行路径:
一、基于APT包管理器的标准安装流程
该方法适用于x86_64架构的银河麒麟V10桌面版或服务器版,依赖官方APT仓库与阿里云镜像源,步骤清晰且兼容性高。
1、更新系统并安装基础工具:
sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
2、添加Docker官方GPG密钥并配置Docker CE源:
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/debian $(lsb_release -cs) stable"
3、安装Docker并启动服务:
sudo apt-get update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker && sudo systemctl enable docker
4、配置Kubernetes国内镜像源:
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
sudo tee /etc/apt/sources.list.d/kubernetes.list deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
5、安装kubeadm、kubelet、kubectl并锁定版本:
sudo apt-get update && sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
二、ARM64架构离线安装方案
该方法专为鲲鹏、飞腾等国产ARM64平台设计,规避网络依赖与架构适配问题,适用于无外网环境或受限网络场景。
1、下载ARM64版Docker静态二进制包:
从Docker官方aarch64目录获取docker-24.0.0.tgz
2、解压并部署至系统路径:
tar -xzf docker-24.0.0.tgz
sudo cp -p docker/* /usr/bin/
3、创建systemd服务文件/etc/systemd/system/docker.service:
[Unit]
Description=Docker Application Container Engine
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
[Install]
WantedBy=multi-user.target
4、加载服务并启动:
sudo systemctl daemon-reload
sudo systemctl start docker && sudo systemctl enable docker
5、手动下载ARM64适配的kubernetes-server-linux-arm64.tar.gz(含kubeadm/kubelet/kubectl),解压后将二进制文件复制至/usr/bin,并设置可执行权限:
chmod +x /usr/bin/kubeadm /usr/bin/kubelet /usr/bin/kubectl
三、内核与网络前置加固配置
该步骤是麒麟OS成功运行Kubernetes的必要前提,解决因内核参数未调优导致的pod网络异常、节点NotReady等问题。
1、关闭swap分区(临时+永久):
sudo swapoff -a
sudo sed -ri 's/^[^#].*swap.*/#&/' /etc/fstab
2、配置桥接流量转发规则:
sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
vm.swappiness = 0
EOF
sudo sysctl --system
3、加载br_netfilter模块并验证:
sudo modprobe br_netfilter
必须确认输出中包含br_netfilter字样,否则后续init将失败
4、安装ipset与ipvsadm(支持kube-proxy ipvs模式):
sudo apt-get install -y ipset ipvsadm
5、配置IPVS内核模块自动加载:
sudo tee /etc/sysconfig/modules/ipvs.modules #!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
sudo chmod 755 /etc/sysconfig/modules/ipvs.modules && sudo bash /etc/sysconfig/modules/ipvs.modules
四、集群初始化与CNI网络部署
完成前述所有依赖后,方可执行集群初始化;此阶段需指定Pod网络CIDR并与所选CNI插件保持一致,避免网络插件无法分配地址。
1、初始化控制平面(master节点):
务必使用--pod-network-cidr参数,且值须与后续CNI配置严格匹配
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.28.2
2、配置kubectl本地访问:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
3、部署Flannel CNI插件(适用于10.244.0.0/16网段):
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/v0.24.2/Documentation/kube-flannel.yml
4、验证节点状态:
kubectl get nodes -o wide
输出中STATUS列应为Ready,ROLES列包含control-plane
五、多节点集群加入与主机名解析配置
该方法确保worker节点能正确解析master地址并建立TLS连接,规避因/etc/hosts缺失或hostname不一致引发的join失败。
1、在所有节点统一设置主机名:
sudo hostnamectl set-hostname master1 # 主节点
sudo hostnamectl set-hostname worker1 # 工作节点1
2、主节点编辑/etc/hosts,添加全部节点映射:
sudo tee -a /etc/hosts 192.168.10.30 master1
192.168.10.31 worker1
192.168.10.32 worker2
EOF
3、同步hosts文件至各worker节点:
sudo scp /etc/hosts root@192.168.10.31:/etc/hosts
sudo scp /etc/hosts root@192.168.10.32:/etc/hosts
4、在worker节点执行join命令(使用kubeadm init输出的实际token和hash):
sudo kubeadm join 192.168.10.30:6443 --token abcdef.0123456789abcdef \
--discovery-token-ca-cert-hash sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
5、主节点验证节点加入:
kubectl get nodes --show-labels









