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_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/

Ubuntu下基于 Cilium CNI 的 Kubernetus集群环境搭建相关推荐

  1. (超详细)基于Zookeeper的Hadoop HA集群的搭建

    基于Zookeeper的Hadoop HA集群的搭建 JunLeon--go big or go home 前言: 高可用(high availability,HA)指的是若当前工作中的机器宕机了,系 ...

  2. kubernetes集群环境搭建(kubeadm方式)

    1. kubernetes简介 kubernetes,是一个全新的基于容器技术的分布式架构领先方案,是谷歌严格保密十几年的秘密武器----Borg系统的一个开源版本,于2014年9月发布第一个版本,2 ...

  3. Kubernetes集群环境搭建详细教程(一主两从)

    Kubernetes集群环境搭建详细教程(一主两从) 1.1 安装要求 在开始之前,部署Kubernetes 集群机器需要满足以下几个条件: 一台或多台机器,操作系统CentOS7.x-86_x64 ...

  4. Kubernetes1.24版本高可用集群环境搭建(二进制方式)

    背景: 虽然kubeadm方式安装集群更加简单些,配置相对比较少,但是生产环境还是建议二进制的方式安装,因为二进制的方式kubernetes的kube-apiserver.kube-controlle ...

  5. Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十一)NIFI1.7.1安装

    一.nifi基本配置 1. 修改各节点主机名,修改/etc/hosts文件内容. 192.168.0.120master192.168.0.121slave1192.168.0.122 slave2 ...

  6. 学习笔记之-Kubernetes(K8S)介绍,集群环境搭建,Pod详解,Pod控制器详解,Service详解,数据存储,安全认证,DashBoard

    笔记来源于观看黑马程序员Kubernetes(K8S)教程 第一章 kubernetes介绍 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署 ...

  7. RabbitMQ集群环境搭建

    RabbitMQ集群环境搭建 一.安装基础工具包 二:安装Erlang和RabbitMQ 1. 安装Erlang 2. 安装RabbitMQ 3. 启动RabbitMQ 4. 启动RabbitMQ管理 ...

  8. 大数据第一天 Hadoop01-入门集群环境搭建

    Hadoop01-入门&集群环境搭建 今日内容 ​ Hadoop的介绍 ​ 集群环境搭建准备工作 ​ Linux命令和Shell脚本增强 ​ 集群环境搭建 大数据概述 ​ 大数据: 就是对海量 ...

  9. 大数据介绍、集群环境搭建、Hadoop介绍、HDFS入门介绍

    大数据介绍.集群环境搭建.Hadoop介绍.HDFS入门介绍 文章目录 大数据介绍.集群环境搭建.Hadoop介绍.HDFS入门介绍 1.课前资料 2.课程整体介绍 3.大数据介绍 3.1 什么是大数 ...

最新文章

  1. 【SpringBoot】SpringBoot拦截器实战和 Servlet3.0自定义Filter、Listener
  2. JS 数字左补零函数
  3. opencv读取图片、视频、摄像头
  4. 第18次csp认证 201912-2 回收站选址(C++)
  5. mysql 端口 telnet 不通_3306端口不通,不一定是网络的问题
  6. mqtt 获取 状态_MQTT设备接入及上报数据的命令行模拟器(Java)
  7. microsoft visual c++全家桶_“网蓝”盒子咖啡新品来袭!顺德第①桶MINI冰摇咖啡,可以背着逛街...
  8. 火灾原来离我们那么近
  9. C语言入门经典(第5版)电子书pdf下载
  10. 百度之星 度度熊的午饭时光
  11. 中标麒麟安装php环境,中标麒麟V6下wine完美运行通达信
  12. Racket编程指南——2 Racket概要
  13. 强烈推荐提升自我的30个好习惯
  14. 开环传递函数判断系统类型_已知系统的开环传递函数,试用Nyquist稳定判据判断系统的稳定性。_学小易找答案...
  15. JAVA ActiveMQ 详解
  16. 刁肥宅手笔:纯C语言实现链式队列的相关操作
  17. 色彩静物想要呈现出最好的效果?快看看下面这种画法~
  18. 计算语言学课程笔记(一)
  19. 好玩的linux程序,好玩的linux命令
  20. c++画蛋糕_poj1190 生日蛋糕 dfs

热门文章

  1. 系统调优一之内存子系统
  2. sql server 备份与恢复系列一 必备知识
  3. 同步两个数据库的结构或者数据
  4. 在Windows下搭建Android开发环境及遇到的问题
  5. Mybatis简单的入门之增删改查
  6. [杭电ACM]3336Count the string
  7. 【原译】在amazon kindle上安装Metasploit
  8. 招人—凡客诚品 数据中心系统工程师(海外及手机业务方向)
  9. golang float string int 相互转换 保留小数位
  10. linux 设备管理工具 udev 规则编写