kubernetes 无地址[已关闭]

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

**已关闭。**此问题为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配置

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: wp-ingress
  kubernetes.io/ingress.class: nginx
  labels:
    name: wp-ingress
spec:
  rules:
  - host: wordpress.pandora.local
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: wp-svc
            port: 
              number: 80
  - host: phpmyadmin.pandora.local
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: phpmyadmin-svc
            port: 
              number: 80

字符串
和问题

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


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

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


我如何解决这种情况

vxqlmq5t

vxqlmq5t1#

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

kind: Ingress
metadata:
  name: wp-ingress
spec:
  rules:
  - host: wordpress.pandora.local
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: wp-svc
            port:
              number: 80
  - host: phpmyadmin.pandora.local
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: phpmyadmin-svc
            port:
              number: 80
  ingressClassName: nginx

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

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

sdnqo3pr

sdnqo3pr2#

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

here完整源代码。

第一步

检查入口

kubectl get ingress -n local

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


的数据

第二步

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

第三步

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



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

"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 板方式:**


第五步

更新您的入口

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: test-app-release-test-app-api
  labels:
    helm.sh/chart: test-app-api-0.1.0
    app.kubernetes.io/name: test-app-api
    app.kubernetes.io/instance: test-app-release
    app.kubernetes.io/version: "1.16.0"
    app.kubernetes.io/managed-by: Helm
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  ingressClassName: nginx    # <------ THIS GUY
  rules:
    - host: "chart-example.local"
      http:
        paths:
          - path: /my-test-app(/|$)(.*)
            pathType: ImplementationSpecific
            backend:
              service:
                name: test-app-release-test-app-api
                port:
                  number: 80

第六步

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

kubectl get ingress -n local

相关问题