如何将Kubelet端口映射到POD

时间:2018-09-27 01:55:51

标签: kubernetes

我的kubernetes节点之一,我看到我的kubelet在端口38641上侦听。如何也将此端口号映射到其指向的实际POD。

# netstat -alpn |grep 38641
tcp        0      0 127.0.0.1:38641         0.0.0.0:*               LISTEN      9832/kubelet
tcp        0      0 127.0.0.1:45230         127.0.0.1:38641         CLOSE_WAIT  9832/kubelet
tcp        0      0 127.0.0.1:39922         127.0.0.1:38641         CLOSE_WAIT  9832/kubelet
tcp        0      0 127.0.0.1:39238         127.0.0.1:38641         ESTABLISHED 9832/kubelet

1 个答案:

答案 0 :(得分:1)

我假设您已经使用NodePort类型在kubernetes中公开了一项服务,该服务将解释高端口号。在这种情况下,您可以简单地获取集群中正在运行的所有服务的列表,然后搜索所需的端口。即。

kubectl get svc --all-namespaces | grep 38641

一旦拥有公开此端口的服务,便可以检查该服务并查看该服务正在选择哪些容器

PORT=38641
SERVICE_OUTPUT=$(kubectl get svc --all-namespaces | grep $PORT)
NAMESPACE=$(echo $SERVICE_OUTPUT | awk '{ print $1 }')
SERVICE=$(echo $SERVICE_OUTPUT | awk '{ print $2 }')
kubectl describe -n $NAMESPACE svc $SERVICE

现在让我们获取选择器:

SELECTOR=$(kubectl describe -n $NAMESPACE svc $SERVICE | grep Selector | awk '{ print $2}')

好吧,现在我们知道选择了哪些吊舱,我们可以轻松找到这些吊舱:

kubectl get po --selector $SELECTOR -n $NAMESPACE

我们可以捕获吊舱名称以进行进一步检查,例如确定它们来自的副本集:

PODS=$(kubectl get po --selector $SELECTOR -n $NAMESPACE --no-headers=true | awk '{ print $1}')
echo $PODS

如果需要,您可以跟踪吊舱原点:

POD=full-pod-name
RS=$(kubectl -n $NAMESPACE describe po $POD | grep -hoe ReplicaSet.*); 
echo rs: $RS;

DEPLOYMENT=$(kubectl -n $NAMESPACE describe $RS | grep -hoe Deployment.*); 
echo deployment: $DEPLOYMENT;