kubernetes 无地址[已关闭]

pod7payv  于 2024-01-06  发布在  Kubernetes
关注(0)|答案(2)|浏览(139)

**已关闭。**此问题为not about programming or software development。目前不接受回答。

此问题似乎与a specific programming problem, a software algorithm, or software tools primarily used by programmers无关。如果您认为此问题与another Stack Exchange site的主题相关,可以发表评论,说明在何处可以回答此问题。
上个月就关门了。
Improve this question
我在我的机器上有一个小k8s集群,我试图做一些学习的东西,但我现在堆叠。
我有2个应用程序,mysql和另一个WordPress的一个,他们都工作得很好。当我给予WordPress的LoadBalancer类型,它需要一个IP,我可以在我的浏览器中看到.
所以我想创建一个Ingress,并通过主机名调用,但Ingress不需要负载均衡器IP。我做错了什么吗?
这是我的Ingress配置

  1. apiVersion: networking.k8s.io/v1
  2. kind: Ingress
  3. metadata:
  4. name: wp-ingress
  5. kubernetes.io/ingress.class: nginx
  6. labels:
  7. name: wp-ingress
  8. spec:
  9. rules:
  10. - host: wordpress.pandora.local
  11. http:
  12. paths:
  13. - pathType: Prefix
  14. path: "/"
  15. backend:
  16. service:
  17. name: wp-svc
  18. port:
  19. number: 80
  20. - host: phpmyadmin.pandora.local
  21. http:
  22. paths:
  23. - pathType: Prefix
  24. path: "/"
  25. backend:
  26. service:
  27. name: phpmyadmin-svc
  28. port:
  29. number: 80

字符串
和问题

  1. # kg ingress
  2. NAME CLASS HOSTS ADDRESS PORTS AGE
  3. wp-ingress <none> wordpress.pandora.local,phpmyadmin.pandora.local 80 38m


我使用Metallb的负载均衡器,我知道这是工作,因为WordPress的,但如果你想看看

  1. kg svc -A
  2. NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  3. calico-apiserver calico-api ClusterIP 10.108.149.243 <none> 443/TCP 45h
  4. calico-system calico-kube-controllers-metrics ClusterIP 10.100.211.40 <none> 9094/TCP 45h
  5. calico-system calico-typha ClusterIP 10.107.217.253 <none> 5473/TCP 45h
  6. default kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 45h
  7. default mysql-svc ClusterIP 10.103.110.242 <none> 3306/TCP 3h1m
  8. default phpmyadmin-svc ClusterIP 10.105.195.144 <none> 80/TCP 156m
  9. default wp-svc ClusterIP 10.100.96.37 <none> 80/TCP 126m
  10. ingress-nginx ingress-nginx-controller LoadBalancer 10.99.196.206 192.168.188.20 80:30986/TCP,443:32709/TCP 49m
  11. ingress-nginx ingress-nginx-controller-admission ClusterIP 10.99.212.249 <none> 443/TCP 49m
  12. kube-system kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 45h


我如何解决这种情况

vxqlmq5t

vxqlmq5t1#

我解决了。谢谢帮助:)这个问题是关于进入类。

  1. kind: Ingress
  2. metadata:
  3. name: wp-ingress
  4. spec:
  5. rules:
  6. - host: wordpress.pandora.local
  7. http:
  8. paths:
  9. - pathType: Prefix
  10. path: "/"
  11. backend:
  12. service:
  13. name: wp-svc
  14. port:
  15. number: 80
  16. - host: phpmyadmin.pandora.local
  17. http:
  18. paths:
  19. - pathType: Prefix
  20. path: "/"
  21. backend:
  22. service:
  23. name: phpmyadmin-svc
  24. port:
  25. number: 80
  26. ingressClassName: nginx

字符串
我添加了最后一行 ingressClassName:nginx 定义,它的工作!

  1. kg ingress
  2. NAME CLASS HOSTS ADDRESS PORTS AGE
  3. wp-ingress nginx wordpress.pandora.local,phpmyadmin.pandora.local 192.168.88.20 80 5h19m

展开查看全部
sdnqo3pr

sdnqo3pr2#

尽管这里已经有了一个公认的答案,但我还是想展示一下解决这个问题的步骤。

here完整源代码。

第一步

检查入口

  1. kubectl get ingress -n local

字符串
您将看到控制器没有为主机名分配任何地址。


的数据

第二步

确保您已安装Ingress Controller。请按照说明here操作。

第三步

检查入口控制器日志。我在这里使用Kubernetes Jmeter 板。如果你愿意,你可以使用kubectl。错误将告诉你问题。



这是在日志中看到的错误:

  1. "Ignoring ingress because of error while validating ingress class" ingress="local/test-app-release-test-app-api" error="ingress does not contain a valid IngressClass"

第四步

找到IngressClass。您可以通过运行以下命令获得此信息:kubectl get ingressclasses或通过K8s Jmeter 板找到它。

命令方式:


** Jmeter 板方式:**


第五步

更新您的入口

  1. apiVersion: networking.k8s.io/v1
  2. kind: Ingress
  3. metadata:
  4. name: test-app-release-test-app-api
  5. labels:
  6. helm.sh/chart: test-app-api-0.1.0
  7. app.kubernetes.io/name: test-app-api
  8. app.kubernetes.io/instance: test-app-release
  9. app.kubernetes.io/version: "1.16.0"
  10. app.kubernetes.io/managed-by: Helm
  11. annotations:
  12. nginx.ingress.kubernetes.io/rewrite-target: /$2
  13. nginx.ingress.kubernetes.io/use-regex: "true"
  14. spec:
  15. ingressClassName: nginx # <------ THIS GUY
  16. rules:
  17. - host: "chart-example.local"
  18. http:
  19. paths:
  20. - path: /my-test-app(/|$)(.*)
  21. pathType: ImplementationSpecific
  22. backend:
  23. service:
  24. name: test-app-release-test-app-api
  25. port:
  26. number: 80

第六步

部署应用程序。此时,您将能够看到控制器分配的地址。

  1. kubectl get ingress -n local

展开查看全部

相关问题