【问题标题】:Check configurations applied for nginx ingress controller on a kubernetes cluster检查应用于 Kubernetes 集群上的 nginx 入口控制器的配置
【发布时间】:2021-04-21 12:55:47
【问题描述】:

我已经在 data 属性下设置了 nginx 入口控制器配置,如下面的 yaml 文件所示。

  1. 我想知道这是设置 nginx 配置而不是提供 nginx.conf 文件的正确方法。

  2. 其次,我想了解是否设置了提供的配置。要查看是否应用了新配置,我应该在 pod 中执行并运行 nginx -T 还是有其他方法可以找到它?

kind: ConfigMap
apiVersion: v1
metadata:
  name: nginx-configuration
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
data:
  worker-processes: "24"
  worker-connections: "100000"
  worker-rlimit-nofile: "102400"
  worker-cpu-affinity: "auto 111111111111111111111111"
  keepalive: "200"
  main-template: | 
   user nginx;
   worker_processes  {{.WorkerProcesses}};
   {{- if .WorkerRlimitNofile}}
   worker_rlimit_nofile {{.WorkerRlimitNofile}};{{end}}
   {{- if .WorkerCPUAffinity}}
   worker_cpu_affinity {{.WorkerCPUAffinity}};{{end}}
   {{- if .WorkerShutdownTimeout}}
   worker_shutdown_timeout {{.WorkerShutdownTimeout}};{{end}}
   daemon off;

   error_log  /var/log/nginx/error.log {{.ErrorLogLevel}};
   pid        /var/run/nginx.pid;

   {{- if .MainSnippets}}
   {{range $value := .MainSnippets}}
   {{$value}}{{end}}
   {{- end}}

   events {
       worker_connections  {{.WorkerConnections}};
   }

   http {
       include       /etc/nginx/mime.types;
       default_type  application/octet-stream;
       
       ...
      

       sendfile        on;
       access_log  off;
       tcp_nopush  on;
       tcp_nodelay on;

       keepalive_timeout  315;
       keepalive_requests 10000000;

       #gzip  on;   
        ...
   }

---
kind: ConfigMap
apiVersion: v1
metadata:
  name: tcp-services
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx

---
kind: ConfigMap
apiVersion: v1
metadata:
  name: udp-services
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: nginx-ingress-serviceaccount
  namespace: ingress-nginx
  labels:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx

【问题讨论】:

    标签: kubernetes kubernetes-ingress nginx-config nginx-ingress


    【解决方案1】:

    有很多方法可以安装NGINX Ingress Controller,但是它们取决于它们部署的环境。 以 minikube 为例:

    minikube

    标准用法:

    minikube addons enable ingress

    要检查入口控制器 pod 是否已启动,请运行以下命令:

    $ kubectl get pods -n ingress-nginx \ -l app.kubernetes.io/name=ingress-nginx --watch

    你可以使用helm(但只能使用v3):

    NGINX Ingress controller 可以使用项目存储库中的图表通过Helm 安装。安装发布名称为ingress-nginx的图表:

    $ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
    $ helm repo update
    $ helm install ingress-nginx ingress-nginx/ingress-nginx
    

    然后尝试检测安装的版本:

    POD_NAME=$(kubectl get pods -l app.kubernetes.io/name=ingress-nginx -o jsonpath='{.items[0].metadata.name}') kubectl exec -it $POD_NAME -- /nginx-ingress-controller --version

    但最常见的方法是使用 Kubernetes 清单在 Kubernetes 集群中安装 NGINX Ingress Controller,然后修改 nginx-config.yaml

    总结:你必须修改 nginx.conf 文件。您提供了明确的规范,然后您就可以轻松地对其进行调试。

    阅读更多:nginx-ingress-controller-installation-manifestnginx-ingress-controller

    即使在进行故障排除时,您也可以检查nginx.conf 文件的示例。 例如,要检查 Ingress Controller,您可以:

    • 检查入口资源事件

      $ kubectl get ing -n <namespace-of-ingress-resource> NAME 
      $ kubectl describe ing <ingress-resource-name> -n <namespace-of-ingress-resource>
      
    • 检查入口控制器日志

        $ kubectl get pods -n <namespace-of-ingress-controller> 
        $ kubectl logs -n <namespace> nginx-ingress-controller
      
    • 检查 Nginx 配置

         $ kubectl get pods -n <namespace-of-ingress-controller>   
         $ kubectl exec -it -n <namespace-of-ingress-controller> nginx-ingress-controller -- cat /etc/nginx/nginx.conf
      
    • 检查使用的服务是否存在

        $ kubectl get svc --all-namespaces
      

    查看更多:ingress-troubleshooting

    【讨论】:

      猜你喜欢
      • 2021-09-27
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      • 2019-07-22
      • 2021-01-13
      • 2018-10-10
      • 1970-01-01
      • 2018-10-29
      相关资源
      最近更新 更多