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
想看更多主題嗎? 聯絡我們