簡體   English   中英

在我的 windows 主機文件中添加 LB IP 后,無法連接在瀏覽器上使用 ingress-nginx 生成的 Google Cloud Load Balancer

[英]Not able to connect the Google Cloud Load Balancer generated using ingress-nginx on Browser after adding the LB IP in my windows hosts file

我是 GCE-GKE 中 Kubernetes 的新手,我正在嘗試使用 skaffold.Yaml 在 GCE-GKE 集群中構建和部署 nodeJS 應用程序。 我可以看到圖像已構建並部署,沒有任何問題,但是當我嘗試在瀏覽器上訪問 GET index.ts 文件時,我不能。 我真的不明白可能出了什么問題,或者我可能在 LB 或 ingress-nginx 上錯過了一些東西。

下面是 skaffold.yaml

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

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-depl.yaml

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

{
  "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

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 文件

FROM node:alpine

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

CMD ["npm", "start"]

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

Step 1: As far as i know, after you init nginx on your k8s cluster, you need add a DNS record to map a domain (or subdomain) in your domain (ticketing.dev) to external IP or external DNS of your k8s cluster nginx 已為您重新生成(我通常使用 A 記錄)。

第二步:之后,當你部署好你的應用后,你需要設置你的應用的域名(你在入口yaml文件中指定的域名)是上面(A)記錄的CNAME記錄。

您可以使用nslookup命令驗證您的域驗證陽離子。 如果您不為您的域使用代理,則上述兩個域(A 和 CNAME 記錄)都將解析為您的 k8s 集群的外部 IP。

上述 2 個步驟的目的是讓 DNS 服務器知道當 DNS 服務器收到關於您的任何子域(域)的請求時,要在哪里(哪個 IP)解析。 這就是為什么您可以使用nslookup命令來驗證您的配置的原因。

以下是我用來管理我們域的 DNS 的工具: https://www.namecheap.com/support/knowledgebase/article.aspx/9607/2210/how-to-set-up-dns-records-for-您的域中的 cloudflare 帳戶示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM