簡體   English   中英

Kubernetes:在沒有主機和代理的情況下通過 Ingress 路由 Kubernetes 儀表板

[英]Kubernetes: Route Kubernetes dashboard through Ingress with out host and without proxy

集群信息:

安裝方式: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”。

更新信息:

我已經創建了入口控制器作為守護進程而不是部署/pod - 這有助於直接訪問工作 IP。 (這是我所期望的 - 但無法訪問 kubernetes 儀表板,因為它位於不同的命名空間中)

Ingress 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 和 svcs

如果我理解正確,您想從集群外部訪問 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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM