Set kubelet and containerd’s Proxy
services="kubelet containerd docker"
for service in ${services}; do
service_dir="/etc/systemd/system/${service}.service.d/"
sudo mkdir -p ${service_dir}
cat << EOT | sudo tee "${service_dir}/http-proxy.conf"
[Service]
Environment="HTTP_PROXY=${http_proxy}"
Environment="HTTPS_PROXY=${https_proxy}"
Environment="NO_PROXY=${no_proxy}"
EOT
done
Shutdown firewalld
# ufw disable
OR
# systemctl stop firewalld
# systemctl disable firewalld
Disable Selinux
# setenforce 0
# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
Disable SWAP
# swapoff -a
# sed -i '/swap/ s/^/#/' /etc/fstab
Config Ip_forward
# cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
# modprobe br_netfilter
# sysctl -p /etc/sysctl.d/k8s.conf
# sysctl --system
[Option] Enable May_detach_mounts
# cat <<EOF | sudo tee /etc/sysctl.d/maydetachmounts.conf
fs.may_detch_mounts=1
EOF
# sysctl -p /etc/sysctl.d/maydetachmounts.conf
# sysctl --system
Setup Containerd
# wget https://github.com/containerd/containerd/releases/download/v1.3.2/containerd-1.3.2.linux-amd64.tar.gz
# tar xvf containerd-1.3.2.linux-amd64.tar.gz -C /usr/local/
Setup RunC
# wget -O /usr/local/sbin/runc https://github.com/opencontainers/runc/releases/download/v1.0.0-rc10/runc.amd64
# chmod +x /usr/local/sbin/runc
Setup Cri-tools
# VERSION="v1.17.0"
# wget https://github.com/kubernetes-sigs/cri-tools/releases/download/$VERSION/crictl-$VERSION-linux-amd64.tar.gz
# tar -xvf crictl-$VERSION-linux-amd64.tar.gz -C /usr/loca/bin
CONFIG CRICTL.yaml
# cat <<EOF | sudo tee /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: true
EOF
Configure Containerd.Service
curl -o /etc/systemd/system/containerd/containerd.service https://github.com/containerd/containerd/blob/master/containerd.service
# systemctl daemon-reload
# systemctl enable containerd
# systemctl start containerd
# systemctl status containerd
Verify Containerd and RunC
# containerd --version
# crictl --version
# runc --version
Setup Kubeadm/Kubelet/Kubectl
# apt-get update && apt-get install -y apt-transport-https curl
# curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
# cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
# apt-get update
# apt-get install -y kubelet kubeadm kubectl
# apt-mark hold kubelet kubeadm kubectl
OR
# apt-get update && apt-get install -y apt-transport-https
# curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
#cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
# apt-get update
# apt-get install -y kubelet kubeadm kubectl
Configure Kubelet
# cat <<EOF | sudo tee /etc/systemd/system/kubelet.service.d/0-containerd.conf
[Service]
Environment="KUBELET_EXTRA_ARGS=--container-runtime=remote --runtime-request-timeout=15m --container-runtime-endpoint=unix:///run/containerd/containerd.sock"
EOF
# systemctl daemon-reload
# systemctl restart kubelet
Pull IMages
Containerd ctr client pull container image
ctr --namespace=k8s.io image pull docker.io/library/debian:10
(1)Transfer docker image to containerd format
【containerd-1.2.x】
# ctr cri load IMAGE.tar
【containerd-1.3.x】
Format CMD: ctr --namespace=k8s.io image import IMAGE.tar
(2)Transfer ctr image to docker format
【containerd-1.3.x】
Format CMD: ctr --namespace=k8s.io image export IMAGE.tar IMAGE
# ctr --namespace=k8s.io image export ubuntu-18.04.tar docker.io/library/ubuntu:18.04
Prepull Container Images
# kubeadm config images pull
Unset Proxy
Here, before Initialize K8S Cluster, You should Unset HTTP_PROXY and HTTPS_PROXY.
# unset http_proxy
# unset https_proxy
# unset no_proxy
Init Cluster
## Initialize K8S Cluster
```bash
# kubeadm init --ignore-preflight-errors=all --cri-socket /run/containerd/containerd.sock --pod-network-cidr=10.244.0.0/16 --kubernetes-version=1.13.0
Configure K8S
# mkdir -p $HOME/.kube
# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
# sudo chown $(id -u):$(id -g) $HOME/.kube/config
Setup Pod Network
- Flannel Network
# kubectl apply -f kube-flannel.yaml