【k8s】api server地址

1. 使用 kubectl cluster-info 命令

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

html 复制代码
kubectl cluster-info

示例输出:

html 复制代码
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 的地址和端口信息。

html 复制代码
cat ~/.kube/config

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

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

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

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

html 复制代码
env | grep KUBERNETES_SERVICE

你将看到类似的结果:

html 复制代码
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 的内部地址,保持集群内部通信的稳定性。

相关推荐
亚林瓜子24 分钟前
BC-Linux8.6上面离线手动安装Docker引擎
linux·运维·docker·容器·bc-linux
kaiyuanheshang9 小时前
docker 中的entrypoint和cmd指令
运维·docker·容器·cmd·entrypoint
Python私教10 小时前
除了 Docker,还有哪些类似的容器技术?
运维·docker·容器
hummhumm14 小时前
第33章 - Go语言 云原生开发
java·开发语言·后端·python·sql·云原生·golang
petaexpress15 小时前
5种常见的k8s云原生数据管理方案详解
云原生·kubernetes·k8s云原生
wenyue112115 小时前
云原生开发框架
数据库·云原生
颜淡慕潇16 小时前
【K8S系列】深入解析 Kubernetes 中的 Deployment
后端·云原生·容器·kubernetes
zwm_yy18 小时前
docker-mysql
mysql·docker·容器
FinelyYang20 小时前
docker+容器+redis+minio+java jar,实现开机自启动
运维·docker·容器