K8s 內的網路檢測
因為在 Hyper-V 內建立一個 Ubuntu 20.04 VM 然後起一個 K8s Cluster 卻發現在 K8s 內的服務連不上 VM 內的服務, 以下是將檢測 K8s 網路的相關語法紀錄下來.
在 K8s 內起一個檢測的 pod
- 定義 pod 內容 k8s-chk.yml
apiVersion: apps/v1 kind: Deployment metadata: name: busybox namespace: default spec: replicas: 1 selector: matchLabels: app: busybox template: metadata: labels: app: busybox spec: containers: - name: busybox image: yauritux/busybox-curl:latest command: - sleep - "3600" imagePullPolicy: IfNotPresent
- 啟動檢測 pod
kubectl apply -f k8s-chk.yml
localadmin@iiidevops1:~/test$ kubectl apply -f k8s-chk.yml deployment.apps/busybox created
- 取得 pod name
kubectl get pod | grep busybox
localadmin@iiidevops1:~/test$ kubectl get pod | grep busybox busybox-5d5bd64f66-zlvls 1/1 Running 0 2m29s
使用 pod 安裝相關工具與檢測
- 安裝 curl
kubectl exec busybox-5d5bd64f66-zlvls -- opkg-install curl
- 進行目標網址檢測
kubectl exec busybox-5d5bd64f66-zlvls -- ping -c 5 172.16.0.171 kubectl exec busybox-5d5bd64f66-zlvls -- traceroute 172.16.0.171 kubectl exec busybox-5d5bd64f66-zlvls -- curl -k https://172.16.0.171:5443/
關閉檢測的 pod
kubectl delete deploy busybox
localadmin@devops1:~/test$ kubectl delete deploy busybox deployment.apps "busybox" deleted
檢測跨 namespace 的 service
- 預設完整服務網址是 {SERVICE_NAME}.{NAMESPACE_NAME}.svc.cluster.local
- Exp. 一個簡易網頁服務
- SERVICE_NAME : test-20230110-37-master-serv-svc
- NAMESPACE_NAME : test-20230110-37
- test-20230110-37-master-serv-svc.test-20230110-37.svc.cluster.local
- Exp. 在 namespace : test-20230110-37 內的 POD 內可直接使用 service name : test-20230110-37-master-serv-svc 當網址 看結果
- Exp. 在 namespace : test-20230110-37 外的 POD 內需要使用完整的服務網址 : test-20230110-37-master-serv-svc.test-20230110-37.svc.cluster.local 看結果