Minikube portainer externalName不起作用

问题描述

我使用以下方法部署了Portainer:

kubectl apply -n portainer -f https://raw.githubusercontent.com/portainer/k8s/master/deploy/manifests/portainer/portainer.yaml

我之前创建了命名空间“ portainer”。

我想通过入口访问portainer。

我使用externalName创建了服务

    kind: Service
apiVersion: v1
Metadata:
  name: portainer
  namespace: default
spec:
  type: ExternalName
  externalName: portainer.portainer.svc.cluster.local
  ports:
  - port: 9000

这是我的入口配置

apiVersion: networking.k8s.io/v1
kind: Ingress
Metadata:
  name: ingress-Nginx
  annotations:
    Nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /portainer
        pathType: Prefix
        backend:
          service:
            name: portainer
            port:
              number: 9000

在这里,我不知道为什么,但是当我叫“ kubectl describe ing”时,我遇到了这个问题。

/portainer   portainer:9000 (<error: endpoints "portainer" not found>)

有人可以帮我吗?

解决方法

创建一个clusterIP类型的服务,而不是外部名称

,

(<error: endpoints "portainer" not found>)是由于您没有为命名空间为ingress的对象分配命名空间而引起的:

kubectl api-resources --namespaced=true | grep ingress
ingresses                   ing          extensions                  true         Ingress
ingresses                   ing          networking.k8s.io           true         Ingress

因此,要进行更改,您必须将其分配给portainer名称空间:

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

在部署期间(kubectl apply -n portainer -f https://raw.githubusercontent.com/portainer/k8s/master/deploy/manifests/portainer/portainer.yaml )创建了一项服务,因此无需创建新服务,只需在ingress对象中引用它即可。

然后将其分配给在此命名空间中创建的服务:

Rules:
  Host        Path  Backends
  ----        ----  --------
  *           
              /portainer   portainer:9000   172.17.0.3:9000)
Annotations:  nginx.ingress.kubernetes.io/rewrite-target: /
Events:
  Type    Reason  Age   From                      Message
  ----    ------  ----  ----                      -------
  Normal  CREATE  47m   nginx-ingress-controller  Ingress portainer/ingress-nginx
  Normal  UPDATE  47m   nginx-ingress-controller  Ingress portainer/ingress-nginx