Kubernetes Nginx-Ingress规则失效问题求助
问题:Ingress规则无法生效排查
1. Ingress Controller安装信息
- 安装命令:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.5.1/deploy/static/provider/cloud/deploy.yaml - Pod运行状态:
NAME READY STATUS RESTARTS AGE ingress-nginx-admission-create-x4mss 0/1 Completed 0 28m ingress-nginx-admission-patch-jn9cz 0/1 Completed 1 28m ingress-nginx-controller-8574b6d7c9-k4jbj 1/1 Running 0 28m - Service状态:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ingress-nginx-controller LoadBalancer 10.106.134.128 localhost 80:32294/TCP,443:30997/TCP 30m
2. 应用Deployment与Service配置
apiVersion: apps/v1 kind: Deployment metadata: labels: app: app name: app namespace: namespace spec: replicas: 1 selector: matchLabels: app: app template: labels: app: app spec: containers: - image: image name: app ports: - containerPort: 5000 restartPolicy: Always --- apiVersion: v1 kind: Service metadata: name: app-service namespace: namespace spec: type: ClusterIP selector: app: app ports: - name: app-service port: 5000 targetPort: 5000
3. Ingress资源配置
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress namespace: namespace annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/rewrite-target: / spec: ingressClassName: nginx rules: - host: com.host.com http: paths: - path: / pathType: Prefix backend: service: name: app-service port: number: 5000
4. 应用资源状态验证
- Pod详细状态:
Name: app-6b9f7fc47b-sh6nc Namespace: namespace Priority: 0 Service Account: default Node: docker-desktop/192.168.65.4 Start Time: Wed, 30 Nov 2022 16:22:04 -0500 Labels: app=app pod-template-hash=6b9f7fc47b Status: Running IP: 10.1.0.237 IPs: IP: 10.1.0.237 Controlled By: ReplicaSet/app-6b9f7fc47b Containers: app: Container ID: docker://ba77235d044c24b0f1391c56a2e8653a598a5c130ea4d15ff3b41cd96659fd4a Image: image Image ID: docker://sha256:912cb58ab1c3f2dd628c0b7db4d7f9ac6df4efbe4fcb86979b6a84614db8a675 Port: 5000/TCP Host Port: 0/TCP State: Running Started: Wed, 30 Nov 2022 16:22:05 -0500 Ready: True Restart Count: 0 Environment: <none> Mounts: /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-8pmjz (ro) Conditions: Type Status Initialized True Ready True ContainersReady True PodScheduled True Volumes: kube-api-access-8pmjz: Type: Projected (a volume that contains injected data from multiple sources) TokenExpirationSeconds: 3607 ConfigMapName: kube-root-ca.crt ConfigMapOptional: <nil> DownwardAPI: true QoS Class: BestEffort Node-Selectors: <none> Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300s Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 29m default-scheduler Successfully assigned namespace/app-6b9f7fc47b-sh6nc to docker-desktop Normal Pulled 29m kubelet Container image "image" already present on machine Normal Created 29m kubelet Created container app Normal Started 29m kubelet Started container app - Ingress资源状态:
NAMESPACE NAME CLASS HOSTS ADDRESS PORTS AGE namespace ingress nginx com.host.com 80 7s
5. 已执行的排查操作
- 更换应用监听端口
- 更换Ingress Controller版本
- 将应用Service类型修改为LoadBalancer
- 在本地hosts文件中配置
com.host.com指向Ingress Controller的外部IP(localhost) - 在Docker Desktop和Minikube两个环境中均进行测试
目前Ingress规则依然无法正常生效,请求协助定位问题并解决。
内容的提问来源于stack exchange,提问作者Interlunar
相关产品推荐
相关产品推荐

