通过Kubectl代理进行Kubernetes仪表板-端口混乱

我已经看到通过kubectl代理访问http服务的标准方法如下: http://api.host/api/v1/namespaces/NAMESPACE/services/SERVICE_NAME:SERVICE_PORT/proxy/

为什么kubernetes-dashboard将https:kubernetes-dashboard:用作SERVICE_NAME:SERVICE_PORT

以下,我将假设它为kubernetes_dashboard:443

kubectl -n kube-system get service kubernetes-dashboard -o wide
NAME                   TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)         AGE   SELECTOR
kubernetes-dashboard   ClusterIP   10.233.50.212   <none>        443:31663/TCP   15d   k8s-app=kubernetes-dashboard

另外,当所有其他服务仅具有443:31663 x 是一个数字而不是 x y

最后,x/TCP将显示

kubectl cluster-info

我已经创建了一个简单的服务,但是这里没有显示它,我很困惑如何确定在这里是否显示什么服务。

shengme009 回答:通过Kubectl代理进行Kubernetes仪表板-端口混乱

  

为什么kubernetes-dashboard使用   https:kubernetes-dashboard:用于SERVICE_NAME:SERVICE_PORT吗?

     

另外,端口显示443:31663是什么意思   其他服务将只有x / TCP(x是一个数字而不是   x:y)

Manually constructing apiserver proxy URLs中所述,默认方式为

http://kubernetes_master_address/api/v1/namespaces/namespace_name/services/service_name[:port_name]/proxy
  

默认情况下,API服务器使用http代理您的服务。使用   https,在服务名称前添加https ::

http://kubernetes_master_address/api/v1/namespaces/namespace_name/services/https:service_name:[port_name]/proxy

URL名称段支持的格式为:

<service_name>-使用http代理到默认端口或未命名端口

<service_name>:<port_name>-使用http代理到指定端口

https:<service_name>:-使用https代理默认或未命名端口(请注意结尾的冒号)

https:<service_name>:<port_name>-使用https代理到指定端口

下一步:

  

我创建了一个简单的服务,但是这里没有显示,我   混淆了如何确定此处显示或不显示哪些服务。

我为您找到并测试了什么?

cluster-info API reference

使用标签 kubernetes.io/cluster-service=true 显示主服务器和服务的地址,要进一步调试和诊断群集问题,请使用“ kubectl cluster-info dump”。

因此,一旦您添加了kubernetes.io/cluster-service: "true"标签,该服务就会开始在kubectl cluster-info下显示。

但是!!当您看到您的服务在几分钟后从输出中消失时,这是预期的行为。已找到说明here-我仅将其复制粘贴到此处以供将来参考。

  

另一部分是插件管理器。它使用此注释来   将群集状态与静态清单文件同步。的   行为是这样的:

1)插件管理器从磁盘读取Yaml->部署内容

2)插件管理器从带有批注cluster-service的api服务器中读取所有部署:true->删除所有不存在的文件

因此,如果您添加此注释,则插件管理器将在一分钟左右后删除仪表板。

所以

创建集群后部署仪表板->不应设置注释: https://github.com/kubernetes/dashboard/blob/b98d167dadaafb665a28091d1e975cf74eb31c94/src/deploy/kubernetes-dashboard.yaml

仪表板已部署到集群创建的一部分->应该设置注释: https://github.com/kubernetes/kubernetes/blob/master/cluster/addons/dashboard/dashboard-controller.yaml

至少这是前一段时间的行为。我认为kubeadm不使用插件管理器。但这仍然是kube-up脚本的一部分。

此行为的解决方案也存在:添加其他标签addonmanager.kubernetes.io/mode: EnsureExists

说明是here

您的最终服务应如下所示:

# ------------------- Dashboard Service ------------------- #

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: EnsureExists
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  ports:
    - port: 443
      targetPort: 8443
  selector:
    k8s-app: kubernetes-dashboard



kubectl get svc kubernetes-dashboard -n kube-system -o yaml
apiVersion: v1
kind: Service
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"addonmanager.kubernetes.io/mode":"EnsureExists","k8s-app":"kubernetes-dashboard","kubernetes.io/cluster-service":"true"},"name":"kubernetes-dashboard","namespace":"kube-system"},"spec":{"ports":[{"port":443,"targetPort":8443}],"selector":{"k8s-app":"kubernetes-dashboard"}}}
  labels:
    addonmanager.kubernetes.io/mode: EnsureExists
    k8s-app: kubernetes-dashboard
    kubernetes.io/cluster-service: "true"



kubectl cluster-info
Kubernetes master is running at https://*.*.*.*
...
kubernetes-dashboard is running at https://*.*.*.*/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
...
本文链接:https://www.f2er.com/3144995.html

大家都在问