Ubuntu下基于 Cilium CNI 的 Kubernetus集群环境搭建
Ubuntu下基于 Cilium CNI 的 Kubernetus集群环境搭建
- 1. 前言
- 2. 安装三个Ubuntu
- 2.1 三个机器都关闭防火墙
- 2.2 三个机器都关闭swap
- 2.3 三个机器都关闭selinux
- 3. 部署Kubernetus集群
- 3.1 安装 kubeadm、kubelet和kubectl
- 3.2 安装 Docker
- 3.3 初始化 Master Node
- 3.4 集群中添加 Worker Node
- 4. 安装Cilium
- 4.1 安装Helm
- 4.2 安装Cilium
- 4.3 验证Cilium
- 5. 总结
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_IP
和REPLACE_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/
Ubuntu下基于 Cilium CNI 的 Kubernetus集群环境搭建相关推荐
- (超详细)基于Zookeeper的Hadoop HA集群的搭建
基于Zookeeper的Hadoop HA集群的搭建 JunLeon--go big or go home 前言: 高可用(high availability,HA)指的是若当前工作中的机器宕机了,系 ...
- kubernetes集群环境搭建(kubeadm方式)
1. kubernetes简介 kubernetes,是一个全新的基于容器技术的分布式架构领先方案,是谷歌严格保密十几年的秘密武器----Borg系统的一个开源版本,于2014年9月发布第一个版本,2 ...
- Kubernetes集群环境搭建详细教程(一主两从)
Kubernetes集群环境搭建详细教程(一主两从) 1.1 安装要求 在开始之前,部署Kubernetes 集群机器需要满足以下几个条件: 一台或多台机器,操作系统CentOS7.x-86_x64 ...
- Kubernetes1.24版本高可用集群环境搭建(二进制方式)
背景: 虽然kubeadm方式安装集群更加简单些,配置相对比较少,但是生产环境还是建议二进制的方式安装,因为二进制的方式kubernetes的kube-apiserver.kube-controlle ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十一)NIFI1.7.1安装
一.nifi基本配置 1. 修改各节点主机名,修改/etc/hosts文件内容. 192.168.0.120master192.168.0.121slave1192.168.0.122 slave2 ...
- 学习笔记之-Kubernetes(K8S)介绍,集群环境搭建,Pod详解,Pod控制器详解,Service详解,数据存储,安全认证,DashBoard
笔记来源于观看黑马程序员Kubernetes(K8S)教程 第一章 kubernetes介绍 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署 ...
- RabbitMQ集群环境搭建
RabbitMQ集群环境搭建 一.安装基础工具包 二:安装Erlang和RabbitMQ 1. 安装Erlang 2. 安装RabbitMQ 3. 启动RabbitMQ 4. 启动RabbitMQ管理 ...
- 大数据第一天 Hadoop01-入门集群环境搭建
Hadoop01-入门&集群环境搭建 今日内容 Hadoop的介绍 集群环境搭建准备工作 Linux命令和Shell脚本增强 集群环境搭建 大数据概述 大数据: 就是对海量 ...
- 大数据介绍、集群环境搭建、Hadoop介绍、HDFS入门介绍
大数据介绍.集群环境搭建.Hadoop介绍.HDFS入门介绍 文章目录 大数据介绍.集群环境搭建.Hadoop介绍.HDFS入门介绍 1.课前资料 2.课程整体介绍 3.大数据介绍 3.1 什么是大数 ...
最新文章
- 【SpringBoot】SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener
- JS 数字左补零函数
- opencv读取图片、视频、摄像头
- 第18次csp认证 201912-2 回收站选址(C++)
- mysql 端口 telnet 不通_3306端口不通,不一定是网络的问题
- mqtt 获取 状态_MQTT设备接入及上报数据的命令行模拟器(Java)
- microsoft visual c++全家桶_“网蓝”盒子咖啡新品来袭!顺德第①桶MINI冰摇咖啡,可以背着逛街...
- 火灾原来离我们那么近
- C语言入门经典(第5版)电子书pdf下载
- 百度之星 度度熊的午饭时光
- 中标麒麟安装php环境,中标麒麟V6下wine完美运行通达信
- Racket编程指南——2 Racket概要
- 强烈推荐提升自我的30个好习惯
- 开环传递函数判断系统类型_已知系统的开环传递函数,试用Nyquist稳定判据判断系统的稳定性。_学小易找答案...
- JAVA ActiveMQ 详解
- 刁肥宅手笔:纯C语言实现链式队列的相关操作
- 色彩静物想要呈现出最好的效果?快看看下面这种画法~
- 计算语言学课程笔记(一)
- 好玩的linux程序,好玩的linux命令
- c++画蛋糕_poj1190 生日蛋糕 dfs