k8s 1.27.2中使用helm安装cilium cni

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

安装helm

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

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

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

helm安装cilium

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

检查cilium运行状态

cilium status --wait

正常输出为

    /¯¯\
 /¯¯\__/¯¯\    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管理客户端

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

helm upgrade cilium /root/cilium-1.12.10/install/kubernetes/cilium \
              --namespace kube-system \
              --set rollOutCiliumPods=true \
              --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服务(在上述helm命令中,因为加了–set rollOutCiliumPods=true 不需要单独重启cilium服务)。

kubectl -n kube-system rollout restart ds/cilium

除了使用helm安装方式外,当我们修改了部署参数后,也可以使用以下命令做重新的全新安装,即删除后重装。

# 获取之前的安装配置项,cilium的每次安装后都会生成一个secret用于保存当前的配置参数
kubectl -n kube-system get secret/cilium-cli-helm-values -o yaml > cilium-values.yaml
cilium install \
	--helm-values cilium-values.yaml \
	--version v1.13.3 \
	--context kubernetes-admin@kubernetes

其中

  • --context kubernetes-admin@kubernetes是可选的,当我们有多个k8s cluster时,可以使用kubectl config get-contexts获取指定k8s 集群执行以上命令。
  • --version v1.13.3 指定安装版本,可以看到,使用这种方式安装时,我们不需要提前下载cilium版本.tar.gz文件。
  • --helm-values cilium-values.yaml 来自于secret,如上所述。

登入某一个cilium pod中,我们可以查看vtep setup的状态结果:

kubectl -n kube-system exec -it cilium-txwjc -- cilium bpf vtep list

输出为

Defaulted container "cilium-agent" out of: cilium-agent, config (init), mount-cgroup (init), apply-sysctl-overwrites (init), mount-bpf-fs (init), clean-cilium-state (init), install-cni-binaries (init)
IP PREFIX/ADDRESS   VTEP
10.0.20.0           vtepmac=FA:16:3E:8F:47:51 tunnelendpoint=10.250.16.105

配置文件介绍

在cilium下载目录下

cd install/kubernetes/cilium
#Chart.yaml  LICENSE  README.md  README.md.gotmpl  files  templates  values.yaml  values.yaml.tmpl

这里的values.yaml 包含了所有默认配置,我们可以修改这个文件配置cilium的启动行为、形态。
比如

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/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是在 CentOS 7 使用国内源安装 Kubernetes 1.27.2 的步骤: 1. 首先,备份您的系统,以防意外情况。 2. 安装 Docker,使用以下命令: ``` sudo yum install -y yum-utils device-mapper-persistent-data lvm2 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install -y docker-ce docker-ce-cli containerd.io sudo systemctl start docker sudo systemctl enable docker ``` 3. 安装 Kubernetes使用以下命令: ``` sudo tee /etc/yum.repos.d/kubernetes.repo <<EOF [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF sudo yum install -y kubelet kubeadm kubectl sudo systemctl enable kubelet sudo systemctl start kubelet ``` 4. 初始化 Kubernetes 集群,使用以下命令: ``` sudo kubeadm init --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.27.2 --pod-network-cidr=10.244.0.0/16 ``` 注意:`--image-repository` 参数指定了使用阿里云镜像仓库下载 Kubernetes 相关镜像,`--kubernetes-version` 参数指定了要安装Kubernetes 版本,`--pod-network-cidr` 参数指定了要使用的 Pod 网络地址。 5. 安装网络插件,使用以下命令: ``` sudo kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` 6. 加入节点,使用以下命令: ``` sudo kubeadm join <control-plane-host>:<control-plane-port> --token <token> --discovery-token-ca-cert-hash sha256:<hash> ``` 其,`<control-plane-host>:<control-plane-port>` 参数指定了控制面节点的 IP 地址和端口号,`<token>` 参数是用于鉴权的 token,`<hash>` 参数是用于鉴权的证书哈希值。 7. 完成上述步骤后,您的 Kubernetes 集群就已经安装成功了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值