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-nginx
  replicas: 2
  template:
    metadata:
      labels:
        run: my-nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx
        ports:
        - 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_port

curl <your node ip>:$node_port

curl <your cluster ip>:$node_port

四、总结

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A ?Charis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值