Kubernetes Ingress 无法获取服务的集群 ip
Kubernetes Ingress cannot fetch cluster ip of service
我用 calico 和 haproxy 设置了一个 kubernetes 单节点主平面。现在每当我要创建一个 Ingress 时,地址仍然是空的并且服务器 returns 出现 503 错误。
下面是我的kubernetes部署。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: wordpress
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
ports:
- port: 8080
targetPort: 8080
protocol: TCP
selector:
app: nginx
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: web-ingress
spec:
rules:
- host: wordpress.example.org
http:
paths:
- path: /
backend:
serviceName: nginx-service
servicePort: 8080
这是我在 kubernetes cl 中的输出。
NAME HOSTS ADDRESS PORTS AGE
ingress.extensions/web-ingress wordpress.example.org 80 35s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 10h
service/nginx-service ClusterIP 10.97.189.233 <none> 8080/TCP 35s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.extensions/nginx-deployment 1/1 1 1 35s
NAME READY STATUS RESTARTS AGE
pod/nginx-deployment-7798df5dd5-gnwf2 1/1 Running 0 35s
NAME ENDPOINTS AGE
endpoints/kubernetes 164.68.103.199:6443 10h
endpoints/nginx-service 192.168.104.150:8080 36s
Pascals-MBP-c8a4:api-gateway pascal$
我希望入口将接收服务的集群 ip,并正在侦听给定的主机 uri 并提供不同于给定 503 错误的其他信息。
// 编辑:它是一个独立节点,不是桌面版或 minikube 安装!
服务默认类型是 ClusterIP,但它仅用于集群内部通信。
对于外部流量,您应该切换到 NodePort 类型。
例如:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
ports:
- port: 80
targetPort: 8080
protocol: TCP
name: http
selector:
run: nginx
如果我没记错的话,nginx alb 控制器允许使用 ClusterIP(或 LoadBalancer)。
更多信息在这里:https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
这个镜像的容器端口是80,我暴露了8080
我用 calico 和 haproxy 设置了一个 kubernetes 单节点主平面。现在每当我要创建一个 Ingress 时,地址仍然是空的并且服务器 returns 出现 503 错误。
下面是我的kubernetes部署。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: wordpress
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
ports:
- port: 8080
targetPort: 8080
protocol: TCP
selector:
app: nginx
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: web-ingress
spec:
rules:
- host: wordpress.example.org
http:
paths:
- path: /
backend:
serviceName: nginx-service
servicePort: 8080
这是我在 kubernetes cl 中的输出。
NAME HOSTS ADDRESS PORTS AGE
ingress.extensions/web-ingress wordpress.example.org 80 35s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 10h
service/nginx-service ClusterIP 10.97.189.233 <none> 8080/TCP 35s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.extensions/nginx-deployment 1/1 1 1 35s
NAME READY STATUS RESTARTS AGE
pod/nginx-deployment-7798df5dd5-gnwf2 1/1 Running 0 35s
NAME ENDPOINTS AGE
endpoints/kubernetes 164.68.103.199:6443 10h
endpoints/nginx-service 192.168.104.150:8080 36s
Pascals-MBP-c8a4:api-gateway pascal$
我希望入口将接收服务的集群 ip,并正在侦听给定的主机 uri 并提供不同于给定 503 错误的其他信息。
// 编辑:它是一个独立节点,不是桌面版或 minikube 安装!
服务默认类型是 ClusterIP,但它仅用于集群内部通信。 对于外部流量,您应该切换到 NodePort 类型。 例如:
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
type: NodePort
ports:
- port: 80
targetPort: 8080
protocol: TCP
name: http
selector:
run: nginx
如果我没记错的话,nginx alb 控制器允许使用 ClusterIP(或 LoadBalancer)。
更多信息在这里:https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
这个镜像的容器端口是80,我暴露了8080