如何為地端伺服器安裝Azure Monitor Agent
前篇,我們先把地端安裝 Azure Monitor Agent 的前置環境給準備好。接下來我們要安裝 Azure Monitor Agent。
前篇,我們先把地端安裝 Azure Monitor Agent 的前置環境給準備好。接下來我們要安裝 Azure Monitor Agent。
我們使用 Azure Log Analytics agent(Microsoft Monitoring Agent (MMA)) 來收集監控地端 VM 多年,但從 2023 年初開始,不斷看到 Azure 文件或系統上提示 MMA 在2024年8月31日將不再受到支援。近來地端有申請新的 VM,因此規劃新的 VM 改用Manage Azure Monitor Agent,並且熟悉了解整個設定及升級流程。
我們映像檔(images)是儲存在ACR(Azure Registry Container),在ACR有提供 Microsoft Defender 能提供我們映像檔(images)的安全性報告。
同事回報,進行 Kubernetes CD 部署時出現錯誤:
couldn't get current server API group list: the server has asked for the client to provide credentials
unable to recognize "...API.yaml": the server has asked for the client to provide credentials
在一個標準 3 台 Node (1 Control Plane + 2 Worker Node)的 Kubernetes 叢集上,在進行維護(drain
)之後很容易出現 Pods 集中在某一台 Worker Node 的情況。這在測試區還好,測試區更新極快,通常沒幾天就能回到平衡(Balance)的狀態。正式區就比較麻煩,正式區更新速度不比測試區,因此,Pods 集中在某一台 Worker Node 情況容易時間不短,這會造成特定 Worker Node 資源吃重的情況。針對維護過後,Pods 會集中在某一台 Worker 上,我想改進這一點。
之前在架設 Kubernetes 叢集預設把防火牆給關閉。當然,關閉防火牆是非常不安全的行為。 當所有 Kubernetes 和 Calico 組態與服務都上線之後,我們需要把防火牆設定回去。
這裡只針對兩個部分:Kubernetes 與 Calico 所以需要埠(Port)。
我們參考 Calico upgrade docs (uses the operator) 升級了 Calico CNI 元件從 3.27.x 到 3.28.1。
$ calicoctl version
Client Version: v3.28.1
Git commit: 601856343
Cluster Version: v3.28.1
Cluster Type: typha,kdd,k8s,operator,bgp,kubeadm,win
升級後發現,原本的 default-ipv4-ippool
被設定回來了。在 3.27.x,因為一開始沒考慮好網段問題,因此我們設定了一組新的 IPPool 來提供給 Pods 使用,來解決一些 IP 網路的問題。在 3.27 依照 migrate-pools 文件,我們為 default-ipv4-ippool
設定了 disabled: true
並且運作良好。但升級至 3.28.1 後,除了 default-ipv4-ippool
被設定回來並且被啟用了。我們還發現,原始按照文件可以設定 disabled: true
無法被正確套用,刪除指令就算執行成功,其實也是無效的。
$ calicoctl get ippool -o wide
NAME CIDR NAT IPIPMODE VXLANMODE DISABLED DISABLEBGPEXPORT SELECTOR
default-ipv4-ippool 192.168.0.0/16 true Never CrossSubnet false false all()
new-pool 10.244.0.0/16 true Never CrossSubnet false false all()
$ calicoctl get ippool -o yaml > pools.yaml
# add disabled: true
$ vim pools.yaml
$ calicoctl apply -f pools.yaml
Successfully applied 2 'IPPool' resource(s)
# DISABLED : false
$ calicoctl get ippool -o wide
NAME CIDR NAT IPIPMODE VXLANMODE DISABLED DISABLEBGPEXPORT SELECTOR
default-ipv4-ippool 192.168.0.0/16 true Never CrossSubnet false false all()
new-pool 10.244.0.0/16 true Never CrossSubnet false false all()
# delete default-ipv4-ippool
$ calicoctl delete pool default-ipv4-ippool
Successfully deleted 1 'IPPool' resource(s)
$ calicoctl get ippool -o wide
NAME CIDR NAT IPIPMODE VXLANMODE DISABLED DISABLEBGPEXPORT SELECTOR
default-ipv4-ippool 192.168.0.0/16 true Never CrossSubnet false false all()
new-pool 10.x.0.0/16 true Never CrossSubnet false false all()
# use patch method
$ calicoctl patch ippool default-ipv4-ippool -p '{"spec": {"disabled": true}}'
$ calicoctl get ippool -o wide
NAME CIDR NAT IPIPMODE VXLANMODE DISABLED DISABLEBGPEXPORT SELECTOR
default-ipv4-ippool 192.168.0.0/16 true Never CrossSubnet false false all()
new-pool 10.x.0.0/16 true Never CrossSubnet false false all()