空地址Kubernetes入口 [英] Empty ADDRESS kubernetes ingress

查看:13
本文介绍了空地址Kubernetes入口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试在Kubernetes集群上配置入口。我按照documentation安装入口控制器,并运行以下命令

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/baremetal/service-nodeport.yaml

之后,默认的-http-Backend和nginx-inress-control开始运行:

ingress-nginx   default-http-backend-846b65fb5f-6kwvp      1/1       Running   0          23h       192.168.2.28   node1
ingress-nginx   nginx-ingress-controller-d658896cd-6m76j   1/1       Running   0          6m        192.168.2.31   node1

我尝试测试入口并部署了以下服务:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: echoserver-deploy
spec:
  replicas: 2
  selector:
    matchLabels:
      app: echo
  template:
    metadata:
      labels:
        app: echo
    spec:
      containers:
        - name: my-echo
          image: gcr.io/google_containers/echoserver:1.8
---
apiVersion: v1
kind: Service
metadata:
  name: echoserver-svc
spec:
  selector:
    app: echo
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 8080

和以下入口:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: happy-ingress
  annotations:
    INGRESS.kubernetes.io/rewrite-target: /
spec:
  rules:
    - host: happy.k8s.io
      http:
        paths:
          - path: /echoserver
            backend:
              serviceName: echoserver-svc
              servicePort: 8080

当我运行命令‘kubectl get ing’时收到:

NAME            HOSTS          ADDRESS   PORTS     AGE
happy-ingress   happy.k8s.io             80        14m

我没有解析地址,我不知道问题出在哪里,因为所有的Pod都在运行。您能给我一个提示,说明问题可能是什么吗?

谢谢

推荐答案

在创建入口规则之前,您必须按照命令启用ingress addons。您也可以在执行任何其他命令之前启用它

$ minikube addons enable ingress
ingress was successfully enabled

等待Pod启动并运行。您可以执行以下命令进行检查,并等待类似的输出

kubectl get pods -n kube-system | grep nginx-ingress-controller

nginx-ingress-controller-5984b97644-jjng2   1/1       Running   2          1h

对于Deployment,您必须指定containerPort,对于Service,您必须指定http协议。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: echoserver-deploy
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-echo
  template:
    metadata:
      labels:
        app: my-echo
    spec:
      containers:
        - name: my-echo
          image: gcr.io/kubernetes-e2e-test-images/echoserver:2.1
          ports:
          - containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: echoserver-svc
spec:
  selector:
    app: my-echo
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080
    name: http

对于入口规则,将端口servicePort从8080更改为默认http端口80。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: happy-ingress
  annotations:
    INGRESS.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: happy.k8s.io
    http:
      paths:
      - path: /echoserver
        backend:
          serviceName: echoserver-svc
          servicePort: 80
现在应用这些文件并创建您的Pod、服务和入口规则。请稍等片刻,获取您的入口规则的地址将花费一些时间。 现在您可以使用minikube ip地址访问您的服务,但还不能使用主机名。为此,您必须在/etc/hosts文件中添加主机和各自的IP地址。因此,在您喜欢的编辑器中打开/etc/hosts文件并在下面添加行,其中是您的mini kube的实际IP

<minikube_ip> happy.k8s.io
现在,您可以使用主机名访问您的服务。验证是否遵循命令

curl http://happy.k8s.io/echoserver

这篇关于空地址Kubernetes入口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆