gpt4 book ai didi

kubernetes - 我可以通过指向特定服务器而不是本地主机的域名访问我的 Kubernetes 仪表板吗

转载 作者:行者123 更新时间:2023-12-02 11:33:07 24 4
gpt4 key购买 nike

文件跟随
https://docs.aws.amazon.com/eks/latest/userguide/dashboard-tutorial.html

我可以设置仪表板并使用链接 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/#!/login 访问它

问题在于“每个用户都必须遵循相同的操作才能访问仪表板”

我想知道是否有某种方式可以让我们通过域名访问仪表板,并且每个人都应该能够访问它而无需太多预先设置。

最佳答案

我们有两种公开仪表板的方法,NodePortLoadBalancer .

我将展示这两种情况以及其中的一些优点和缺点。
type: NodePort
这样,您的仪表板将在 https://<MasterIP>:<Port> 中可用.

  • 我将从 Dashboard 开始,它已经部署并作为 ClusterIP 运行(就像你的一样)。
  • $ kubectl get service kubernetes-dashboard -n kubernetes-dashboard
    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    kubernetes-dashboard ClusterIP 10.0.11.223 <none> 80/TCP 11m
  • 我们修补服务以更改 ServiceType :
  • $ kubectl patch svc kubernetes-dashboard -n kubernetes-dashboard -p '{"spec": {"type": "NodePort"}}'
    service/kubernetes-dashboard patched

    注:您也可以以 YAML 格式申请更改字段 type: ClusterIPtype: Nodeport ,相反,我想用 kubectl patch 展示一个直接的方法。使用 JSON 格式修补相同的字段。
  • 现在让我们列出来查看新端口:
  • $ kubectl get service kubernetes-dashboard -n kubernetes-dashboard
    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    kubernetes-dashboard NodePort 10.0.11.223 <none> 443:31681/TCP 13m

    注:在从外部集群访问之前,您必须启用节点的安全组以允许通过暴露端口的传入流量,或此处为 GKE .
    下面是我在 Google Cloud 上创建规则的示例,但同样的概念适用于 EKS .
    $ gcloud compute firewall-rules create test-node-port --allow tcp:31681
    Creating firewall...⠹Created [https://www.googleapis.com/compute/v1/projects/owilliam/global/firewalls/test-node-port].
    Creating firewall...done.
    NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED
    test-node-port default INGRESS 1000 tcp:31681 False

    $ kubectl get nodes --output wide
    NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP
    gke-cluster-1-pool-1-4776b3eb-16t7 Ready <none> 18d v1.15.8-gke.3 10.128.0.13 35.238.162.157

  • 我将使用 https://35.238.162.157:31681 访问它:

  • enter image description here
    type: LoadBalancer
    这样,您的仪表板将在 https://IP 中可用.
  • 使用 LoadBalancer您的云提供商会自动执行防火墙规则和端口转发,并为其分配 IP。 (根据您的计划,您可能需要支付额外费用)。
  • 和以前一样,我删除了服务并再次创建为clusterIP:
  • $ kubectl get service kubernetes-dashboard -n kubernetes-dashboard
    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    kubernetes-dashboard ClusterIP 10.0.2.196 <none> 443/TCP 15s

    $ kubectl patch svc kubernetes-dashboard -n kubernetes-dashboard -p '{"spec": {"type": "LoadBalancer"}}'
    service/kubernetes-dashboard patched

    $ kubectl get service kubernetes-dashboard -n kubernetes-dashboard
    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    kubernetes-dashboard LoadBalancer 10.0.2.196 <pending> 443:30870/TCP 58s

    $ kubectl get service kubernetes-dashboard -n kubernetes-dashboard
    NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
    kubernetes-dashboard LoadBalancer 10.0.2.196 35.232.133.138 443:30870/TCP 11m

    注:当您应用它时,EXTERNAL-IP 将在 <pending>状态,几分钟后应该分配一个公共(public) IP,如上所示。
  • 您可以使用 https://35.232.133.138 访问它:

  • enter image description here

    安全注意事项:
  • 暴露时,您与仪表板的连接始终是通过 HTTPS 进行的,每次输入时您都可能会收到有关自动生成证书的通知,除非您将其更改为受信任的证书。您可以找到更多here
  • 由于仪表板不会暴露太多,我建议使用公共(public) IP (或自定义 dns 名称,如果是 aws,即:*****.us-west-2.elb.amazonaws .com)。
  • 如果您真的想集成到您的主域名中,我建议您将其置于您网站上的另一层身份验证之后。
  • 新访问仍然需要访问 token ,但没有人必须通过该过程来公开仪表板,您只需传递 IP/DNS 地址和 token 即可访问它。
  • 此 token 具有集群管理员访问权限,因此请保持安全,因为您需要保留 root 密码。

  • 如果您有任何疑问,请告诉我!

    关于kubernetes - 我可以通过指向特定服务器而不是本地主机的域名访问我的 Kubernetes 仪表板吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60916480/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com