标签: nginx-ingress

Kubernetes 入口不工作,默认后端 404

我是 Kubernetes 新手。我正在使用 K8S 的 GKE 托管服务。有 2 个部署 nginx、httpd,并为这 2 个部署创建了 NodePort 服务。

我正在尝试为服务创建入口规则。nginx入口控制器是通过helm安装的。我有一个来自 freenom 的域,并将 Google 云 DNS 设置为使用静态公共 IP。当我尝试访问入口 URL(域/nginx)时,它给出:

“默认后端 - 404”


部署:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx
  labels:
    name: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx
  replicas: 1
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: httpd
  labels:
    name: httpd
spec:
  selector:
    matchLabels:
      app: httpd
  template:
    metadata:
      labels:
        app: httpd
    spec:
      containers:
        - …
Run Code Online (Sandbox Code Playgroud)

kubernetes google-kubernetes-engine nginx-ingress

3
推荐指数
1
解决办法
7303
查看次数

如何在 kubernetes 集群中运行 https 安全应用程序

我想在 kubernetes 集群内通过 https 运行我的应用程序,并通过 https 将其公开在集群外部。我创建了pod并公开了端口443。之后,我创建了一个ClusterIP服务,该服务连接到 port 上的 pod443并公开 port 443。最后,我创建了一个ingress连接到端口 上的服务的连接443。我在 GKE 上使用 Helm Chart 部署了所有这些资源。我使用NGINX Ingress控制器。您可以在此处找到该图表。

当我通过 https 在集群内部访问该应用程序时,它可以工作。

curl https://my-nginx.https-app-64-production --cacert /etc/nginx/ssl/tls.crt
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-ingress nginx-ingress

3
推荐指数
1
解决办法
4826
查看次数

kubernetes ingress 服务注解

我正在按照一些 k8s 文档设置入口服务,但我无法理解以下注释:

kubernetes.ip/ingress.class:

nginx.ingress.kubernetes.io/rewrite-target:

你知道这些注释的作用吗?

提前致谢。

kubernetes devops nginx-ingress

3
推荐指数
1
解决办法
8996
查看次数

使用 Nginx Ingress Controller 获取所有主机均被其他资源占用

我已经按照文档https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-manifests/中所述设置了 Nginx 控制器。我已经使用以下配置设置了 Ingress

入口类

apiVersion: networking.k8s.io/v1beta1
kind: IngressClass
metadata:
  name: nginx
  # annotations:
  #   ingressclass.kubernetes.io/is-default-class: "true"
spec:
  controller: nginx.org/ingress-controller
Run Code Online (Sandbox Code Playgroud)

入口

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: hn-service-ingress
spec:
  ingressClassName: nginx
  rules:
  - host: hostnameservice.classpath.com
    http:
      paths:
      - path: /test
        backend:
          serviceName: hostname-service
          servicePort: 80
Run Code Online (Sandbox Code Playgroud)

下面是运行命令时的错误describe。我正进入(状态All hosts are taken by other resources

kubectl describe ingress hn-service-ingress
Name:             hn-service-ingress
Namespace:        pradeep
Address:
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
  Host                           Path  Backends
  ----                           ---- …
Run Code Online (Sandbox Code Playgroud)

kubernetes-ingress nginx-ingress

3
推荐指数
1
解决办法
6274
查看次数

Nginx 控制器的入口无法工作,地址丢失

我有一个 Kubernetes 集群,运行在 1 个主节点、2 个工作节点的 Linux 服务器上。我有一个 HAProxy 将我的请求转发到 Nginx 控制器。我的完整设置位于公司代理后面。该公司代理中启用了 DNS 条目。请求将到达 nginx 控制器,但不会转发到服务。我按照许多教程的描述安装了入口控制器,其中的文件位于https://github.com/kubernetes/ingress-nginx

我是堆栈溢出的新手,所以如果我应该提供更具体的信息,请告诉我。我希望有人能帮助我解决我的问题,提前谢谢你:D

我的 Ingress 缺少地址:

Name:             app-ingress
Namespace:        default
Address:
Default backend:  default-http-backend:80 (<none>)
Rules:
  Host                       Path  Backends
  ----                       ----  --------
  test.kubetest.lff.bybn.de
                             /abc   app-service:80 (10.244.2.4:3000)
Annotations:                 kubernetes.io/ingress.class: nginx
Events:                      <none>
Run Code Online (Sandbox Code Playgroud)

Deployment、Service 和 Ingress、IngressClass、ConfigMap 的 Yaml 文件

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    run: app
  name: app-blue
spec:
  replicas: 1
  selector:
    matchLabels:
      run: app
      version: 0.0.1
  template:
    metadata:
      labels:
        run: app
        version: 0.0.1
    spec: …
Run Code Online (Sandbox Code Playgroud)

nginx kubernetes kubernetes-ingress nginx-ingress

3
推荐指数
1
解决办法
2万
查看次数

Helm Nginx Ingress - 如何在“helm install”命令中指定外部 IP

我需要指定在使用 HELM 安装创建 Ingress Controller 时与 Nginx 服务关联的外部 IP:

helm install nginx-ingress ingress-nginx/ingress-nginx -f internal-ingress.yaml 
--set controller.nodeSelector."beta\.kubernetes\.io/os"=linux 
--set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux
Run Code Online (Sandbox Code Playgroud)

所以我想设置静态的 EXTERNAL-IP 地址,该地址可以在创建时看到:

kubectl get services
NAME                                     TYPE          CLUSTER-IP   EXTERNAL-IP   PORT(S)                                     AGE

nginx-ingress-ingress-nginx-controller   LoadBalancer  10.0.36.81   10.33.27.35   80:31312/TCP,443:30653/TCP   5d
Run Code Online (Sandbox Code Playgroud)

我需要这个,因为已经为此 IP 设置了 DNS 配置,我想避免再次进行此类配置。

nginx kubernetes kubernetes-helm kubernetes-ingress nginx-ingress

3
推荐指数
1
解决办法
5328
查看次数

找不到 k8sExternalName 端点 - 但正在工作

我部署了一个简单的测试ingress和一个externalName service使用kustomize. 部署工作正常,我得到了预期的结果,但是当describingtest-ingress显示错误时:<error: endpoints "test-external-service" not found>。看起来像是 k8s 的 bug。它显示此错误,但一切正常。

这是我的部署:

kustomization.yaml:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: platform
resources:
  - test-ingress.yaml
  - test-service.yaml
generatorOptions:
  disableNameSuffixHash: true
Run Code Online (Sandbox Code Playgroud)

test-service.yaml:

apiVersion: v1
kind: Service
metadata:
  name: test-external-service
  namespace: platform
spec:
  type: ExternalName
  externalName: "some-working-external-elasticsearch-service"
Run Code Online (Sandbox Code Playgroud)

test-ingress.yaml:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    kubernetes.io/ingress.class: nginx-external
    nginx.ingress.kubernetes.io/configuration-snippet: |
      proxy_cache_bypass $http_upgrade;
spec:
  rules:
    - host: testapi.mydomain.com
      http:
        paths:
          - path: …
Run Code Online (Sandbox Code Playgroud)

kubernetes google-kubernetes-engine kubernetes-ingress nginx-ingress

3
推荐指数
1
解决办法
3638
查看次数

Kubernetes NGINX Ing?ess 控制器 TCP/MQTT 配置

我有一个 Kubernetes 集群,其中包含一个 REST API 的有效 Ingress 配置。现在我想将端口转发到我的 mqtt 适配器添加到此配置中,但我在寻找将 TCP 规则添加到配置中的方法时遇到问题。Kubernetes 文档仅显示一个 HTTP 示例。https://kubernetes.io/docs/concepts/services-networking/ingress/

我对 Kubernetes 还很陌生,在适应其他配置时遇到了问题,因为我发现的任何内容看起来都与我在 Kubernetes 文档中找到的完全不同。

我使用了常规的 nginx Web 服务器和 LetsEncrypt 来保护 TCP 连接。我希望这也适用于入口控制器。

我的目标是通过 MQTT 使用 TLS 将消息发送到我的集群。有人有这方面的正确文档或知道如何添加配置吗?

我的配置如下:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ratings-web-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: letsencrypt
spec:
  tls:
    - hosts: 
      - example.com
      secretName: ratings-web-cert
  
  rules:
  - host: example.com
    http:
      paths:
      - backend:
          serviceName: test-api
          servicePort: 8080
        path: /
Run Code Online (Sandbox Code Playgroud)

mqtt kubernetes kubernetes-ingress nginx-ingress

3
推荐指数
1
解决办法
3592
查看次数

ingress-nginx-controller-admission:它有什么作用?为什么它在那里

我是 Kubernetes 新手。在测试集群中设置 nginx-ingress。我们的一位资深人士路过并注意到以下情况。

# kubectl get services
...
ingress-ingress-nginx-controller-admission   ClusterIP      xx.xxx.xxx.xxx   <none>        443/TCP
...
Run Code Online (Sandbox Code Playgroud)

那是什么,他问道。如果你不需要它,就把它扔掉。

在我把它撕掉并可能削弱我的测试集群之前..什么ingress-nginx-controller-admission 以及为什么我需要它?

kubernetes kubernetes-ingress nginx-ingress

3
推荐指数
1
解决办法
6522
查看次数

Kubernetes NGINX 入口控制器 404 未找到/未找到对象

我正在 Udemy 学习课程,我是Kubernetes世界的新手,我正在尝试在 Kubernetes 中配置入口 nginx 控制器,但当我在指定的 URL 发送请求时,它返回404 未找到,我已经 10 天了试图解决这个问题,我看过类似的问题,但他们的答案都不适合我。当我更改文件中的某些内容时,我还使用Skaffold自动在 docker hub 上构建/部署映像。

404未找到截图

我的快递应用服务器:

app.get('/api/users/currentuser', (req, res) => {
  res.send('Hi there');
});

app.listen(3000, () => {
  console.log('[Auth] - Listening on port 3000');
});
Run Code Online (Sandbox Code Playgroud)

入口-srv.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-srv
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: 'true'
spec:
  rules:
    - host: ticketing.com
      http:
        paths:
          - path: /api/users/?(.*)
            pathType: Prefix
            backend:
              service:
                name: auth-srv
                port:
                  number: 3000
Run Code Online (Sandbox Code Playgroud)

auth-depl.yaml(身份验证部署和 srv)

apiVersion: …
Run Code Online (Sandbox Code Playgroud)

nginx kubernetes kubernetes-ingress nginx-config nginx-ingress

3
推荐指数
1
解决办法
1650
查看次数