====== K8s 內的網路檢測 ======
- 在 K8s 內起一個有 curl 的 busybox POD
kubectl run --rm -it busybox --image yauritux/busybox-curl:latest --restart=Never
- 直接下 ping / nslookup / curl 等等命令進行網路檢測++看結果|
rkeuser@iso:~$ kubectl run --rm -it busybox --image yauritux/busybox-curl:latest --restart=Never
If you don't see a command prompt, try pressing enter.
/home # ping www.ichiayi.com
PING www.ichiayi.com (220.135.35.198): 56 data bytes
64 bytes from 220.135.35.198: seq=0 ttl=242 time=4.992 ms
64 bytes from 220.135.35.198: seq=1 ttl=242 time=6.761 ms
^C
--- www.ichiayi.com ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 4.992/5.876/6.761 ms
/home # nslookup www.ichiayi.com
Server: 10.43.0.10
Address 1: 10.43.0.10 kube-dns.kube-system.svc.cluster.local
Name: www.ichiayi.com
Address 1: 220.135.35.198 220-135-35-198.HINET-IP.hinet.net
/home # curl http://10.20.0.77:32080
You are being redirected./home #
/home #
++
- 輸入 exit 離開++看結果|
/home # exit
pod "busybox" deleted
++
因為在 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 當網址 ++看結果|
/var/www/html # curl http://test-20230110-37-master-serv-svc
III DevOps Sample
Hello World!
++
* Exp. 在 namespace : test-20230110-37 外的 POD 內需要使用完整的服務網址 : test-20230110-37-master-serv-svc.test-20230110-37.svc.cluster.local ++看結果|
/var/www/html # curl http://test-20230110-37-master-serv-svc.test-20230110-37.svc.cluster.local
III DevOps Sample
Hello World!
++
===== 參考網址 =====
* https://stackoverflow.com/questions/62847331/is-there-possible-to-install-curl-into-busybox-in-kubernetes-pod
{{tag>K8s busybox}}