今天將會使用Bare Metal(裸機)進行Kubernetes(以下簡稱k8s)的部署。本次鐵人賽使用k8s 1.18版本,ubuntu 20.04版本。
由於free5gmano的資源使用量較大,因此建議RAM最好是大於4GiB,我用4GiB的電腦會跑不動,後來改用8Gib的才跑得動。
第一步,下載k8s相關元件。
sudo apt-get update
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 list -a kubeadm
可以使用apt list查詢kubeadm的版本,本次使用kubeadm=1.18.0-00,kubectl版本不可高於kubeadm。
install kubelet及kubeadm和kubectl
apt-get install -y kubelet=1.18.0-00 kubeadm=1.18.0-00 kubectl=1.18.0-00
第二步,設定Docker的daemon文件
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
# docker默認cgroupfs,k8s自帶推薦的systemd,不更改會導致出現兩個cgroup管理器可能發生資源控制危機
"log-driver": "json-file", #將docker輸出日誌驅動設為json-file
"storage-driver": "overlay2"
}
EOF
mkdir -p /etc/systemd/system/docker.service.d
systemctl daemon-reload
systemctl restart docker
第三步,開始部署叢集
swapoff -a #關閉linux swap
kubeadm init --pod-network-cidr=10.244.0.0/16 #這邊可以決定k8s的pod的IP分佈
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
使用Flannel CNI
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
解除主節點預設的污點:
kubectl taint nodes <your node name> node-role.kubernetes.io/master=true:NoSchedule-
node的名稱可以透過下面程式找到:
kubectl get node
這裡已將k8s的需求解決,下一步就要開始進入free5GC相關元件部署了。