标签: nginx-ingress

为什么我在 kubernetes 集群中看不到任何具有 master 或 worker 角色的节点?

我在一台机器上执行了 kubeadm init 。我按照网络等上的所有说明进行操作,最终得到以下结果:

kubectl get nodes

NAME              STATUS   ROLES           AGE    VERSION
slchvdvcybld001   Ready    control-plane   140m   v1.24.2
slchvdvcydtb001   Ready    <none>          136m   v1.24.2
slchvdvcytst001   Ready    <none>          137m   v1.24.2
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,没有节点是 Master 或 Worker 或类似的节点。

我没有任何特殊的设置,我所做的就是安装它并进行初始化。

日志文件中没有错误。仪表板是绿色的,所有东西都是绿色的。

这些是 kubectl 等的版本:

Client Version: v1.24.2
Kustomize Version: v4.5.4
Server Version: v1.24.2
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-ingress nginx-ingress

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

为 Nginx Ingress 中的特定位置设置 limit_req

我正在尝试为limit_reqKubernetes ingress-nginx 中的特定路径设置速率限制选项,以防止强制身份验证。

我已经limit_req_zone使用 ConfigMap定义了:

http-snippet: |
      limit_req_zone $the_real_ip zone=authentication_ratelimit:10m rate=1r/s;
Run Code Online (Sandbox Code Playgroud)

接下来,我使用注解添加自定义位置块:

nginx.ingress.kubernetes.io/configuration-snippet: |
  location ~* "^/authenticate$" {
    limit_req zone=authentication_ratelimit nodelay;
    more_set_headers "x-test: matched";
  }
Run Code Online (Sandbox Code Playgroud)

这会产生 nginx.conf:

server {
# - - 8< - -

  location / {
    # - - 8< - -

    location ~* "^/authenticate$" {
      limit_req zone=authentication_ratelimit nodelay;
      more_set_headers "x-test: matched";
    }

    proxy_pass http://upstream_balancer;

    proxy_redirect                          off;
}
Run Code Online (Sandbox Code Playgroud)

结果是/authenticate总是返回 HTTP 503(带有 x-test 标头)。来自入口访问日志的消息:

<ip> - [<ip>] - - [04/Jan/2019:15:22:07 +0000] "POST /authenticate …
Run Code Online (Sandbox Code Playgroud)

nginx kubernetes kubernetes-ingress nginx-ingress

0
推荐指数
1
解决办法
2167
查看次数

如何配置入口以使用https将流量定向到https后端

我有一个使用https的后端。我想根据URL /路径将后端的负载分开。

我决定使用ingress进行基于url / path的逻辑,以将流量移至不同的后端(相同的后端,只是复制到不同的NodePorts)

我的问题是如何配置入口以接收https请求并将这些https请求转发到https后端?

谢谢

编辑:我添加了yaml文件:

spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: service
          servicePort: 9443
        path: /carbon
      - backend:
          serviceName: service2
          servicePort: 9443
        path: /oauth
Run Code Online (Sandbox Code Playgroud)

由于某种原因,我无法将规则表http更改为https

kubernetes kubernetes-ingress nginx-ingress

0
推荐指数
1
解决办法
2145
查看次数

Kubernetes Ingress 配置重写问题

我正在创建一个配置以在 AWS 上的 Kubernetes 集群中托管一些应用程序。我有两个不同的应用程序,具有单独的服务/pod/选择器,但我现在想用一个入口公开它们。

所以我创建了以下入口控制器

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /foo
        backend:
          serviceName: foo
          servicePort: 8080
      - path: /bar
        backend:
          serviceName: bar
          servicePort: 8080 
Run Code Online (Sandbox Code Playgroud)

并且入口从 AWS 获取 ELB 没有任何问题,但是当我尝试浏览应用程序(使用 Tomcat appserver 的 Java 应用程序)时,我总是收到以下页面

雄猫

这是经典的旧 Tomcat 欢迎页面,但每个请求总是返回 index.html(未加载 css/img),而且如果我尝试为应用程序使用正确的上下文路径,我会收到此页面。

如果我使用服务 (LoadBalancer) 公开应用程序,我可以使用它而不会出现这些问题,所以我认为入口配置有问题。

有任何想法吗?


更新

如果我使用这样的单一路径的入口

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /
        backend:
          serviceName: foo
          servicePort: …
Run Code Online (Sandbox Code Playgroud)

tomcat kubernetes kubernetes-ingress amazon-eks nginx-ingress

0
推荐指数
1
解决办法
1999
查看次数

无法配置 NGINX 入口控制器

我有一个 eks 集群,我的部署、服务和 loadBalancer 一切正常。每个服务都创建了自己的 LoadBalancer,所有服务都已启动并正在运行。我有一个前端服务和 2 个后端服务,这里是我的部署和入口文件

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: apache-kubernetes
spec:
  replicas: 2
  selector:
    matchLabels:
      app: apache-kubernetes
  template:
    metadata:
      labels:
        app: apache-kubernetes
    spec:
      containers:
      - name: apache-kubernetes
        image: httpd
        ports:
        - containerPort: 80
        env:
        - name: MESSAGE
          value: Hello Kubernetes!
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: hello-apache-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"

spec:
  rules:
  - host: apache.example.com
  - http:
      paths:
      - path: /
        backend:
          serviceName: apache-kubernetes
          servicePort: 80
Run Code Online (Sandbox Code Playgroud)

我有一个类似的部署和服务 yaml 文件,用于部署和创建 nginx Web 服务器。我还运行了以下命令所有部署都需要以下强制命令。

kubectl …
Run Code Online (Sandbox Code Playgroud)

kubernetes amazon-eks nginx-ingress

0
推荐指数
1
解决办法
977
查看次数

入口路由api前缀问题

paths:
  - backend:
      serviceName: booknotes-front-end-service
      servicePort: 80
    path: /
  - backend:
      serviceName: booknotes-back-end-service
      servicePort: 3000
    path: /api
Run Code Online (Sandbox Code Playgroud)

这是我的 ingres-nginx 资源中的规则。我尝试将所有从开始的流量定向/api到我的后端服务,该服务正常工作,但是如果我后端的某些路由类似于 /api/users 它不起作用,我的后端发送响应未找到,当我在本地运行这条路线工作正常。此外,我尝试从我的 koa 路由中删除 /api 前缀并将其更改为/users,然后我也更改 path: /api为,path: /users并且这些东西正常工作。我应该怎么做才能修复它?如果您需要其他信息,请告诉我!

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

0
推荐指数
2
解决办法
1043
查看次数

Kubernetes Nginx Ingress 可以连接 https pod 吗?

我有三个 pod,里面有 HTTPS 服务器。我曾经通过 NodePort 服务访问它们。现在我部署了一个 Nginx Ingress 将它们全部集中在一个 IP 中。我注意到 Nginx Ingress 无法与 pod 中的 HTTPS 服务器连接,但如果我将其更改为 HTTP,则可以完美连接。

如何让 Ingress 与 Pod 中的 HTTPS 服务器连接?

我尝试配置一个 tls 秘密,并将其添加到 Ingress:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: k8s-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/proxy-ssl-secret: cert 

spec:
  rules:
  - http:
      paths:
        - path: /api-rest
          backend:
            serviceName: api-rest
            servicePort: 8080
        - path: /auth
          backend:
            serviceName: auth-entry
            servicePort: 8080
Run Code Online (Sandbox Code Playgroud)

它不起作用。我仍然遇到 503 服务暂时不可用

我已经阅读过有关 SSL Passthrough 的内容,但我也无法使其工作。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: k8s-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: / …
Run Code Online (Sandbox Code Playgroud)

nginx kubernetes nginx-ingress

0
推荐指数
1
解决办法
1047
查看次数

如何根据 nginx 入口中的 http 标头重定向 URL?

我的请求是通过 Cloudflare 代理的,Cloudflare 会根据 IP 地址在 http 标头中设置一个标头,指示国家/地区。我想根据 Nginx 入口控制器中的此标头使用某些路径重定向请求。我该怎么做呢?

google-kubernetes-engine kubernetes-ingress nginx-ingress

0
推荐指数
1
解决办法
2529
查看次数

如何使用“controller.nodeSelector”选项将 nginx-ingress 控制器部署到 kubernetes 主节点?

我只需要使用 Helm 图表“ingress-nginx”将 nginx-ingress 控制器部署到 kubernetes 主节点。它提供了一个选项“controller.nodeSelector”来选择要部署的 k8s 节点。所以我想使用此选项来选择带有 label 的 k8s 主节点node-role.kubernetes.io/master=,但尝试了不同的格式,无法让它按预期工作。

失败案例:

helm install --set controller.hostNetwork=true --set controller.hostPort.enabled=true --set controller.extraArgs.enable-ssl-passthrough="" --set controller.replicaCount=1 --set controller.nodeSelector."node-role\.kubernetes\.io/master"="" --namespace rwe ingress-nginx ingress-nginx/ingress-nginx
Run Code Online (Sandbox Code Playgroud)

您能帮忙建议如何让这个选项生效吗?谢谢。

nginx kubernetes nginx-ingress

0
推荐指数
1
解决办法
2649
查看次数

无法访问 AKS 入口的公共 IP

我正在努力让我的 AKS 集群正常工作。我无法访问我的服务的公共IP(使用 nginx-ingress-controller )我尝试了azure负载均衡器入口,但这不起作用我在我的azure控制台中创建了一个静态公共IP并将其分配给我的nginx入口控制器 -该 IP 也不起作用我也尝试删除 kube-proxy pod,因为有些人抱怨这些在重新创建其入口后不会更新,因此他们必须通过删除它们来重新创建。这不是没有设置入口规则的问题,因为我收到连接超时(甚至无法访问 IP)而不是 404 错误

这是我的入口配置:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: app
  annotations:
    appgw.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  tls:
    - hosts:
        - api.app
      secretName: tls
  ingressClassName: nginx
  rules:
    - http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: app
                port:
                  number: 8080
Run Code Online (Sandbox Code Playgroud)

这是我的服务

$ kubectl get svc -A

default       kubernetes                           ClusterIP      10.0.0.1       <none>         443/TCP                         2d1h
default       app                                  LoadBalancer   10.0.85.118    20.81.3.210    8080:30578/TCP,6565:31233/TCP   171m
ingress       ingress-nginx-controller             LoadBalancer   10.0.21.143    20.121.107.7   80:31325/TCP,443:31584/TCP      18m
Run Code Online (Sandbox Code Playgroud)

我可以通过该服务的公共 IP 访问我的应用程序(负载均衡器配置) …

networking nginx azure azure-aks nginx-ingress

0
推荐指数
1
解决办法
3057
查看次数

错误 kubebootstrap:工作人员恐慌:禁止 ingresses.networking.k8s.io:用户无法在 API 组“networking.k8s.io”中列出资源“ingresses”

我目前在托管 Lucidworks Fusion 的 Amazon EKS 集群上遇到问题。首先,我有一个 Amazon EKS v1.18集群,然后我将其升级到v1.19,一切进展顺利。我的集群中还运行了ingress-nginx-3.7.1,然后我将其升级到ingress-nginx-4.0.19,此时一切似乎仍然正常运行。也就是说,一旦我将集群升级到v1.20,当耗尽我的 Pod 并在新工作节点中重新启动它们时,所有 Pod 都会正确重新启动,除了我的大使Pod 现在陷入CrashLoopBackOff状态。我查看了这个 pod 的日志,发现以下错误:

2022/04/08 14:00:35 ERROR(s): kubebootstrap: WORKER PANICKED: ingresses.networking.k8s.io is forbidden: User "system:serviceaccount:sandbox1:sandbox1-ambassador" cannot list resource "ingresses" in API group "networking.k8s.io" in the namespace "sandbox1"
Run Code Online (Sandbox Code Playgroud)

有谁知道这意味着什么?我相信这告诉我一些与权限相关的事情,但我不太确定。另外我想了解导致此问题的原因,是将我的 EKS 集群升级到 v1.20 还是升级 ingress-nginx 或完全不同的东西?最后我想了解如何解决这个问题并使这个 Pod 再次正常运行?欢迎任何帮助。

kubernetes nginx-ingress ambassador k8s-serviceaccount k8s-rolebinding

-1
推荐指数
1
解决办法
2199
查看次数