我正在使用k8s v19在Redhat7.9机器上部署Jenkins应用程序,我能够连接到端口号为(Jenkins-test-ci.xyz.com:32419(节点端口))的应用程序URL。但无法通过jenkins-test-ci.xyz.com.登录
我已经配置了Nodeport服务和侵入规则,如下所示
---
apiVersion: v1
kind: Service
metadata:
labels:
run: jenkins-test-svc
name: jenkins-test-svc
namespace: ci-cd
spec:
type: NodePort
ports:
- name: webui
port: 8080
protocol: TCP
targetPort: 8080
- name: jnlp
port: 50000
protocol: TCP
targetPort: 50000
selector:
app: jenkins-test
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: jenkins-test
namespace: ci-cd
spec:
tls:
- hosts:
- jenkins-test-ci.xyz.com
secretName: qa-pss-ci
rules:
- host: jenkins-test-ci.xyz.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: jenkins-test-svc
port:
number: 8080root@xyz deployments# kubectl日志haproxy ingress snkjc -n入口-控制器
I0105 09:13:06.968207 6 launch.go:142]
Name: HAProxy
Release: v0.7.1
Build: git-5dc0d6f
Repository: https://github.com/jcmoraisjr/haproxy-ingress
I0105 09:13:06.968268 6 launch.go:145] Watching for ingress class: haproxy
I0105 09:13:06.969008 6 launch.go:345] Creating API client for https://x.x.x.x:443
I0105 09:13:06.977711 6 launch.go:357] Running in Kubernetes Cluster version v1.19 (v1.19.6) - git (clean) commit fbf646b339dc52336b55d8ec85c181981b86331a - platform linux/amd64
I0105 09:13:06.979849 6 launch.go:169] validated ingress-controller/ingress-default-backend as the default backend
I0105 09:13:06.984382 6 controller.go:1496] starting Ingress controller
I0105 09:13:06.992673 6 event.go:218] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"ci-cd", Name:"jenkins-test", UID:"b06bb11c-427c-4fe6-a543-8f6d1705237c", APIVersion:"extensions", ResourceVersion:"1230711", FieldPath:""}): type: 'Normal' reason: 'CREATE' Ingress ci-cd/jenkins-test
I0105 09:13:12.322064 6 controller.go:1504] running initial sync of secrets
I0105 09:13:12.323590 6 backend_ssl.go:71] adding secret ci-cd/qa-pss-ci to the local store
I0105 09:13:12.323760 6 leaderelection.go:174] attempting to acquire leader lease...
W0105 09:13:12.325376 6 controller.go:521] service ingress-controller/ingress-default-backend does not have any active endpoints
I0105 09:13:12.325579 6 controller.go:332] backend reload required
I0105 09:13:12.330463 6 leaderelection.go:184] successfully acquired lease ingress-controller/ingress-controller-leader-haproxy
I0105 09:13:12.330511 6 status.go:199] new leader elected: haproxy-ingress-snkjc
I0105 09:13:12.358898 6 controller.go:341] ingress backend successfully reloaded...
I0105 09:13:16.360882 6 controller.go:332] backend reload required
I0105 09:13:16.394526 6 controller.go:341] ingress backend successfully reloaded...请建议您修一下这个issue.Thank
发布于 2021-01-11 09:02:33
如果没有关于HAProxy Ingress controller的其他信息(比如我对您的的实际设置),就很难确定实际的问题。
在您的问题中,有一些与提供HAProxy Ingress Controller有关的冲突信息。
您被拒绝连接的最可能原因是,您的Service HAProxy Ingress Controller的配置方式不允许您只访问:http://jenkins-test-ci.xyz.com (端口80)。
假设您遵循了文档(任意一个),两种解决方案都使用类型为Service NodePort 的来允许入站通信量到达控制器。这内在地迫使您的Ingress资源在Ingress上可用(nodeport端口范围:30000-32767):
您可以通过运行以下命令来检查Ingress控制器是如何公开的:
$ kubectl get svc -n NAMESPACE上述命令的输出应类似于:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
haproxy-ingress NodePort 10.233.39.4 <none> 80:32149/TCP,443:30011/TCP,1024:31532/TCP 3h56m
ingress-default-backend ClusterIP 10.233.18.215 <none> 8080/TCP 3h56m按照这个示例,如果您的应用程序公开了Ingress资源,并且希望连接到它,则需要连接到node_ip:32149 (请参阅haproxy-ingress上的端口)。
为了能够在端口(如80和/或443 )上公开您的Ingress资源,您需要使用LoadBalancer类型的Service。用于公开您的Service HAProxy Ingress Controller 的 NodePort 将需要从NodePort更改为 LoadBalancer 类型。
此Service (LoadBalancer)将要求您“提供”可为此特定原因分配的IP地址。对于提供者管理的Kubernetes解决方案(如GKE、EKS或AKS ),这个过程是自动化的。对于前提条件下的解决方案,您需要使用MetalLB
Kubernetes没有为裸金属集群提供网络负载均衡器(LoadBalancer型服务)的实现。Kubernetes所提供的网络LB的实现都是调用各种IaaS平台(GCP、AWS、Azure…)的胶接代码。。如果您没有在受支持的IaaS平台(GCP、AWS、Azure…)上运行,LoadBalancers在创建时将无限期地处于“待决”状态。 留给裸金属集群运营商的是两个较小的工具,用于将用户流量引入集群,即“NodePort”和“外部to”服务。这两种选择对生产使用都有很大的不利影响,这使库伯奈特生态系统中裸露的金属簇成为二等公民。 MetalLB旨在通过提供一个与标准网络设备集成的网络LB实现来纠正这种不平衡,从而使裸金属集群上的外部服务也尽可能地“正常工作”。
追加资源:
https://stackoverflow.com/questions/65594625
复制相似问题