{"id":485,"date":"2026-01-27T01:26:16","date_gmt":"2026-01-27T01:26:16","guid":{"rendered":"https:\/\/blog.gpst.net.cn:4008\/?p=485"},"modified":"2026-01-28T06:24:12","modified_gmt":"2026-01-28T06:24:12","slug":"kubernetes%e9%85%8d%e7%bd%ae%e5%92%8c%e4%bd%bf%e7%94%a8ingress-nginx","status":"publish","type":"post","link":"https:\/\/opshub.com.cn\/?p=485","title":{"rendered":"kubernetes\u914d\u7f6e\u548c\u4f7f\u7528ingress-nginx"},"content":{"rendered":"\n<p>\u9879\u76ee\u5730\u5740\uff1a<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/kubernetes\/ingress-nginx\">https:\/\/github.com\/kubernetes\/ingress-nginx<\/a><\/p>\n\n\n\n<p>\u6839\u636e\u4e0b\u8868\u627e\u5230\u5bf9\u5e94\u7248\u672c\u7684ingress-nginx\uff1a<\/p>\n\n\n\n<p>\u8fd9\u91cc\u9009\u62e9v1.6.4\uff1a<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/kubernetes\/ingress-nginx\/releases\/tag\/controller-v1.6.4\">https:\/\/github.com\/kubernetes\/ingress-nginx\/releases\/tag\/controller-v1.6.4<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"217\" src=\"https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/image-107-1024x217.png\" alt=\"\" class=\"wp-image-486\" srcset=\"https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/image-107-1024x217.png 1024w, https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/image-107-300x64.png 300w, https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/image-107-768x163.png 768w, https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/image-107.png 1038w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u4e0b\u8f7d\uff1a<a href=\"https:\/\/github.com\/kubernetes\/ingress-nginx\/archive\/refs\/tags\/controller-v1.6.4.tar.gz\">https:\/\/github.com\/kubernetes\/ingress-nginx\/archive\/refs\/tags\/controller-v1.6.4.tar.gz<\/a><\/p>\n\n\n\n<p>\u63d0\u53d6ingress-nginx-controller-v1.6.4.tar.gz\\ingress-nginx-controller-v1.6.4\\deploy\\static\\provider\\baremetal\u4e0b\u7684deploy.yaml<\/p>\n\n\n\n<p>\u641c\u7d22\uff1aDeployment\uff0c\u505a\u4e00\u4e9b\u4fee\u6539\uff1a<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"876\" height=\"816\" src=\"https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/Image-108.png\" alt=\"\" class=\"wp-image-488\" srcset=\"https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/Image-108.png 876w, https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/Image-108-300x279.png 300w, https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/Image-108-768x715.png 768w\" sizes=\"auto, (max-width: 876px) 100vw, 876px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl apply -f deploy.yaml\n\u6ce8\u610f\uff1a\u5378\u8f7dingress-nginx\u7684\u65b9\u6cd5\uff1akubectl delete ns ingress-nginx\nkubectl get pod -n ingress-nginx<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"110\" src=\"https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/Image-109-1024x110.png\" alt=\"\" class=\"wp-image-489\" srcset=\"https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/Image-109-1024x110.png 1024w, https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/Image-109-300x32.png 300w, https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/Image-109-768x83.png 768w, https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/Image-109.png 1418w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>\u521b\u5efaingress\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>root@k8s-master1:~# cat ingress.yaml\napiVersion: networking.k8s.io\/v1\nkind: Ingress\nmetadata:\n  name: ingress-nginx\n  namespace: dev          \u540d\u79f0\u7a7a\u95f4\u8981\u548cservice\u4e00\u6837\nspec:\n  ingressClassName: nginx\n  rules:\n  - host: nginx.example.com\n    http:\n      paths:\n      - backend:\n          service:\n            name: svc-nginx  service\u7684\u540d\u5b57\n            port:\n              number: 8000   service\u7684\u7aef\u53e3\n        path: \/\n        pathType: Prefix<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl apply -f ingress.yaml\n\u6ce8\u610f\uff1a\nroot@k8s-master1:~# kubectl apply -f ingress.yaml            \nError from server (InternalError): error when creating \"ingress.yaml\": Internal error occurred: failed calling webhook \"validate.nginx.ingress.kubernetes.io\": failed to call webhook: Post \"https:\/\/ingress-nginx-controller-admission.ingress-nginx.svc:443\/networking\/v1\/ingresses?timeout=10s\": context deadline exceeded\n\u89e3\u51b3\u65b9\u6cd5\uff1a\nroot@k8s-master1:~# kubectl get ValidatingWebhookConfiguration\nNAME                      WEBHOOKS   AGE\ningress-nginx-admission   1          33m\nroot@k8s-master1:~# kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission\nvalidatingwebhookconfiguration.admissionregistration.k8s.io \"ingress-nginx-admission\" deleted\nroot@k8s-master1:~# kubectl apply -f ingress.yaml            \ningress.networking.k8s.io\/ingress-nginx created\nroot@k8s-master1:~# kubectl get ing -n dev<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"875\" height=\"95\" src=\"https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/Image-110.png\" alt=\"\" class=\"wp-image-490\" srcset=\"https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/Image-110.png 875w, https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/Image-110-300x33.png 300w, https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/Image-110-768x83.png 768w\" sizes=\"auto, (max-width: 875px) 100vw, 875px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code\"><code>root@k8s-master1:~# cat nginx-dp-svc-pvc.yaml\napiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: nginx-deployment\n  namespace: dev\n  labels:\n    app: nginx\nspec:\n  replicas: 3\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n      - image: nginx\n        name: nginx\n        volumeMounts:\n        - name: nginx-pv-storage\n          mountPath: \/usr\/share\/nginx\/html\n      volumes:\n      - name: nginx-pv-storage\n        persistentVolumeClaim:\n          claimName: pvc-nginx\n---\napiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    app: svc-nginx\n  name: svc-nginx\n  namespace: dev\nspec:\n  ports:\n  - name: 8000-80\n    port: 8000\n    protocol: TCP\n    targetPort: 80\n  selector:\n    app: nginx\n  type: NodePort<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>kubectl apply -f nginx-dp-svc-pvc.yaml\nroot@k8s-master1:~# kubectl get all -n ingress-nginx\n\u6ce8\u610f\uff1a\nnginx-ingress-controller \u670d\u52a1\u662fLoadBalancer \u7c7b\u578b\uff0c\u4e00\u76f4pending\n\u95ee\u9898\u539f\u56e0\uff1a\u81ea\u5df1\u642d\u5efa\u7684k8s\u96c6\u7fa4 \uff08\u516c\u6709\u4e91\u73af\u5883\u9664\u5916\uff09\uff0c\u662f\u6ca1\u6709LB\u80fd\u529b\u7684\n\u89e3\u51b3\u65b9\u6cd5\uff1adeploy.yaml\u91cc\u9762\u5c06LoadBalancer\u6362\u6210NodePort\uff0c\u91cd\u65b0apply<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"314\" src=\"https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/Image-111-1024x314.png\" alt=\"\" class=\"wp-image-491\" srcset=\"https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/Image-111-1024x314.png 1024w, https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/Image-111-300x92.png 300w, https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/Image-111-768x235.png 768w, https:\/\/opshub.com.cn\/wp-content\/uploads\/2026\/01\/Image-111.png 1279w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>hosts\u6587\u4ef6\u52a0\u4e2a\u9759\u6001\u89e3\u6790\uff1a<\/p>\n\n\n\n<p>192.168.2.137<a href=\"http:\/\/nginx.example.com\/\">nginx.example.com<\/a><\/p>\n\n\n\n<p>\u6216\u8005<\/p>\n\n\n\n<p>192.168.2.138\u00a0<a href=\"http:\/\/nginx.example.com\/\">nginx.example.com<\/a><\/p>\n\n\n\n<p>\u6d4b\u8bd5 \uff1aroot@etcd3:~# curl nginx.example.com<\/p>\n\n\n\n<p>hello,pv<\/p>\n\n\n\n<p>root@etcd3:~#<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u9879\u76ee\u5730\u5740\uff1a https:\/\/github.com\/kubernetes\/ingress-nginx \u6839\u636e\u4e0b\u8868\u627e\u5230\u5bf9\u5e94\u7248\u672c\u7684ingress-nginx\uff1a \u8fd9\u91cc\u9009\u62e9v1.6.4\uff1a https:\/\/github.com\/kubernetes\/ingress-nginx\/releases\/tag\/controller-v1.6.4 \u4e0b\u8f7d\uff1ahttps:\/\/github.com\/kubernetes\/ingress-nginx\/archive\/refs\/tags\/controller-v1.6.4.tar.gz \u63d0\u53d6ingress-nginx-controller-v1.6.4.tar.gz\\ingress-nginx-controller-v1.6.4\\deploy\\static\\provider\\baremetal\u4e0b\u7684deploy.yaml \u641c\u7d22\uff1aDeployment\uff0c\u505a\u4e00\u4e9b\u4fee\u6539\uff1a \u521b\u5efaingress\uff1a hosts\u6587\u4ef6\u52a0\u4e2a\u9759\u6001\u89e3\u6790\uff1a 192.168.2.137nginx.example.com \u6216\u8005 192.168.2.138\u00a0nginx.example.com \u6d4b\u8bd5 \uff1aroot@etcd3:~# curl nginx.example.com hello,pv root@etcd3:~#<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-485","post","type-post","status-publish","format-standard","hentry","category-dockerkubernetes"],"_links":{"self":[{"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/posts\/485","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=485"}],"version-history":[{"count":2,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/posts\/485\/revisions"}],"predecessor-version":[{"id":609,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=\/wp\/v2\/posts\/485\/revisions\/609"}],"wp:attachment":[{"href":"https:\/\/opshub.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=485"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=485"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opshub.com.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}