F5社区-F5技术交流中心

k8s 1.27.2中使用helm安装cilium cni

2023-06-16 12:21:12

宗兆伟

cilium目前成为最火的CNI实现,从github的star就可以看的出来,它利用新的kernel版本中ebpf特性,实现了流量的可视化和策略应用。
本文简单介绍在k8s 版本v1.27.2 版本下使用helm 安装配置cilium的过程。

# 安装helm

```shell
wget https://get.helm.sh/helm-v3.12.0-linux-amd64.tar.gz
tar zxf helm-v3.12.0-linux-amd64.tar.gz
cp linux-amd64/helm /usr/local/bin
```

# 下载cilium

在本文中cilium-main版本为1.14.0-dev

```shell
curl -LO https://github.com/cilium/cilium/archive/main.tar.gz
```

除了下载最新版本,我们也可以下载特定版本: https://github.com/cilium/cilium/releases/

# helm安装cilium

```shell
tar xzf main.tar.gz
cd cilium-main/install/kubernetes
helm install cilium ./cilium --namespace kube-system
```

检查cilium运行状态

```
cilium status --wait
```

正常输出为
```shell
    /¯¯\
 /¯¯\__/¯¯\    Cilium:             OK
 \__/¯¯\__/    Operator:           OK
 /¯¯\__/¯¯\    Envoy DaemonSet:    disabled (using embedded mode)
 \__/¯¯\__/    Hubble Relay:       disabled
    \__/       ClusterMesh:        disabled

Deployment        cilium-operator    Desired: 2, Ready: 2/2, Available: 2/2
DaemonSet         cilium             Desired: 3, Ready: 3/3, Available: 3/3
Containers:       cilium-operator    Running: 2
                  cilium             Running: 3
Cluster Pods:     8/8 managed by Cilium
Image versions    cilium             quay.io/cilium/cilium:v1.12.10: 3
                  cilium-operator    quay.io/cilium/operator-generic:v1.12.10: 2
```

# 安装cilium管理客户端

```shell
CILIUM_CLI_VERSION=$(curl -s https://raw.githubusercontent.com/cilium/cilium-cli/master/stable.txt)
CLI_ARCH=amd64
if [ "$(uname -m)" = "aarch64" ]; then CLI_ARCH=arm64; fi
curl -L --fail --remote-name-all https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}
sha256sum --check cilium-linux-${CLI_ARCH}.tar.gz.sha256sum
sudo tar xzvfC cilium-linux-${CLI_ARCH}.tar.gz /usr/local/bin
rm cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}


sudo tar xzvfC cilium-linux-amd64.tar.gz /usr/local/bin
```

# 配置cilium vxlan 集成(可选)

Kubernetes 集群市场上存在各种容器网络接口 (CNI)。Cilium 作为一款开源软件,用于提供、保护和观察容器工作负载(云原生)之间的网络连接,并由革命性的内核技术 eBPF 提供支持。
在日常生产过程中,我们经常使用专门的“外部”应用交付设备提供Ingress能力,比如F5的BIGIP,我们可以通过配置VTEP的方式,让Cilium通过VXLAN隧道到外部VTEP设备,

Cilium VTEP implementation detail PR at VTEP .. _VTEP: [cilium/cilium#17370](https://github.com/cilium/cilium/pull/17370)

```shell
helm upgrade cilium /root/cilium-1.12.10/install/kubernetes/cilium \
              --namespace kube-system \
              --set debug.enabled=true \
              --set kubeProxyReplacement=strict \
              --set ipam.mode="kubernetes" \
              --set k8sServiceHost=10.250.16.103 \
              --set k8sServicePort=6443 \
              --set l7Proxy=false \
              --set vtep.enabled="true" \
              --set vtep.endpoint="10.250.16.105" \
              --set vtep.cidr="10.0.20.1/24" \
              --set vtep.mac="fa:16:3e:8f:47:51" \
              --set vtep.mask="255.255.255.0"
```

更多BIG-IP Integration可以参考:https://github.com/f5devcentral/f5-ci-docs/blob/master/docs/cilium/cilium-bigip-info.rst

重启cilium服务
```shell
kubectl -n kube-system rollout restart ds/cilium
```

# 配置文件介绍

在cilium下载目录下

```shell
cd install/kubernetes/cilium
#Chart.yaml  LICENSE  README.md  README.md.gotmpl  files  templates  values.yaml  values.yaml.tmpl
```
这里的values.yaml 包含了所有默认配置,我们可以修改这个文件配置cilium的启动行为、形态。
比如
```yaml
debug:
  # -- Enable debug logging
  enabled: true
  # verbose:

...

# -- Configure Kubernetes specific configuration
k8s: {}
  # -- requireIPv4PodCIDR enables waiting for Kubernetes to provide the PodCIDR
  # range via the Kubernetes node resource
  # requireIPv4PodCIDR: false

  # -- requireIPv6PodCIDR enables waiting for Kubernetes to provide the PodCIDR
  # range via the Kubernetes node resource
  # requireIPv6PodCIDR: false
 
...

vtep:
# -- Enables VXLAN Tunnel Endpoint (VTEP) Integration (beta) to allow
# Cilium-managed pods to talk to third party VTEP devices over Cilium tunnel.
  enabled: false

# -- A space separated list of VTEP device endpoint IPs, for example "1.1.1.1  1.1.2.1"
  endpoint: ""
# -- A space separated list of VTEP device CIDRs, for example "1.1.1.0/24 1.1.2.0/24"
  cidr: ""
# -- VTEP CIDRs Mask that applies to all VTEP CIDRs, for example "255.255.255.0"
  mask: ""
# -- A space separated list of VTEP device MAC addresses (VTEP MAC), for example "x:x:x:x:x:x  y:y:y:y:y:y:y"
  mac: ""
```

每个配置都有相应的使用说明。

# 更多组件安装

在本案例中并没有安装hubble等组件,读者可以根据需要自行安装。
更多cilium 配置细节,可以参考官网https://docs.cilium.io/en/stable/


发布评论 加入社群

发布评论

相关文章

编排AS3新尝试-jinja2

宗兆伟

2021-09-25 14:08:00 705

使用ELK机器学习演示态势预测和异常检测

宗兆伟

2020-04-14 17:19:59 1478

配置F5 BIG-IP 以联用 F5 大数据分析展示平台

宗兆伟

2020-03-27 16:24:51 2637

Login

手机号
验证码
© 2019 F5 Networks, Inc. 版权所有。京ICP备16013763号-1