我在数据属性下设置了 nginx 入口 Controller 配置,如下面的 yaml 文件所示。
我想知道这是设置 nginx 配置而不是提供 nginx.conf 文件的正确方法吗。
其次,我想知道是否设置了提供的配置。要确定是否应用了新配置,我应该执行到 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
最佳答案
安装 NGINX Ingress Controller
的方法有很多种,但是它们取决于它们部署的环境。
例如对于 minikube:
对于标准用法:
minikube 插件启用入口
要检查入口 Controller 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 list 在 Kubernetes 集群中安装 NGINX Ingress Controller,然后修改 nginx-config.yaml
总结:您必须修改 nginx.conf 文件。您提供了清晰的规范,然后您就可以轻松地对其进行调试。
阅读更多:nginx-ingress-controller-installation-manifest , nginx-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>
检查入口 Controller 日志
$ 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 .
关于kubernetes - 检查应用于 kubernetes 集群上的 nginx 入口 Controller 的配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65753988/