银河麒麟v10-arm离线部署k8s集群(v1.23.4) 📅 发布时间:2026/9/18 13:06:59 👁 浏览次数: 目录1.查看麒麟系统的内核2. 环境初始化3. 安装docker4. 安装k8s组件5. 准备镜像6. 在master上操作7. 在node1上操作8. 在master上查看节点信息9. 安装网络插件calico10. 安装界面化管理工具离线部署的前提亲测成功其他的不保证麒麟系统的内核: 4.19.90-25.2.v2101.gfb01.ky10.aarch64Docker : v 20.10.7k8sv1.23.4另外k8s部署的服务器内存建议预留大一些。准备相关的包ipvsadm包ipvsadmdocker的二进制包docker-二进制包k8s组件的rpm包k8s-rpmk8s相关的镜像文件k8s-imagek8s环境的依赖项k8s-dependency配置文件yaml搭建本地仓库的镜像包registry-image未部署过k8s的环境在部署过程中系统会提示缺少一些依赖项相关的依赖项放置在k8s-dependency中。本次部署基于两台银河麒麟v10计算机一台作为k8s的调度节点master一台作为k8s的工作节点node修改两台计算机的网络配置如果是多网卡的话配置ip对应的网络配置文件设置静态ipcd /etc/sysconfig/network-scripts //网络配置文件在这里 ls cp ./ifcfg-ens33 ./ifcfg-ens33.bak //修改系统文件前养成做备份的习惯 vim ifcfg-ens33修改以下内容BOOTPROTOstatic ONBOOTyes添加以下内容IPADDR192.168.0.190 NETMASK255.255.255.0 GATEWAY192.168.0.2 DNS8.8.8.8修改域名解析文件vim /etc/resolv.conf 添加 nameserver 8.8.8.8重启网络服务service network restart 或 systemctl restart network查看系统ip:ip addr两台计算机都要进行的操作1,2,3,4,51.查看麒麟系统的内核uname -a2. 环境初始化1主机名解析vim /etc/hosts 192.168.0.190 master 192.168.0.193 node190的机子vim /etc/hostname master193的机子vim /etc/hostname node2) 时间同步麒麟系统自带了chronydsystemctl start chronyd //开启时间同步 systemctl enable chronyd //设置时间同步开机自启 date //验证其实时间同步这样操作并没有真的实现时间同步也是在后续学习中知道的实现时间同步的操作我另外写了一篇小博客感兴趣的请移步https://blog.csdn.net/q_hsolucky/article/details/125737244?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22125737244%22%2C%22source%22%3A%22q_hsolucky%22%7DctrtidGLSF33) 禁用iptables和firewalldsystemctl stop firewalld systemctl disable firewalld systemctl stop iptables systemctl disable iptables4) 禁用selinuxlinux下的一个安全服务必须禁用vim /etc/selinux/config SELINUXdisabled正常情况下selinuxenforcing5) 禁用swap分区主要是注释最后一行vim /etc/fstab UUID455cc753-7a60-4c17-a424-7741728c44a1 /boot xfs defaults 0 0 /dev/mapper/centos-home /home xfs defaults 0 0 # /dev/mapper/centos-swap swap swap defaults 0 0 //注释这条6) 修改系统的内核参数vim /etc/sysctl.d/kubernetes.conf 添加以下内容 net.bridge.bridge-nf-call-ip6tables 1 net.bridge.bridge-nf-call-iptables 1 net.ipv4.ip_forward 1重新加载配置sysctl -p也可能是下面的内容加载网桥过滤模块modprobe br_netfilter查看网桥过滤模块是否加载成功lsmod | grep br_netfilter7) 配置ipvs功能在kubernetes中service有两种代理模型一种是基于iptables的一种是基于ipvs的,两者比较的话ipvs的性能明显要高一些但是如果要使用它需要手动载入ipvs模块。麒麟系统自带了Ipset因此安装ipvsadmrpm -ivh ipvsadm-1.31-2.ky10.aarch64.rpm做软连接ln -sf /usr/lib64/libLLVM-7.so /usr/lib64/libLLVM-7.0.0.so貌似不做也行目前没看出会有影响。添加需要加载的模块写入脚本文件cat EOF /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为脚本文件添加执行权限chmod x /etc/sysconfig/modules/ipvs.modules执行脚本文件/bin/bash /etc/sysconfig/modules/ipvs.modules查看对应的模块是否加载成功lsmod | grep -e ip_vs -e nf_conntrack8) 重启服务器上述操作修改了很多系统的配置文件必须重启不能省略。reboot3. 安装docker具体操作参看docker-二进制安装部分。https://blog.csdn.net/q_hsolucky/article/details/124253860?spm1001.2014.3001.55014. 安装k8s组件rpm -ivh *.rpm可能会提示缺少conntrack和socat依赖项需要安装k8s-dependency下的包rpm -ivh *.rpm --nodeps --force重新安装k8s的组件rpm包rpm -ivh *.rpm配置kubelet的cgroup:vim /etc/sysconfig/kubelet 添加 KUBELET_CGROUP_ARGS--cgroup-driversystemd KUBE_PROXY_MODEipvs设置kubelet开机自启systemctl enable kubelet会有创建link的信息生成。查看安装的k8s相关的包rpm -qa | grep kube5. 准备镜像k8s组件及网络插件calico及界面管理工具kuboard加载k8s集群镜像在镜像所在的文件夹执行下面的命令给dockerload.sh文件添加执行权限并运行chmod x dockerload.sh ./dockerload.sh查看镜像加载结果docker imagesk8s.gcr.io/coredns需要重打标签docker tag k8s.gcr.io/coredns:1.8.6 k8s.gcr.io/coredns/coredns:v1.8.6最终镜像结果如下6. 在master上操作创建集群kubeadm init \ --kubernetes-versionv1.23.4 \ --pod-network-cidr10.244.0.0/16 \ --service-cidr10.96.0.0/12 \ --apiserver-advertise-address192.168.0.190出现集群创建成功按照提示进行操作mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config7. 在node1上操作把创建集群最下面的命令粘贴过来kubeadm join..... //每个人的都不一样请复制自己的出现可以使用kubectl get nodes查看节点信息证明集群初步搭建好了另外加入节点时需要相应的kubeadm join命令可能会有没有及时记下集群初始化的命令或者过了几天后又需要增加节点的情况临时生成的token只有24小时时效使用kubeadm token list查看token没有结果时说明token过期需要重新生成kubeadm token create --print-join-command 生成临时的token,若生成永久token再加上 --ttl0报错ipv4的问题请修改net.ipv4.ip_forward0需要将其值改为1具体修改在/proc/sys/net/ipv4/ip_forward文件8. 在master上查看节点信息kubectl get nodes -o wide至此初步搭建好集群master和node1的状态为Notready原因是未安装网络插件。9. 安装网络插件calico请按照自己的镜像包名字进行docker load加载calico镜像在masternode1上均加载docker load calico-kube-controllers.tar docker load calico-pod2daemon-flexvol.tar docker load calico-node.tar docker load calico-cni.tar基于进行安装在master上执行即可在该文件所在目录下执行kubectl apply -f calico.yamlps:部署的时候由于服务器是多网卡不是很顺利因此指定了calico的网卡使用的话请注意修改为你自己的网卡名称。稍等一会查看节点状态可以先看一下组件的状态kubectl get pod -n kube-systemPs: 组件的状态为“初始化”或“容器在创建”时表示服务在启动过程中不用着急继续等一会状态会变为running说明k8s集群及组件服务都正常工作了。组件的状态为“镜像拉取失败”等内容说明配置有问题或者镜像版本不匹配具体可以使用命令查看kubectl describe pod pod名称 -n kube-system拉取镜像太慢导致net/http:TLS handshake timeout错误重启docker服务service docker restartpod状态为running后查看节点的状态kubectl get nodes 或 kubectl get nodes -o wide此时应该为ready不代表部署成功了还是要看看kube-system下pob的状态ready不代表部署成功了还是要看看kube-system下pob的状态不要着急状态不是running多等一会再次查看直到所有组件的服务都为runningkubectl get pod -n kube-system 或 kubectl get pod --all-namespaces -o wide10.安装界面化管理工具在安装的节点上加载kuboard镜像,metrics-server的镜像包每个节点上都要有docker load kuboard.tar docker load metrics-server_v0.5.0.tarPs: yaml文件对空格非常敏感尽量不要动原始内容不要随便点空格安装在master上执行kubectl apply -f kuboard-v3.yamlKuboard-v3版本使用默认的账号密码登录账号admin密码Kuboard123访问方式http://192.168.0.190:30080将下面的命令信息粘贴到master上会生成kuboard-agent.yaml文件安装文件kubectl apply -f kuboard-agent.yaml集群没有成为已就绪状态执行该页面验证命令Metrics-server是集群核心监控数据的聚合器通俗的说它存储了集群中各节点的监控数据并且提供了API以供分析和使用。Metrics-server在kubernetes集群中表现为一个deployment对象。不过准确的说它是deploymentserviceclusterrole,clusterrolebinding,apiservice,rolebinding资源对象的综合体。Metrics-server的主要作用为为kube-scheduler,HorizontalPodAutoscaler等k8s核心组件以及kubectl top命令和dashboard等UI组件提供数据来源。在master上执行kubectl apply -f metrics-server-v0.5.0.yaml污点Master一般默认作为调度节点让其工作的话 将master作为node加入nodekubectl taint nodes --all node-role.kubernetes.io/master-给master打上污点NoSchedule一定不能被调度kubectl taint nodes k8s-master1 node-role.kubernetes.io/masterNoSchedule-查看污点kubectl describe node k8s-master1 | grep Taints最终部署好的k8s通过可视化管理工具kuboard查看结果总结k8s离线部署也是趟了n多坑至今还会遇到各种问题希望可以和谐的与大家共同探讨、学习与进步撒花~~~~可以正确安装的话希望可以点个赞非常感谢~~~如果需要上述的安装包的话请移步k8s-v1.23.4-arm版本的离线包-kubernetes文档类资源-CSDN下载PS: 需要的人多的话每个人都发邮箱实在有些麻烦我有点懒不介意的话可以用几个积分下载一下。