本文将讲述 kubernates:1.27.2 + 容器运行时containerd:1.6 + 网络插件flannel 的安装
本文用到的环境是:
- 2台腾讯云服务器。
- 系统是腾讯魔改centos
- 内核版本5.4.x
注:centos7.6 + kernel3.10.x 也是可以安装的,其他环境请自行尝试
正片==========================================================
master + node 节点都要操作
-
在每个节点上添加
hosts信息# vim /etc/hosts,修改成自己对应内网ip 10.0.4.13 k8s-master 10.0.4.15 k8s-node01 -
禁用防火墙,云服务器无视
# 查看防火墙运行状态 firewall-cmd --state # 关闭防火墙 systemctl stop firewalld # 下次开机不启动防火墙 systemctl disable firewalld -
禁用
SELinux,云服务器无视# 查看SELinux状态 sestatus # 禁用SELinux setenforce 0 # 3.下次开机不启动SELinux,3和4任选一种 sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config # 4.下次开启设置SELINUX为宽容模式 sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config -
同步服务器时间,云服务器无视
yum install chrony -y systemctl enable chronyd systemctl start chronyd chronyc sources -
关闭
swap分区,云服务器无视swapoff -a # 确认swap已经关闭,表格中Swap行全部为0 free -m -
开启网络桥接功能和 IP 转发功能,
vm.swappiness = 0是关闭swapcat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 vm.swappiness = 0 EOF # 使k8s.conf生效 modprobe br_netfilter sysctl -p /etc/sysctl.d/k8s.conf -
安装
ipvs# 查看系统内核 uname -r # Linux Kernel 3.10+ cat > /etc/sysconfig/modules/ipvs.modules <<EOF #!/bin/bash modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack_ipv4 EOF chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4 # Linux Kernel 5+ cat > /etc/sysconfig/modules/ipvs.modules <<EOF #!/bin/bash modprobe -- ip_vs modprobe -- ip_vs_rr modprobe -- ip_vs_wrr modprobe -- ip_vs_sh modprobe -- nf_conntrack EOF chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack -
安装
containerd# 安装 Containerd yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y containerd.io这里 yum 安装的 containerd 不是最新版本的,最新版本需要在 github 上下载
-
创建
containerd配置文件# 创建containerd配置文件 mkdir -p /etc/containerd containerd config default > /etc/containerd/config.toml # 替换配置文件 sed -i -e 's#k8s.gcr.io#registry.aliyuncs.com/google_containers#g' \ -e 's/SystemdCgroup = false/SystemdCgroup = true/' \ -e 's#https://registry-1.docker.io#https://registry.aliyuncs.com#g' \ -e 's|registry.k8s.io/pause:3.6|registry.aliyuncs.com/google_containers/pause:3.9|' \ /etc/containerd/config.toml # 启动 Containerd systemctl start containerd && systemctl enable containerd # 查看运行状态 systemctl status containerd # 查看日志 journalctl -u containerd -b -
安装
Kubernetes# Kubernetes源替换成阿里源 cat > /etc/yum.repos.d/k8s.repo <<EOF [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=0 repo_gpgcheck=0 gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF # 安装Kubernetes组件 yum install -y kubelet-1.27.2 kubeadm-1.27.2 kubectl-1.27.2 # 开启cgroup vim /etc/sysconfig/kubelet KUBELET_EXTRA_ARGS="--cgroup-driver=systemd" # 启动 kubelet systemctl enable kubelet && systemctl start kubelet # 查看状态 systemctl status kubelet # 查看日志 journalctl -xeu kubelet
以下是master节点的操作
-
初始化
Master的配置文件,这里选择用yml的方式进行配置# 导出默认配置 kubeadm config print init-defaults > kubeadm.yaml # 修改kubeadm.yaml # 修改下面 key - value advertiseAddress: master的内网ip imageRepository: registry.aliyuncs.com/google_containers kubernetesVersion: 1.27.2 # networking下添加 podSubnet: 10.244.0.0/16 -
初始化
Masterkubeadm init --config=kubeadm.yaml # 如果init失败,清除初始化 kubeadm reset -
设置
kubectl的配置文件mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config # 查看nodes [root@VM-4-13-opencloudos ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION node NotReady control-plane 9m13s v1.27.2 -
安装网络插件,这里选择
flannelcilium:github.com/cilium/cili…
flannel:github.com/flannel-io/…
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml # 检查 Flannel Pod 的状态。 kubectl get pods -n kube-system
node节点加入集群
kubeadm join 10.0.4.13:6443 --token 123 --discovery-token-ca-cert-hash sha256:456
# 如果忘记,在主节点重新生成join语句
kubeadm token create --ttl 0 --print-join-command
# 最后在主节点查看一下node
kubectl get nodes