目录

环境说明

环境初始化

1.主机名解析

2.时间同步(麒麟系统自带了chronyd)

3.禁用iptables和firewalld

4. 禁用selinux(linux下的一个安全服务,必须禁用)

5.禁用swap分区(主要是注释最后一行)

6.修改系统的内核参数

7.配置ipvs功能

8.重启服务器

安装docker(略)

安装k8s

k8s组件

准备镜像 

master操作

在node上操作

安装网络插件calico 


环境说明

麒麟系统的内核: 4.19.90-25.2.v2101.gfb01.ky10.aarch64

Docker : v 20.10.7

k8s:v1.23.4

另外,k8s部署的服务器内存建议预留大一些。

准备相关的包:ipvsadm包(ipvsadm),

docker的二进制包(docker-二进制包),

k8s组件的rpm包(k8s-rpm),

k8s相关的镜像文件(k8s-image),

k8s环境的依赖项(k8s-dependency),

配置文件(yaml),

搭建本地仓库的镜像包(registry-image)

未部署过k8s的环境,在部署过程中系统会提示缺少一些依赖项,相关的依赖项放置在k8s-dependency中。

       本次部署基于两台银河麒麟v10计算机,一台作为k8s的调度节点master,一台作为k8s的工作节点node

环境初始化

环境初始化可脚本化

1.主机名解析

vim /etc/hosts
192.168.0.190 master
192.168.0.193 node

2.时间同步(麒麟系统自带了chronyd)

systemctl start chronyd      //开启时间同步
 
systemctl enable chronyd     //设置时间同步开机自启
 
date    //验证

3.禁用iptables和firewalld

systemctl stop firewalld
 
systemctl disable firewalld
 
systemctl stop iptables
 
systemctl disable iptables

4. 禁用selinux(linux下的一个安全服务,必须禁用)

vim /etc/selinux/config
 
SELINUX=disabled  

5.禁用swap分区(主要是注释最后一行)

vim /etc/fstab
 
 UUID=455cc753-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_netfilter

7.配置ipvs功能

在kubernetes中service有两种代理模型,一种是基于iptables的,一种是基于ipvs的,

两者比较的话,ipvs的性能明显要高一些,但是如果要使用它,需要手动载入ipvs模块。

麒麟系统自带了Ipset,因此安装ipvsadm:

rpm -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_conntrack

8.重启服务器

上述操作修改了很多系统的配置文件,必须重启,不能省略。

安装docker(略)

安装k8s

k8s组件

rpm -ivh *.rpm 

可能会提示缺少conntrack和socat依赖项:

 需要安装k8s-dependency下的包:

rpm -ivh *.rpm --nodeps --force

重新安装k8s的组件rpm包:

rpm -ivh *.rpm

vim /etc/sysconfig/kubelet
KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"  #亲测主必须使用systemd,不然后续初始化会报错
KUBE_PROXY_MODE="ipvs"

KUBELET_CGROUP_ARGS="--cgroup-driver=cgroupfs"  #从
KUBE_PROXY_MODE="ipvs

设置kubelet开机自启

systemctl enable kubelet
rpm -qa | grep kube

准备镜像 

(k8s组件及网络插件calico及界面管理工具kuboard)

加载k8s集群镜像(在镜像所在的文件夹执行下面的命令):

给dockerload.sh文件添加执行权限并运行:

chmod +x dockerload.sh
./dockerload.sh

docker images查看镜像加载结果:

k8s.gcr.io/coredns需要重打标签:

docker tag k8s.gcr.io/coredns:1.8.6 k8s.gcr.io/coredns/coredns:v1.8.6

master操作

创建集群:

kubeadm init \

--kubernetes-version=v1.23.4 \

--pod-network-cidr=10.244.0.0/16 \

--service-cidr=10.96.0.0/12 \

--apiserver-advertise-address=192.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/config

在node上操作

把创建集群最下面的命令粘贴过来

出现可以使用kubectl get nodes查看节点信息证明集群初步搭建好了

另外加入节点时,需要相应的kubeadm join命令,可能会有没有及时记下集群初始化的命令或者过了几天后又需要增加节点的情况,临时生成的token只有24小时时效,使用kubeadm token list查看token没有结果时,说明token过期,需要重新生成:

kubeadm token create --print-join-command (生成临时的token,若生成永久token,再加上 --ttl=0)

 net.ipv4.ip_forward=0需要将其值改为1,具体修改在/proc/sys/net/ipv4/ip_forward文件

安装网络插件calico 

加载calico镜像(在master,node1上均加载):

docker load < calico_cni_v3.22.0.tar
docker load < calico_kube-controllers_v3.22.0.tar
docker load  < calico_node_v3.22.0.tar
docker load  < calico_pod2daemon-flexvol_v3.22.0.tar
docker load -i coredns_v1.8.6.tar
kubectl apply -f calico.yaml

kubectl get pod -n kube-system

 

完成 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐