Install Docker
sudo yum install -y yum-utils
sudo yum-config-manager
--add-repo
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docke
Container Runtimes Setup
我們需要先幫 K8S 建立與 Docker 的中介層,官方目前提供三種做法,我們採用
CRI-O:
- Containerd
- CRI-O
- docker
# Create the .conf file to load the modules at bootup
cat <<EOF | sudo tee /etc/modules-load.d/crio.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter
# Set up required sysctl params, these persist across reboots.
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
sudo sysctl --system
完成上面的設定後,開始安裝 CRI-O
# your centos version
export OS=CentOS_8
# CRI-O version
export VERSION=1.20:1.20.0
sudo curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/$OS/devel:kubic:libcontainers:stable.repo
sudo curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:$VERSION.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:$VERSION/$OS/devel:kubic:libcontainers:stable:cri-o:$VERSION.repo
sudo yum install cri-o
sudo systemctl daemon-reload
sudo systemctl enable crio --now
Installing kubeadm
透過 kubeadm 可以快速建立 cluster 主節點,後續即可透過 join cluster 的方式將
worker node 加入集群
Disable SWAP
swapoff -a
# 將 swap 那一行注解
vim /etc/fstab
#/dev/mapper/cl-swap none swap defaults 0 0
Letting iptables see bridged traffic
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system
Installing kubeadm, kubelet and kubectl
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-$basearch
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF
# Set SELinux in permissive mode (effectively disabling it)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
sudo systemctl enable --now kubelet
以下為 Master Node 執行即可--
Initializing your control-plane node
kubeadm init
如果看到以下的成功訊息,代表建置成功。
將 kubeadm join 的指令保存,之後可在其他 worker node 上執行加入 cluster。
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a Pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
/docs/concepts/cluster-administration/addons/
You can now join any number of machines by running the following on each node
as root:
kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash>
如果是 root 用戶,可以用以下指令設定 kubeconfig 的路徑。
否則就按照上述的 regular user 的三行指令操作。
export KUBECONFIG=/etc/kubernetes/admin.conf
Install CNI (Network Plugin)
k8s cluster container 所需要的溝通媒介。
可以從
https://kubernetes.io/docs/concepts/cluster-administration/addons/
找需要 Plugin,這邊以 weave net 為例:
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d 'n')"
Worker Node 安裝 K8S 完成後,執行 kubeadm join 指令,並於 master node 查看
cluster node 狀態:
kubectl get nodes
NAME STATUS ROLES AGE VERSION
crt-centos Ready control-plane,master 2d21h v1.22.2
ubuntu Ready <none> 2d6h v1.22.2
想看更多主題嗎? 聯絡我們