Cilium-实战系列-(一)Cilium-安装与部署

        

        前言:

        1、首先说一下这篇实战系列Cilium-ebpf系列文章为 “一文一武”,一个注重点解,一个注重实际操作。

Cilium + ebpf 系列文章-什么是ebpf?(一)_clium ebpf-CSDN博客文章浏览阅读419次。一、We Create a container be a Server.二、We Create a container be a Client.三、Them link at a Bridge.四、 Do test.一、Test-tools。3、当你执行l s操作时,会调用open的系统调用,然后open的系统调用具体是使用do_sys_open这个内核函数来具体执行!##上面的实验是为了证明你在用户空间编写的ebpf程序可以在内核中运行,并且监控系统调用和内核函数。这篇非常非常干,很有可能读不懂。_clium ebpfhttps://blog.csdn.net/weixin_46510209/article/details/142464176?spm=1001.2014.3001.5501        2、今天这篇文章两个重点:

                1、安装符合部署Cilium的RKE集群。

                2、部署Cililum到RKE集群中。

                3、并且运行测试且通过。

一、部署环境

                1、准备3台虚拟机(也可以是两台)

                2、Linux- OS 内核版本必须是5.0以上,推荐Opensuse 15.5 leap

                3、两台虚拟机之间网络可达且没有安全限制策略。

                4、两台虚拟机安装docker 20.0X版本以上(因为使用的是rke集群)

                5、关闭防火墙。(云内的虚拟机开防火墙等于脱裤子放屁哈,有分布式防火墙开开就可以了。)

二、我的环境展示

                1、主机名

        rke-01         rke-02         rke-03

        (192.168.91.100         192.168.91.101         192.168.91.102)

                2、规划

        rke-01  rke-02  为Cluster A rke01-为控制面,rke02-为工作面

        rke-03 为All in one 即是控制面也为工作面。

                3、OS  

*下载地址:

https://get.opensuse.org/leap/15.6/


                4、内核

                5、docker版本

*下载地址:

https://docs.docker.com/get-started/get-docker/


        6、rke

*下载地址:

https://rke.docs.rancher.com/installation

        7、cilium   

helm地址:

cilium	https://helm.cilium.io/

        8、Kubernetes

        

        9、Cilium-CLi

            

*下载地址-:

https://docs.cilium.io/en/stable/gettingstarted/k8s-install-default/

三、操作过程

        1、 安装符合部署Cilium的RKE集群。

                        1、CPU架构-内核要求

        *必须是64位的CPU。

        *且OS的内核版本必须大于等于5.4

        *以上是建议的OS版本号。

                2、经过验证测试的k8s版本号

                3、安装rke集群参考下面我另外一篇博客

Rancher-RKE-install 部署k8s集群_rancher 重新部署 rke-CSDN博客文章浏览阅读1.4k次。请注意:一定要检查你ssh的用户是否具备使用docker的权限,而且一定要启动docker.SSH第一个是集群配置的path位置,如果没有指定每个主机的私钥路径或者私钥的内容,则默认使用集群的配置.,表示成功部署集群,可以开始使用集群。在创建 Kubernetes 集群的过程中,会创建一个。5.根据当前目录的上下文中的cluster.yaml 安装rke集群。你运行的主机需要具备ssh免密登录其他主机的能力。1.下载Rancher-Rke的二进制包-下面是项目的地址。1.CNCF认证的k8s安装程序。_rancher 重新部署 rkehttps://blog.csdn.net/weixin_46510209/article/details/132356167?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522B52156FB-A26F-4B85-956F-F6AB76631638%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=B52156FB-A26F-4B85-956F-F6AB76631638&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-2-132356167-null-null.nonecase&utm_term=rke&spm=1018.2226.3001.4450

                4、部署rke的cluster.yaml文件重点设置

        请注意需要设置: 

        

        2、安装Cilium with helm

                1、我们可以通过cilium-cli来安装集群也可以通过helm来安装cilium,这里选择helm.cilium作为调试和排除工具还可以,作为安装工具不怎么好用。

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

                2、然后把helm包拉取下来修改

helm pull cilium/cilium --version 1.16.2

                3、修改包的values.yaml

        这里说一下:

        1、默认安装的cilium是用的vxlan然后通过8472端口,各个node之间打通过隧道。

        *我修改了默认端口,因为我玩的是何晨光的vxlan.

        2、节点的地址池默认是cluster pool,由cilium统一分配一个大掩码,然后各个节点分配16位小掩码分配pod.

*集群范围IPAM模式将每个节点的PodCIDR分配给每个节点,并在每个节点上使用主机范围分配器分配IP

        3、且不完全替换kube-proxy,kube-proxy保留Cluster-ip能力,但丧失nodeport能力。故我们就用ebpf映射来完全替换kube-proxy.

        4、helm安装命令
API_SERVER_IP=<your_api_server_ip>
# Kubeadm default is 6443
API_SERVER_PORT=<your_api_server_port>
helm install cilium cilium/cilium --version 1.16.2 \--namespace kube-system \--set kubeProxyReplacement=true \--set k8sServiceHost=${API_SERVER_IP} \--set k8sServicePort=${API_SERVER_PORT}

        *如果你喜欢用配置文件来部署下面这个命令也可以:

helm install cilium -n kube-system -f ./values.yaml .

3、验证安装

这里需要说一下,当你通过helm install cilium后,到底发生了什么?部署了什么?它们干什么用的?

        

*如图:

        1、cilium 是部署在每个节点的守护进程也就是agent.

                1、配套一个configmap.里面是agent配置文件。

                2、sa,配套的sa

        2、Envoy

        检查上面的configmap,如果下面的字段是:"true",那么就会自动部署一个ds envoy.

enable-l7-proxy: "true"

        *这个大家就是熟悉了吧,就是以前插入到pod到saidcar网络容器。

        *不过现在cilium用它来做节点的L7路由。

扩展一下好处:

        3、cilium-operator

        *这个没啥说的,如果对operator的概念没理解到位可以看下我的这篇博客。

几句话明白什么是Kubernetes Operator?_数据库 operator-CSDN博客文章浏览阅读416次,点赞10次,收藏2次。答案肯定是不知道的,这个时候就需要人工干预,这个人就是操作员,也就是Operator。1、要实现软件Operator层面,Kubernetes本身的api是不能够完成这类任务的,因为Kubernetes不可能存储所有应用的控制生命周期的知识。3、那么Kubernetes设计之初就说我们是一个自动化、减少人工干预的、自动修复平台,是不是优点问题。1、有状态应用,比如数据库、复杂的集群系统(ELK),本身有选举、同步等机制的应用程序。3、这些被单独定义的CRD就是Operator的具体控制生命周期的“知识”。_数据库 operatorhttps://blog.csdn.net/weixin_46510209/article/details/139610912?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522AC684D49-0E95-41F4-86D3-4B974510AF71%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=AC684D49-0E95-41F4-86D3-4B974510AF71&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-139610912-null-null.nonecase&utm_term=operator&spm=1018.2226.3001.4450

        1、通过cilium-cli验证安装

cilium status

        2、检查节点是否ready

        3、部署一个应用来测试Pod-Svc联通性。

                1、部署测试应用
apiVersion: apps/v1
kind: Deployment
metadata:name: my-nginx
spec:selector:matchLabels:run: my-nginxreplicas: 2template:metadata:labels:run: my-nginxspec:containers:- name: my-nginximage: nginxports:- containerPort: 80
                2、使用Nodeport暴露 
kubectl expose deployment my-nginx --type=NodePort --port=80
                3、获取Nodeport端口
node_port=$(kubectl get svc my-nginx -o=jsonpath='{@.spec.ports[0].nodePort}')
                4、测试
curl 127.0.0.1:$node_portcurl <your node ip>:$node_portcurl <your cluster ip>:$node_port

四、总结

        1、这篇文章使用rke搭建了一个符合cilium要求的1个集群,另外1个集群安装流程就跳过了。

        2、到此我们完成了集群的搭建以及联通性测试。

        3、下篇文章会通过一个简单的应用来测试Cilium的一些高级特性。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/440207.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ElasticSearch备考 -- Multi field

一、题目 Create the index hamlet_2 with one primary shard and no replicas Copy the mapping of hamlet_1 into hamlet_2, but also define a multi-field for speaker. The name of such multi-field is tokens and its data type is the (default) analysed string Reind…

[git] github管理项目之环境依赖管理

导出依赖到 requirements.txt pip install pipreqs pipreqs . --encodingutf8 --force但是直接使用pip安装不了torch&#xff0c;需要添加源&#xff01;&#xff01; pip install -r requirements.txt -f https://download.pytorch.org/whl/torch_stable.htmlpython 项目中 …

基于VirtualBox和Ubuntu的虚拟环境搭建

VirtualBox简介 VirtualBox 是一款开源虚拟机软件。 是由德国 Innotek 公司开发&#xff0c;由Sun Microsystems公司出品的软件&#xff0c;使用Qt编写&#xff0c;在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。简单易用&#xff0c;可虚拟的系统包括Windows&…

JavaScript-下篇

上篇我们学习了&#xff0c;一些基础语法和函数&#xff0c;现在我们学习下篇&#xff0c;主要包括,对象和事件。而对象又包括&#xff0c;数组Arrays&#xff0c;String字符串&#xff0c;BOM&#xff0c;DOM等 JS对象 Arrays数组 数组是一种特殊的对象&#xff0c;用于存储…

子比主题美化 – 添加天气教程

前言 经常看到很多的网站顶部或者侧边有显示天气状态的小条幅&#xff0c;看着也美观&#xff0c;寻思着也在自己的小站上显示天气。大体的思路是能识别用的ip地址来确认位置然后以代码形式在前台显示出。 经过在百度上搜索一番&#xff0c;发现一个很不错的天气api&#xff…

Java之二叉树的基本操作实现

1. 模拟实现二叉树前&#xff0c;我们要先表示树&#xff0c;首先定义一个内部类&#xff0c;当作二叉树节点 static class TreeNOde{char val;//存放二叉树的值TreeNOde left;//指向左子树的引用TreeNOde right;//指向右子树的引用//构造方法&#xff0c;用于实例化树的节点p…

Luminar财务造假风波:激光雷达龙头的困境与挑战

近日,美国激光雷达上市公司Luminar被爆出财务造假嫌疑,这一消息震惊了整个行业。Luminar,这家曾风光无限的激光雷达公司,最高市值一度达到120亿美元,其年轻的创始人也因此坐拥豪宅豪车无数。然而,如今在市值仅剩5亿美元左右的时候,却被爆出如此丑闻,令人不禁唏嘘。 带…

成都睿明智科技有限公司抖音电商新蓝海的领航者

在当今这个数字化浪潮汹涌的时代&#xff0c;电商行业正以惊人的速度迭代升级&#xff0c;而抖音电商作为新兴势力&#xff0c;更是凭借其庞大的用户基数、精准的算法推荐和高度互动的社区氛围&#xff0c;成为了众多商家竞相追逐的蓝海市场。在这片充满机遇与挑战的海洋中&…

洛谷每日一题(P1205 [USACO1.2] 方块转换 Transformations)矩阵变换

原题目链接&#xff1a; P1205 [USACO1.2] 方块转换 Transformations - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 原题目截图&#xff1a; 思路分析&#xff1a; 这题目还是比较简单&#xff0c;模拟一下旋转变化的过程&#xff0c;然后注意变换的规律就行了。 读取输入…

【移动端】事件基础

一、移动端事件分类 移动端事件主要分为以下几类&#xff1a; 1. 触摸事件&#xff08;Touch Events&#xff09; 触摸事件是移动设备特有的事件&#xff0c;用来处理用户通过触摸屏幕进行的操作。主要的触摸事件有&#xff1a; touchstart&#xff1a;手指触摸屏幕时触发。…

我的项目管理生涯

1 前言 从好几年前就想写几篇关于自己职业生涯的文章了&#xff0c;一直由于各种原因没有写成&#xff0c;正好借新的工作机会&#xff0c;尤其是项目管理这段工作经历&#xff0c;计划通过这一二篇文章进行总结和反思一下&#xff0c;以期更顺利的开展相关工作或是自己能更上…

ad.concat()学习

学习1 import anndata as ad, pandas as pd, numpy as np from scipy import sparse a ad.AnnData(Xsparse.csr_matrix(np.array([[0, 1], [2, 3]])),obspd.DataFrame({"group": ["a", "b"]}, index["s1", "s2"]),varpd.D…

import torch报错问题:OSError: [WinError 126] 找不到指定的模块。

今天在python中导入import torch时&#xff0c;发生了报错。 import torch File "D:\python\Lib\site-packages\torch\__init__.py", line 148, in <module>raise err OSError: [WinError 126] 找不到指定的模块。 Error loading "D:\python\Lib\site-pac…

【PACS源码】C#.net医学影像管理系统源码,支持CT、MR、CR、DR、ECT、DSA、X光机、超声、内镜、病理等多种设备。

PACS医学影像管理与传输系统软件可对医学仪器输出的视频信号进行接收、处理、存储、报告输出、管理、查询等&#xff0c;并支持网络&#xff0c;实现资源共享。为医院对病人信息资料进行数字化、科学化、网络化管理提供了必要的工具。 基于DICOM标准的PACS医学影像管理系统&am…

前端性能优化 面试如何完美回答

前言 性能优化是目前在面试中被问到非常多的问题&#xff0c;主要就是通过各种算和技术来提高页和应用的速度和用户体前端性能优化的问题并不好回答 在回答的时候干万不要掉进一个误区&#xff0c;认为性能优化只是几个技术点而已&#xff0c;事实上性能优化涉及到的是多方面的…

【c++】string类 (一)

简介 由于c的历史包袱&#xff0c;c要兼容c语言&#xff0c;c的字符串要兼容c语言&#xff0c;在 C 中&#xff0c;字符串通常使用两种主要的方式来表示&#xff1a; C风格字符串&#xff08;C-style strings&#xff09;&#xff1a; 依然是以 \0 结尾的字符数组。这种表示方…

掌握嵌套子查询:复杂 SQL 中 * 列的准确表列关系

在日常开发中&#xff0c;我们常常需要对复杂的 SQL 进行数据血缘分析。 本文重点讨论在具有 * 列的嵌套子查询中建立表和列之间正确关系的挑战。使用 Teradata SQL 代码示例来说明该过程。 本文聚焦于一个别名为 SUBSCRIBER_ 的子查询及其派生的列&#xff0c;这些列在外层查…

融媒体服务中PBO进行多重采样抗锯齿(MSAA)

如果不理解pbo 那先去了解概念&#xff0c;在此不再解释&#xff0c;这是我为了做融合服务器viewpointserver做的一部分工作&#xff0c;融合服务器的功能是将三维和流媒体&#xff0c;AI融合在一起&#xff0c;viewpointserver会直接读取三维工程的文件&#xff0c;同时融合rt…

英语词汇小程序小程序|英语词汇小程序系统|基于java的四六级词汇小程序设计与实现(源码+数据库+文档)

英语词汇小程序 目录 基于java的四六级词汇小程序设计与实现 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设布道师&a…

初始项目托管到gitee教程,开箱即用

0.本地仓库与远程仓库关联&#xff08;需先在gitee创建仓库&#xff09; ①打开powershell生成ssh key ssh-keygen -t ed25519 -C "Gitee SSH Key"-t key 类型-C 注释 生成成功如下&#xff0c;并按下三次回车 ②查看公私钥文件 ls ~/.ssh/输出&#xff1a; id_…