Kubernetes 尽管已创建入口资源,但未创建GCE LoadBalancer
我正在GKE上安装官方的詹金斯舵机 我是入口,因此应应用相应的入口并创建资源 据GKE官方称: 创建入口时,GKE入口控制器根据入口和相关服务中的信息创建并配置HTTPS负载平衡器。此外,负载平衡器还提供了一个稳定的IP地址,您可以将其与域名关联 然而,我的情况并非如此;入口没有与之关联的外部IP: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
▶ 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