无法启动容器,提示端口无法使用,却查不到哪个进程占用?

现象

启动一些组件时提示端口无法使用:

在这里插入图片描述

CMD命令netstat -ano,没有查询到端口被别的程序占用:

在这里插入图片描述

原因

CMD命令netsh int ipv4 show dynamicport tcp,查询「TCP 动态端口」的范围

请添加图片描述

图中「TCP 动态端口」简单理解为:从1024号端口开始数13977个端口,这个范围内的端口允许被hyper-v wsl等占用

CMD命令netsh int ipv4 show excludedportrange protocol=tcp,查询「正在被占用的TCP端口」

请添加图片描述

果然,我们希望使用的10002端口被wsl占用

经验来看,wsl或hyper-v默认从「TCP 动态端口」中随机选中300个或600个端口,作为容器宿主网络服务(Windows Container Host Networking Service)的保留端口号。

解决

目的:将「TCP 动态端口」重新设定,不要从1024端口号开始,比如可以从49152开始,到65535结束

CMD管理员权限:

    netsh int ipv4 set dynamic tcp start=49152 num=16384
    netsh int ipv6 set dynamic tcp start=49152 num=16384

重启电脑后,再运行命令netsh int ipv4 show dynamicport tcp查看动态端口范围,发现确实已经修改为了49152-65535

请添加图片描述

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: k8s 使用端口号有很多,主要包括: 1. 6443:kube-apiserver 的通信端口。 2. 2379:etcd 的 client 端口。 3. 2380:etcd 的 peer 端口。 4. 10250:kubelet 的安全端口,用于与 kube-apiserver 通信。 5. 10251:kube-controller-manager 的安全端口,用于与 kube-apiserver 通信。 6. 10252:kube-scheduler 的安全端口,用于与 kube-apiserver 通信。 使用 Linux 命令 netstat 可以查看正在使用端口。例如,你可以使用命令 netstat -tnlp 查看所有打开的 TCP 端口。 在 k8s 中,你还可以使用命令 kubectl get services 查看集群中所有服务的端口信息。 ### 回答2: Kubernetes(简称K8s)是一个开源的容器编排平台,它靠近操作系统层并使用网络通信,因此会占用一些端口号。下面是一些常见的Kubernetes占用端口号及其用途: 1. 6443端口:该端口默认用于Kubernetes API服务器的安全通信,默认情况下,Kubernetes API服务器会监听该端口,供集群内部的组件和外部的用户进行通信。 2. 2379和2380端口:这两个端口分别用于etcd集群的内部通信和客户端访问etcd服务。etcd是Kubernetes使用的分布式键值存储系统,用于存储所有集群数据。 3. 10250端口:该端口用于kubelet进程与Kubernetes API服务器之间的双向通信。kubelet是每个节点上的Kubernetes组件之一,用于与API服务器进行通信以接收指令并报告节点状态。 4. 10251和10252端口:这两个端口用于kube-proxy进程与其它组件之间的通信。kube-proxy是Kubernetes集群中负责服务发现和负载均衡的组件。 要查看Kubernetes占用端口号,可以使用以下Linux命令: 1. netstat命令:可以使用`netstat -tuln`命令查看当前系统上所有正在监听的TCP和UDP端口号。在输出结果中,查找与Kubernetes相关的端口号。 2. ss命令:ss命令是netstat的替代工具,可以使用`ss -tuln`命令查看当前系统上所有正在监听的TCP和UDP端口号。 3. lsof命令:使用`lsof -i :端口号`命令(将"端口号"替换为具体的端口号)可以查看监听该端口号的进程ID和进程名。 ### 回答3: k8s占用端口号可以使用netstat命令在Linux上进行查找。Netstat(网络统计)是一个命令行工具,用于监控网络连接和网络接口的状态。 要查找k8s占用端口号,可以按照以下步骤进行操作: 1. 打开终端或命令行窗口,登录到Linux系统。 2. 输入以下命令以获取当前活动的网络连接列表: ``` netstat -tuln ``` 该命令中的参数含义如下: - `-t`:仅显示TCP连接。 - `-u`:仅显示UDP连接。 - `-l`:仅显示处于监听状态的连接。 - `-n`:不解析IP地址和端口号,以数字形式表示。 3. 运行命令后,系统将显示当前活动的TCP和UDP连接列表,并列出占用端口进程信息。可以查找与k8s相关的端口号、协议和进程ID(PID)。 4. 根据端口号和PID,可以进一步查找与k8s相关的进程详细信息,例如运行以下命令获取与指定PID相关的进程信息: ``` ps -p <PID> -f ``` 用实际的k8s进程PID替换`<PID>`。 通过以上步骤,您可以使用netstat命令在Linux上查找k8s占用端口号,并进一步了解与k8s相关的进程信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值