前情提要
k8s高版本已经不支持docker使用,建议使用containerd 本教程使用openEuler22.03-LTS操作系和k8s的1.20版本为例
准备环境
cat >>/etc/hosts<<EOF
192.168.100.16 k8s-master
192.168.100.17 k8s-node01
EOF
swapoff -a
# 防止开机自动挂载 swap 分区
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
sed -ri 's#(SELINUX=).*#\1disabled#' /etc/selinux/config
setenforce 0
systemctl disable firewalld && systemctl stop firewalld
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
vm.max_map_count=262144
EOF
modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://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
cat <<EOF > /etc/yum.repos.d/docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - x86_64
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo x86_64
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/debug-x86_64/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/source/stable
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-test]
name=Docker CE Test - x86_64
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo x86_64
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/debug-x86_64/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/source/test
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-nightly]
name=Docker CE Nightly - x86_64
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo x86_64
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/debug-x86_64/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
[docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8/source/nightly
enabled=0
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
EOF
yum clean all && yum makecache
安装kube
yum install kubernetes-cni-1.2.0-0.x86_64 kubelet-1.20.15-0.x86_64 kubectl-1.20.15-0.x86_64 kubeadm-1.20.15-0.x86_64 -y
yum install containerd.io -y
systemctl enable kubelet --now
systemctl daemon-reload
systemctl restart containerd
systemctl enable containerd
containerd config default > /etc/containerd/config.toml
vim /etc/containerd/config.toml
修改成SystemCgroup
SystemdCgroup = true
修改pause镜像
sandbox_image = "dyrnq/pause:3.2"
修改runtime_type
runtime_type = "io.containerd.runtime.v1.linux"
假如需要把默认的cgroupfs改成systemdfs的话(此步骤非必需)
[root@2203-16 ~]# cat /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
[root@2203-16 ~]# vim /etc/containerd/config.toml
...
systemd_cgroup = true
...
# 重启containerd
systemctl restart containerd
添加crictl.yaml
cat <<EOF > /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 2
debug: false
pull-image-on-create: true
EOF
拉取镜像并init
systemctl daemon-reload
systemctl restart containerd
kubeadm config images pull --kubernetes-version=v1.20.15 --image-repository=dyrnq
ctr -n k8s.io image pull docker.io/coredns/coredns:1.7.0
ctr -n k8s.io image tag docker.io/coredns/coredns:1.7.0 docker.io/dyrnq/coredns:1.7.0
(只在master节点操作)
kubeadm init --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.20.15 --image-repository=dyrnq --image-repository=registry.aliyuncs.com/google_containers
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
添加node节点
kubeadm token create --print-join-command
flannel安装
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
ctr -n docker.io images import flannel151.tar
ctr -n k8s.io images import flannel0254.tar
vi kube-flannel.yml # 修改cpu和内存的限制大小
kubectl apply -f kube-flannel.yml
重置kubelet环境
kubeadm reset