【问题标题】:Kubernetes: Route Kubernetes dashboard through Ingress with out host and without proxyKubernetes:通过 Ingress 路由 Kubernetes 仪表板,无需主机且无需代理
【发布时间】:2021-01-19 15:28:48
【问题描述】:

集群信息:

安装方法:kubeadm
Kubernetes:1.19.2
主节点和节点:Ubuntu 20.04.1 (Oracle Virutalbox)
码头工人:19.03.12
印花布:3.16.1
入口:裸机 - 0.40.1

我想在笔记本电脑上使用不带代理的 ingress 访问 Kubernetes 仪表板?

谁能帮我完成这些步骤...(我在互联网的帮助下尝试了多种方法...不确定我在哪里失踪?)

注意:根据讨论论坛,我在入口 YAML 的部署部分下添加了“hostNetwork:true”以解决“没有主机参数时无法工作”并评论“类型:NodePort”。

更新信息:

我创建了 ingress-controller 作为守护进程而不是部署/pod - 这有助于直接使用工作人员 IP 进行访问。 (这是我所期待的 - 但无法访问 kubernetes 仪表板,因为它位于不同的命名空间中)

入口 yaml:这是在默认命名空间中运行的

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - http:
        paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: kdash-in-ns
          port:
            number: 443

kdash-in-ns yaml - 带有外部名称的 svc

kind: Service
apiVersion: v1
metadata:
  name: kdash-in-ns
  namespace: default
spec:
  type: ExternalName
  externalName: kubernetes-dashboard.kubernetes-dashboard.svc.cluster.local
  ports:
  - name: https
    port: 443

下面是关于带有 ExternalName 的 kdash-in-ns svc 的详细信息

dockeras@ubuntu3:~/simplek8s/kubernetes/yamls/ingress-demo$ kubectl describe svc kdash-in-ns
Name:              kdash-in-ns
Namespace:         default
Labels:            <none>
Annotations:       <none>
Selector:          <none>
Type:              ExternalName
IP:
External Name:     kubernetes-dashboard.kubernetes-dashboard.svc.cluster.local
Port:              https  443/TCP
TargetPort:        443/TCP
Endpoints:         <none>
Session Affinity:  None
Events:            <none>

kubectl 描述更新的入口路由:在此我有 ngnix - 工作正常(我猜入口和 nginx 都在同一个命名空间中。仪表板出现错误 - 因为它在不同的命名空间中(kubernetes-dasbhoard))

dockeras@ubuntu3:~$ kubectl describe ing nginx-ingress
Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
Name:             nginx-ingress
Namespace:        default
Address:          192.168.1.31,192.168.1.32
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
  Host        Path  Backends
  ----        ----  --------
  *
              /nginx       nginx-deploy-main:80   )
              /foo         kubernetes-dashboard:443 (<error: endpoints "kubernetes-dashboard" not found>)
              /dashboard   kdash-in-ns:443 (<error: endpoints "kdash-in-ns" not found>)
Annotations:  kubernetes.io/ingress.class: nginx
              nginx.ingress.kubernetes.io/rewrite-target: /$2
Events:
  Type    Reason  Age    From                      Message
  ----    ------  ----   ----                      -------
  Normal  CREATE  4m40s  nginx-ingress-controller  Ingress default/nginx-ingress

当我在下面的浏览器中尝试相同的 URL 时得到响应(我的一个工人 iP - 192.168.1.31)

192.168.1.31/nginx - 使用 nginx 默认页面响应(pod - nginx-deploy-main)

192.168.1.31/foo - 错误页面 - 503 服务暂时不可用(默认 nginx)

192.168.1.31/dashboard - 504 网关超时(默认 nginx)

运行 svc,pod:

All Pods and svcs

【问题讨论】:

    标签: kubernetes kubernetes-ingress


    【解决方案1】:

    如果我理解正确,您想从集群外部访问 kubernetes 服务(仪表板)。您可以部署 metallb LoadBalancer 并管理从外部集群网络中分配给您的集群的 IP。

    因此,您可以分配一个 IP 和一个 LoadBalancer,您将通过它们访问您的服务。以下是 mssql 服务器的示例,但您可以使用仪表板轻松调整它以适应您的需求:

    apiVersion: v1
    kind: Service
    metadata:
      name: sql-server-lb
      namespace: database-server
      annotations:
        metallb.universe.tf/address-pool: default
    spec:
      selector:
        app: sql-server
      ports:
      - port: 1433
        targetPort: 1433
      type: LoadBalancer
    
    

    https://metallb.universe.tf/

    【讨论】:

    • 感谢@mnikolic 的回复,从发帖到现在我做了一些研究,能够将 ingress-controller 作为守护程序集应用,并且能够通过入口规则访问(nginx 基本)。但问题是,我无法使用相同的规则访问 kubernetes 仪表板 - 我尝试使用带有 >.>.svc.cluster.local 的外部名称服务 - 但没有运气:( (目标是不使用 LB,因为它正在学习/开发,同时提升到更高的环境。同样将与 HLB 集成)
    • 您可以编辑帖子并提供您部署的山药和配置吗?
    • @Vitalii,感谢您的回复.. 更新了更多数据的帖子..
    猜你喜欢
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    相关资源
    最近更新 更多