当前位置: 首页 > 知识库问答 >
问题:

Kubernetes:通过入口路由Kubernetes仪表板,主机输出,没有代理

姬浩渺
2023-03-14

有人能帮我走台阶吗...(我在互联网的帮助下尝试了多种方法...不知道我错过了什么?)

注意:根据讨论论坛,我在ingress YAML的部署部分中添加了“hostnetwork:true”来解决“没有主机参数不能工作”,并注释了“type:nodeport”。

更新信息:

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
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
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--它工作得很好(我猜ingress和nginx都在相同的命名空间中...仪表板的geting错误--因为它在不同的命名空间(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)

运行svc、吊舱:

所有吊舱和SVC

共有1个答案

甄云
2023-03-14

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

因此,您可以分配一个IP和一个LoadBalancer来访问您的服务。下面是mssql server的一个示例,但您可以通过仪表板轻松地使其适应您的需要:

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/

 类似资料:
  • null 申请后: 仪表板可以通过库贝代理访问。所以我把service命名为Nodeport: 然后我尝试通过https Nodeport访问仪表板。它失败了。当我试图访问192.168.100.31或192.168.100.32时,比如:

  • 我有以下入口设置: 当我点击时,我被重定向到,并带有NGINX 404未找到。 根据日志,可以看到< code>grafana窗格被查询命中: logger = context traceID = 0000000000000000000000000000 userId = 0 orgId = 0 uname = t = 2022-10-13t 16:19:57.989170173 z level

  • 但是在我的群集上没有服务/部署: 谢谢你的帮助

  • > Kubectl apply-f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recomended.yaml kubectl代理--address=“192.168.56.12”-p 8001-accept-hosts='^*$' [root@k8s-master~]#kubectl

  • 我看到了一些示例,其中Kubernetes集群安装了ingress控制器,然后ingress类添加了注释和主机,如下所示。 我不确定安装了哪个服务,哪个IP配置了DNS“k8s.privatecoud.com”,以便路由请求?DNS路由“k8s.privatecoud.com”如何将请求路由到Kubernetes集群?kubernetes桥的入口是如何工作的? 此外,可以使用主机规则配置许多服务,

  • 我已经配置了istio ingress,使用了lets加密证书。我可以通过使用网关和VirtualService访问https上运行在不同端口上不同服务。 但是kubernetes-dashboard运行在kube-system名称空间中的443端口上,并且具有自己的证书,我如何通过istio网关和VirtualService来公开它。 我已经为dashboard定义了子域,创建了网关,virtu