首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在windows hosts文件中添加LB IP后,无法连接浏览器上使用ingress nginx生成的Google负载均衡

问在windows hosts文件中添加LB IP后,无法连接浏览器上使用ingress nginx生成的Google负载均衡
EN

Stack Overflow用户
提问于 2020-06-07 03:20:59
回答 1查看 51关注 0票数 0

我是Kubernetes在GCE-GKE中的新手,我试图使用skaffold.Yaml在GCE-GKE集群中构建和部署nodeJS应用程序。我可以看到镜像在构建和部署时没有任何问题,但是当我试图在浏览器上访问获取index.ts文件时,我做不到。我真的不明白哪里可能出了问题,或者我可能在LB或入口nginx上遗漏了什么。

下面的id为skaffold.yaml

代码语言:javascript
复制
apiVersion: skaffold/v2alpha3
kind: Config
deploy:
  kubectl:
    manifests:
      - ./infra/k8s/*
build:
  # local:
  #   push: false
  googleCloudBuild:
    projectId: xxxxxxxxxxxx
  artifacts:
    - image: us.gcr.io/xxxxxxxxxxx/auth
      context: auth
      docker:
        dockerfile: Dockerfile
      sync:
        manual:
          - src: 'src/**/*.ts'
            dest: .

下面是ingress srv.yaml

代码语言:javascript
复制
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: 'true'
spec:
  rules:
    - host: ticketing.dev
      http:
        paths:
          - path: /api/users/?(.*)
            backend:
              serviceName: auth-srv
              servicePort: 3000

下面是auth-dede.yaml

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: auth-depl
spec:
  replicas: 1
  selector:
    matchLabels:
      app: auth
  template:
    metadata:
      labels:
        app: auth
    spec:
      containers:
        - name: auth
          image: us.gcr.io/xxxxxxxxxxxxx/auth
---
apiVersion: v1
kind: Service
metadata:
  name: auth-srv
spec:
  selector:
    app: auth
  ports:
    - name: auth
      protocol: TCP
      port: 3000
      targetPort: 3000

下面是package.json

代码语言:javascript
复制
{
  "name": "auth",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "ts-node-dev --poll src/index.ts"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@types/express": "^4.17.6",
    "express": "^4.17.1",
    "nodemon": "^2.0.4",
    "typescript": "^3.9.5"
  },
  "devDependencies": {
    "ts-node-dev": "^1.0.0-pre.44"
  }
}

下面是index.ts

代码语言:javascript
复制
import express from 'express';
import { json } from 'body-parser';

const app = express();
app.use(json());
// /api/users/currentuser
app.get('/users', (req, res) => {
  res.send('Hello');
});

app.listen(3000, () => {
  console.log('Great');
  console.log('listening on port 3000!!!!!');
});

下面是docker文件

代码语言:javascript
复制
FROM node:alpine

WORKDIR /app
COPY package.json .
RUN npm install
COPY . .

CMD ["npm", "start"]
EN

回答 1

Stack Overflow用户

发布于 2020-06-07 17:20:30

您使用哪些工具来管理域配置?

步骤1:据我所知,在您的k8s集群上初始化nginx后,您需要添加DNS记录,将您的域(ticketing.dev)中的一个域(或子域)映射到nginx为您重新生成的k8s集群的外部IP或外部DNS (我通常使用A记录)。

步骤2:之后,当您部署应用程序时,您需要将您的应用程序的域名(您在入口yaml文件中指定的域名)设置为上述(A)记录的CNAME记录。

您可以使用nslookup命令验证您的域验证。如果您域不使用代理,则上述两个域(A和CNAME记录)将被解析为您的k8s群集的同一外部IP。

上面两个步骤的目的是让DNS服务器知道当DNS服务器收到询问任何子域(域)的请求时要解析的位置(哪个IP)。这就是为什么可以使用nslookup命令来验证配置原因。

下面是我用来管理域名的工具:https://www.namecheap.com/support/knowledgebase/article.aspx/9607/2210/how-to-set-up-dns-records-for-your-domain-in-cloudflare-account example

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62236898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档