【k8s】api server地址

1. 使用 kubectl cluster-info 命令

这个命令会显示 Kubernetes API Server 的地址:

kubectl cluster-info

示例输出:

Kubernetes control plane is running at https://172.20.0.1:6443

CoreDNS is running at https://172.20.0.1:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
在上面的输出中,https://172.20.0.1:6443 就是 API Sever 的地址和端口(通常是 6443)。

2. 查看 Kubernetes 配置文件(kubeconfig 文件)

你可以查看你的 kubeconfig 文件,它通常位于 ~/.kube/config,这个文件中包含了 API Server 的地址和端口信息。

cat ~/.kube/config

你将会看到类似如下的配置:

clusters:
- cluster:
    certificate-authority-data: ...
    server: https://172.20.0.1:6443   # 这里是 API Server 地址和端口
  name: kubernetes

3. 通过环境变量查询(在 Pod 内)

如果你在 Kubernetes Pod 内部,并且想要查看 API Server 的地址和端口,你可以检查环境变量:

env | grep KUBERNETES_SERVICE

你将看到类似的结果:

KUBERNETES_SERVICE_HOST=172.20.0.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_PORT=tcp://172.20.0.1:443
KUBERNETES_SERVICE_HOST 是 API Server 的 IP 地址。
KUBERNETES_SERVICE_PORT 是 API Server 的端口(通常是 443 或 6443)

3.1 kubectl cluster-info 地址和po内的KUBERNETES_SERVICE_HOST环境变量值不同,他们的关系是什么

二者的关系:

  • 外部客户端(kubectl cluster-info):显示的是集群外部访问 Kubernetes API Server 的地址,通常是一个控制平面的 IP 地址或负载均衡器的地址。
  • Pod 内(KUBERNETES_SERVICE_HOST):这个是集群内部通过 Kubernetes Service(kubernetes 服务)访问 API Server 的 ClusterIP。所有的 Pod 都会通过这个 ClusterIP 访问 API Server,而不是直接访问 API Server 的实际 IP。

为什么不同?

  • 访问场景不同:

    kubectl cluster-info 输出的地址用于外部客户端与 API Server 交互,可能通过负载均衡器或特定的网络入口来确保外部访问的高可用性。
    KUBERNETES_SERVICE_HOST 是 Kubernetes 为内部 Pod 提供的一个服务入口,用于集群内部通信。这个地址通常是集群的虚拟 IP,由 Kubernetes Service 提供,而不是 API Server 的实际地址。

  • 网络拓扑不同:

    集群外部访问:客户端使用的是 API Server 的公开地址,这个地址可能是负载均衡器、控制平面节点的 IP 地址等。
    集群内部访问:通过 Kubernetes 服务机制,集群中的每个 Pod 都可以使用 KUBERNETES_SERVICE_HOST 来访问 API Server 的内部地址,保持集群内部通信的稳定性。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值