Kubernetes 尽管已创建入口资源,但未创建GCE LoadBalancer

Kubernetes 尽管已创建入口资源,但未创建GCE LoadBalancer,kubernetes,google-cloud-platform,google-kubernetes-engine,Kubernetes,Google Cloud Platform,Google Kubernetes Engine,我正在GKE上安装官方的詹金斯舵机 我是入口,因此应应用相应的入口并创建资源 据GKE官方称: 创建入口时,GKE入口控制器根据入口和相关服务中的信息创建并配置HTTPS负载平衡器。此外,负载平衡器还提供了一个稳定的IP地址,您可以将其与域名关联 然而,我的情况并非如此;入口没有与之关联的外部IP: ▶ k get ingress --all-namespaces NAMESPACE NAME HOSTS ADDRESS PORTS AGE jenk

我正在GKE上安装官方的詹金斯舵机

我是入口,因此应应用相应的入口并创建资源

据GKE官方称:

创建入口时,GKE入口控制器根据入口和相关服务中的信息创建并配置HTTPS负载平衡器。此外,负载平衡器还提供了一个稳定的IP地址,您可以将其与域名关联

然而,我的情况并非如此;入口没有与之关联的外部IP:

▶ k get ingress --all-namespaces
NAMESPACE   NAME                HOSTS   ADDRESS   PORTS   AGE
jenkins     jenkins-inception   *                 80      82s
以下是实际的入口资源:

▶ k get ingress --all-namespaces -o yaml
apiVersion: v1
items:
- apiVersion: extensions/v1beta1
  kind: Ingress
  metadata:
    annotations:
      kubernetes.io/ingress.class: nginx
    creationTimestamp: "2020-01-24T21:20:49Z"
    generation: 1
    labels:
      app.kubernetes.io/component: jenkins-master
      app.kubernetes.io/instance: jenkins-inception
      app.kubernetes.io/managed-by: Tiller
      app.kubernetes.io/name: jenkins
      helm.sh/chart: jenkins-1.9.16
    name: jenkins-inception
    namespace: jenkins
    resourceVersion: "15741661"
    selfLink: /apis/extensions/v1beta1/namespaces/jenkins/ingresses/jenkins-inception
    uid: 6461793e-3eef-11ea-a0a5-42010a790807
  spec:
    rules:
    - http:
        paths:
        - backend:
            serviceName: jenkins-inception
            servicePort: 8080
          path: /jenkins
  status:
    loadBalancer: {}
kind: List
metadata:
  resourceVersion: ""
  selfLink: ""
为什么呢

在kubernetes.io/ingres.class注释值中尝试了nginx和gce

编辑_1:HTTP负载平衡加载项似乎已启用

然而,最奇怪的是:

▶ k describe ingress jenkins-inception -n jenkins
Error from server (NotFound): the server could not find the requested resource

~                                                                                                                                         
▶ k get ingress jenkins-inception -n jenkins
NAME                HOSTS   ADDRESS   PORTS   AGE
jenkins-inception   *                 80      11h

编辑2:

编辑_3:解决了kubectl兼容性问题后,发现入口没有生成任何事件

▶ k describe ingress jenkins-inception -n jenkins
Name:             jenkins-inception
Namespace:        jenkins
Address:
Default backend:  default-http-backend:80 (10.8.32.33:8080)
Rules:
  Host  Path  Backends
  ----  ----  --------
  *
        /jenkins   jenkins-inception:8080 (10.8.33.87:8080)
Annotations:
  kubernetes.io/ingress.class:  nginx
Events:                         <none>
编辑_5:在使用@Arghya Sadhu在评论中指出的正确注释启用实际GCE入口后,我在入口描述中看到以下错误

警告:评估入口规范时转换2s x11 over 7s负载平衡器控制器错误:服务jenkins/jenkins inception为ClusterIP类型,应为节点端口或负载平衡器

然而,这与官方jenkins helm图表中的以下内容相矛盾:

  # For minikube, set this to NodePort, elsewhere use LoadBalancer
  # Use ClusterIP if your setup includes ingress controller
编辑_6:管理以获取公共IP的入口:

  spec:
    rules:
    - http:
        paths:
        - backend:
            serviceName: jenkins-inception
            servicePort: 8080
          path: /jenkins
  status:
    loadBalancer:
      ingress:
      - ip: 12.234.543.111
但是,我无法访问以下路径:

https://12.234.543.111/jenkins
http://12.234.543.111/jenkins
https://12.234.543.111
http://12.234.543.111
编辑_7:jenkins inception服务的yaml


在入口上运行描述。如果您看到创建/添加事件,则集群中有一个入口控制器正在运行,否则,您可能在GKE集群上禁用了HttpLoadBalancingKE入口控制器加载项

编辑1:

kubernetes服务器和kubectl之间存在版本不兼容。您可以通过运行下面的命令来检查客户端和服务器版本。查看此项了解详细信息

kubectl version
编辑2:

您不应该有注释kubernetes.io/ingres.class,或者如果有注释,则需要是gce kubernetes.io/ingres.class:gce

编辑3:


根据说明,jenkins inception服务的服务类型需要为NodePort类型

检查GKE集群以确保启用HTTP lb插件。另外,当您使用nginx ingress时,您需要创建一个负载平衡器服务,nginx也不会创建GCE HTTPS LBL。您可以提供jenkins inception服务的yaml吗?更新为yaml当您卷曲这些端点时会出现什么错误?如果连接超时,您可能需要在GCP中打开防火墙。顺便说一句,我想你最初提出的负载平衡器没有被创建的问题已经得到了回答。我建议就其他问题问一个新问题。你的kubernetes版本和Kubectl版本是什么?在问题中发布了k8s客户机/服务器版本尝试降级你的Kubectl版本以解决描述入口问题。入口类根本不应该存在或者应该是gcecheck我的新更新,也许在jenkins官方掌舵的所有方式构建之后,不支持gce。
https://12.234.543.111/jenkins
http://12.234.543.111/jenkins
https://12.234.543.111
http://12.234.543.111
▶ k get svc jenkins-inception -o yaml
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2020-01-25T12:40:14Z"
  labels:
    app.kubernetes.io/component: jenkins-master
    app.kubernetes.io/instance: jenkins-inception
    app.kubernetes.io/managed-by: Tiller
    app.kubernetes.io/name: jenkins
    helm.sh/chart: jenkins-1.9.16
  name: jenkins-inception
  namespace: jenkins
  resourceVersion: "16000964"
  selfLink: /api/v1/namespaces/jenkins/services/jenkins-inception
  uid: d5bfd760-3f6f-11ea-a0a5-42010a790807
spec:
  clusterIP: 10.8.59.184
  externalTrafficPolicy: Cluster
  ports:
  - name: http
    nodePort: 30361
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app.kubernetes.io/component: jenkins-master
    app.kubernetes.io/instance: jenkins-inception
  sessionAffinity: None
  type: NodePort
status:
  loadBalancer: {}
kubectl version