Kubernetes Nginx Ingress控制器暴露Nginx Web服务器

3
我想通过URL从外部访问Nginx-hello页面。我已经为子域名vps.my-domain.com创建了一个(有效的)A记录,该子域名指向运行Kubernetes和Nginx Ingress的V服务器。我使用以下教程在CoreOS上通过kubeadm安装了Kubernetes作为单节点群集:https://kubernetes.io/docs/setup/independent/install-kubeadm/https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/,并使用https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal安装了nginx-ingress。我还将以下条目添加到/etc/hosts文件中:
31.214.xxx.xxx vps.my-domain.com

(xxx被替换为服务器IP的最后三位数字)

我使用以下文件创建了部署、服务和入口:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  selector:
    matchLabels:
      run: my-nginx
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        run: my-nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx
        ports:
        - name: http
          containerPort: 80
          protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: my-nginx
  labels:
    run: my-nginx
spec:
  type: ClusterIP
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: http
  selector:
    run: my-nginx
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-nginx
  annotations:
    kubernetes.io/ingress.class: "nginx"
    ingress.kubernetes.io/ssl-redirect: "False"
spec:
  rules:
  - host: vps.my-domain.com
    http:
      paths:
      - backend:
          serviceName: my-nginx
          servicePort: 80

describe命令的输出:

core@vps ~/k8 $ kubectl describe ing
Name:             my-nginx
Namespace:        default
Address:
Default backend:  default-http-backend:80 (<none>)
Rules:
  Host                  Path  Backends
  ----                  ----  --------
  vps.my-domain.com
                           my-nginx:80 (<none>)
Annotations:
  kubectl.kubernetes.io/last-applied-configuration:      
{"apiVersion":"extensions/v1beta1",...}

  kubernetes.io/ingress.class:         nginx
  ingress.kubernetes.io/ssl-redirect:  False
Events:
  Type    Reason  Age                From                      Message
  ----    ------  ----               ----                      -------
  Normal  UPDATE  49m (x2 over 56m)  nginx-ingress-controller  Ingress default/my-nginx

虽然我可以使用节点IP和端口80卷曲Nginx欢迎页面,但从VM外部无法工作。连接到vps.my-domain.com端口80失败:连接被拒绝 我忘记了什么还是配置错误了吗?任何帮助或提示将不胜感激!
谢谢
编辑: 访问“vps.my-domain.com:30519”会显示nginx欢迎页面。但在配置中,我指定了端口:80。 我从get services的输出中获取了端口。
core@vps ~/k8 $ kubectl get services --all-namespaces | grep "my-nginx"
default         my-nginx               ClusterIP   10.107.5.14      <none>        80/TCP                       1h

我通过添加以下内容,成功地将它工作在80端口上:
externalIPs:
  - 31.214.xxx.xxx

连接到my-nginx服务。但是这不是它应该工作的方式,对吧?在kubernetes和ingress-nginx的教程和示例中,它总是在没有externalIPs的情况下工作。此外,现在ingress规则也无法正常工作(例如,如果我将路径设置为/test)。


你检查过端口是否在iptables中暴露了吗?外部telnet做什么?telnet ip port - kwiesmueller
这给了我与curl相同的结果:无法连接到vps.my-domain.com端口80:连接被拒绝 我以为kubernetes/ingress会处理端口?(至少对于使用NodePort的服务是这样) - michidk
1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接