2020年10月30日 星期五

Install Kubernetes Cluster With CRI-O: Part3 Install kubeadm init

 在三台主機做Kubernetes Cluster的情境下
(Version = 1.18.3)
192.168.53.204  k8s-master  ---CentOS 7.8
192.168.53.205  k8s-node1   ---CentOS 7.8
192.168.53.206  k8s-node2   ---CentOS 7.8


1. 配置Cluster on Master

kubeadm init --cri-socket="/var/run/crio/crio.sock"  --apiserver-advertise-address=192.168.53.204  --kubernetes-version=v1.18.3  --pod-network-cidr=10.244.0.0/16 --service-cidr=10.1.0.0/16

init的過程中會產出--token 和 --discovery-token-ca-cert-hash,需要複製起來以便加入node


2. 按照init輸入下列指令

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config


3. 配置CNI Plugin (flannel)

https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml


4.查看節點

kubectl get nodes


kubectl get all -n kube-system


參考:
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init/#config-file
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/#pod-network
https://github.com/coreos/flannel#flannel



2020年10月29日 星期四

Install Kubernetes Cluster With CRI-O: Part2 Install kubeadm / kubelet / kubectl

在三台主機做Kubernetes Cluster的情境下
(Version = 1.18.3)
192.168.53.204  k8s-master  ---CentOS 7.8
192.168.53.205  k8s-node1   ---CentOS 7.8
192.168.53.206  k8s-node2   ---CentOS 7.8


1. 新增sysctl配置 

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

sysctl --system

2. 關閉SWAP 和 Selinux

swapoff -a 

編輯/etc/fstab , 並註解swap的配置

setenforce 0

sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

3.新增hosts

在/etc/hosts上新增

192.168.53.204  k8s-master
192.168.53.205  k8s-node1 
192.168.53.206  k8s-node2

4. 新增kubernetes Repo

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=http://packages.cloud.google.com/yum/doc/yum-key.gpg http://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF


5.安裝 kubeadm / kubelet  / kubectl 

yum install kubeadm-1.18.3-0 kubectl-1.18.3-0 kubelet-1.18.3-0 --disableexcludes=kubernetes


6. 調整cgroup配置 (預設是吃 docker的cgroup , 使用CRI-O要改配置)

修改 /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf




修改後
Environment="KUBELET_CGROUP_ARGS=--cgroup-driver=systemd"
ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS $KUBELET_CGROUP_ARGS


7. 啟動服務 kubelet

systemctl daemon-reload
systemctl start kubelet
(因為使用CRI-O啟動會失敗, kubeadm init後就會正常)



參考:
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
https://blog.csdn.net/twingao/article/details/105382305
https://ithelp.ithome.com.tw/articles/10209357




Install Kubernetes Cluster With CRI-O: Part1 Install CRI-O

在三台主機做Kubernetes Cluster的情境下
(Version = 1.18.3)
192.168.53.204  k8s-master  ---CentOS 7.8
192.168.53.205  k8s-node1   ---CentOS 7.8
192.168.53.206  k8s-node2   ---CentOS 7.8



#先從k8s-master 安裝CRI-O

1.開啟模組

modprobe overlay
modprobe br_netfilter

2.新增sysctl配置

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

sysctl --system


3.加入CRI-O Repo (1.18.3) & 安裝 CRI-O

curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/CentOS_7/devel:kubic:libcontainers:stable.repo

curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable:cri-o:1.18:1.18.3.repo https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable:cri-o:1.18:1.18.3/CentOS_7/devel:kubic:libcontainers:stable:cri-o:1.18:1.18.3.repo

yum install cri-o


4. 開啟服務

systemctl enable crio
systemctl start crio



參考文件:
https://kubernetes.io/docs/setup/production-environment/container-runtimes/