cilium的調(diào)試模式

概述

測(cè)試 Cilium 的時(shí)候,經(jīng)常會(huì)部署完 cilium-agent 的 DaemonSet 之后,手動(dòng)修改 DaemonSet 里關(guān)于 cilium-agent 的啟動(dòng)命令,一般會(huì)改成 sleep inf 來避免容器直接啟動(dòng) cilium-agent,這樣可以方便后面的調(diào)試,比如修改一些環(huán)境變量或者直接修改源碼重新編譯 cilium-agent 的二進(jìn)制,就可以不用重頭到位構(gòu)建新的 Cilium 的鏡像。之前想過為了節(jié)省時(shí)間,可以修改一下 Cilium Helm Chart 提供一個(gè)選項(xiàng)來自動(dòng)打開這個(gè)開關(guān),但是后面細(xì)看了一下官方的 Helm Chart,發(fā)現(xiàn)官方其實(shí)已經(jīng)提供了這樣的選項(xiàng)。

調(diào)試參數(shù)

# cilium-1.14.4/templates/cilium-agent/daemonset.yaml
containers:
- name: cilium-agent
  image: {{ include "cilium.image" .Values.image | quote }}
  imagePullPolicy: {{ .Values.image.pullPolicy }}
  {{- if .Values.sleepAfterInit }}
  command:
  - /bin/bash
  - -c
  - --
  args:
  - |
    while true; do
      sleep 30;
    done
  livenessProbe:
    exec:
      command:
      - "true"
  readinessProbe:
    exec:
      command:
      - "true"
  {{- else }}

查看 cilium-agent 的 DaemonSet 的模板,可以在 helm install 的時(shí)候,加入配置 sleepAfterInit=true,這樣 cilium-agent 啟動(dòng)的時(shí)候,還會(huì)將 livenessProbe 和 readinessProbe 探針置為 true,避免容器重啟,如下。

helm install cilium . --set sleepAfterInit=true

需要注意的是,如果通過 sleepAfterInit 休眠了 cilium-agent 的容器,如果想在容器內(nèi)執(zhí)行 /usr/bin/cilium-agent -- --config-dir=/tmp/cilium/config-map,是會(huì)有一些問題的,最主要就是容器的被配置的 securityContext 是有限制的,但是 cilium-agent 啟動(dòng)的時(shí)候是需要去越權(quán)做些事情的,因此正常來說就算是 sleepAfterInit,在容器內(nèi)都是無(wú)法正常啟動(dòng) cilium-agent 的,所以靠 sleepAfterInit 沒法直接意做一些 debug 的動(dòng)作。

其他的Debug技巧

# 在Node節(jié)點(diǎn)進(jìn)入cilium-agent容器
nerdctl -n k8s.io exec -it `nerdctl -n k8s.io ps |grep -i cilium-agent|awk '{print $1}'` bash

# 安裝一些常見工具
apt-get update -y
apt-get install -y curl net-tools zip unzip lrzsz procps inetutils-ping

# 下載工具
curl -LO 192.168.1.200/root/dlv
chmod +x dlv

# 下載重新編譯的cilium-agent
curl -LO 192.168.1.13/cilium-agent
chmod +x cilium-agent

參考資料

  1. Cilium官方文檔
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容