Kubeadm Init K8S

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

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

Transfer docker image to containerd format
【containerd-1.2.x】

# ctr cri load IMAGE.tar

【containerd-1.3.x】

ctr --namespace=k8s.io image import IMAGE.tar

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

  1. Flannel Network
# kubectl apply -f kube-flannel.yaml
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章