Ubuntu下基于 Cilium CNI 的 Kubernetus集群环境搭建

1. 前言

本文将从零开始,安装三个Ubuntu,部署一个Kubernetus集群,安装Cilium作为网络CNI,并进行验证。Kubernetus集群包含三个节点,其中一个Master Node,两个 Worker Node,下面开始搭建环境。

2. 安装三个Ubuntu

此过程已经发过很详细博客,在此不再赘述,完成安装后,需要在三台机器上做以下配置:

安装Ubuntu详细博客:
https://blog.csdn.net/qq_34258344/article/details/101175849

2.1 三个机器都关闭防火墙

sudo  ufw disable

2.2 三个机器都关闭swap

sudo vim /etc/fstab

在这里插入图片描述
注释第二行,保存退出,使用free -h命令进行验证,全为0,则说明关闭成功:
在这里插入图片描述

2.3 三个机器都关闭selinux

如果开启过selinux,关闭selinux。

3. 部署Kubernetus集群

3.1 安装 kubeadm、kubelet和kubectl

接下来需要在三个Ubuntu上同时安装kubeadm、kubelet和kubectl:

kubeadm:引导集群的命令。
kubelet:在集群中所有计算机上运行的组件,它执行诸如启动Pod和容器之类的操作。
kubectl:用于与集群通信的命令行工具。

更新 apt 包索引并安装使用 Kubernetes apt 仓库所需要的包:

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl

下载 Google Cloud 公开签名秘钥:

sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

添加 Kubernetes apt 仓库:

echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

更新 apt 包索引,安装 kubelet、kubeadm 和 kubectl,并锁定其版本:

sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

3.2 安装 Docker

三个Ubuntu同时安装Docker,如果安装过名字像docker, docker.io或 docker-engine的旧版本docker,可以先卸载:

sudo apt-get remove docker docker-engine docker.io containerd runc

更新apt软件包索引并安装依赖:

sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

添加Docker的官方GPG密钥:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

设置稳定的存储库:

echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

更新apt程序包索引,安装最新版本的Docker Engine:

 sudo apt-get update
 sudo apt-get install docker-ce docker-ce-cli containerd.io

运行hello-world 镜像来验证是否正确安装了Docker Engine :

sudo docker run hello-world

运行成功时显示如下页面:
在这里插入图片描述
配置Docker,主要包括两部分:

  • 切换docker下载源为国内镜像站
  • 修改cgroups
    cgroups可以理解为进程隔离工具,docker就是用它来实现容器的隔离的。docker 默认使用的是cgroupfs,而 k8s 也用到了一个进程隔离工具systemd,使用两个隔离组可能会引起异常,所以需要把 docker 的也改成systemd。
sudo vi /etc/docker/daemon.json

添加以下内容:

{
  "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://reg-mirror.qiniu.com",
    "https://quay-mirror.qiniu.com"
  ],
  "exec-opts": [ "native.cgroupdriver=systemd" ]
}

重启Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

验证是否修改成功:

docker info | grep Cgroup

修改成功后显示如下页面:
在这里插入图片描述

3.3 初始化 Master Node

因为我们完全用Cilium作为Kubernetus集群的网络方案,所以初始化 Master Node时不使用kube-proxy

kubeadm init --skip-phases=addon/kube-proxy

初始化成功后显示如下页面:
在这里插入图片描述

注意,要保存上图第二个红框中的命令,节点加入集群中会用到。

如果想要重新初始化Master Node,可以使用kubeadm reset命令重置。

3.4 集群中添加 Worker Node

在Worker Node 上输入上述记录的命令加入集群:

sudo kubeadm join 192.168.163.134:6443 --token ll99lj.zsmf41thl92pijxx --discovery-token-ca-cert-hash sha256:05f732fad86c340fae4160cc99a115f6e1c14a158d5e02dece79f6d3e2ddffe2

加入成功后显示如下页面:
在这里插入图片描述
如果忘了记录加入集群的命令,也可以在Master节点使用如下命令重新生成,然后用它在Worker节点上加入集群:

kubeadm token create --print-join-command

所有节点加入集群后,接下来安装Cilium。

4. 安装Cilium

4.1 安装Helm

Master节点上依次执行以下命令:

curl https://baltocdn.com/helm/signing.asc | sudo apt-key add -
sudo apt-get install apt-transport-https --yes
echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

安装helm库:

helm repo add cilium https://helm.cilium.io/

4.2 安装Cilium

接下来,生成所需的YAML文件并进行部署。

helm install cilium cilium/cilium --version 1.9.6 \
    --namespace kube-system \
    --set kubeProxyReplacement=strict \
    --set k8sServiceHost=REPLACE_WITH_API_SERVER_IP \
    --set k8sServicePort=REPLACE_WITH_API_SERVER_PORT

注意:更换 REPLACE_WITH_API_SERVER_IPREPLACE_WITH_API_SERVER_PORT为具体控制平面节点的IP地址和KUBE-API服务器的端口。

我执行的命令如下:

helm install cilium cilium/cilium --version 1.9.6 \   
	--namespace kube-system \    
	--set kubeProxyReplacement=partial \    
	--set k8sServiceHost=192.168.163.134 \    
	--set k8sServicePort=6443 \  
	--set hostServices.enabled=true \  
	--set hostServices.protocols=tcp

处理报错时多加了一些参数,参数具体信息可以参考这个cilium配置文档:
https://docs.cilium.io/en/v1.9/gettingstarted/host-services/

成功安装Cilium后,显示如下界面:
在这里插入图片描述

如果需要卸载Cilium,可以使用以下命令:helm uninstall cilium -n kube-system

4.3 验证Cilium

验证Cilium是否在所有节点上正确启动:

kubectl -n kube-system get pods -l k8s-app=cilium

STATUS状态为Running时,表示Cilium已经正确启动:
在这里插入图片描述
查看节点信息:

kubectl get nodes

在这里插入图片描述
查看pod信息:

kubectl get pod -n kube-system

在这里插入图片描述
查看日志:

kubectl logs cilium-nb545 -n kube-system --previous

5. 总结

搭建整个过程还是比较繁琐的,如果有一个环节出了问题,还是不容易搭建成功的,本文总结了较为方便的Kubernetus和Cilium搭建环境方法,如果要使用Cilium的全部功能,必须将内核升级到4.19以上,感谢阅读。

参考资料:
https://blog.csdn.net/qq_34258344/article/details/101175849
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/
https://docs.cilium.io/en/v1.9/gettingstarted/#installation
https://helm.sh/docs/intro/install/
https://www.1nth.com/post/k8s-network-cilium/
https://www.jianshu.com/p/f2d4dd4d1fb1
https://docs.docker.com/engine/install/ubuntu/

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值