[英]nginx-ingress-controller: Error while initializing connection to Kubernetes apiserver
nginx 入口控制器錯誤。 它在初始化與 kubernetes apiserver 的連接時出錯。 集群是否存在問題,無法理解此問題。 我想在集群外公開我的服務。 下面是帶有錯誤的 docker 日志和我的 nginx-ingress-controller.yml
泊塢窗日志
Creating API client for https://10.96.0.1:443
F1128 06:30:25.376076 7 launch.go:330] Error while initializing connection to
Kubernetes apiserver. This most likely means that the cluster is misconfigured (e.g., it has
invalid apiserver certificates or service accounts configuration). Reason: Get
https://10.96.0.1:443/version: dial tcp 10.96.0.1:443: i/o timeout
nginx-controller.yml
apiVersion: v1
kind: Namespace
metadata:
name: ingress-nginx
---
kind: Service
apiVersion: v1
metadata:
name: ingress-nginx
namespace: ingress-nginx
labels:
app: ingress-nginx
spec:
externalTrafficPolicy: Local
type: LoadBalancer
selector:
app: ingress-nginx
ports:
- name: http
port: 80
targetPort: http
- name: https
port: 443
targetPort: https
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-ingress-controller
namespace: default
spec:
replicas: 1
# selector:
# matchLabels:
# app: ingress-nginx
template:
metadata:
labels:
app: ingress-nginx
annotations:
prometheus.io/port: '10254'
prometheus.io/scrape: 'true'
spec:
containers:
- name: nginx-ingress-controller
image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.9.0-beta.17
args:
- /nginx-ingress-controller
- --default-backend-service=$(POD_NAMESPACE)/nginx-default-backend-external
- --logtostderr
- --configmap=$(POD_NAMESPACE)/nginx-ingress-config
- --default-ssl-certificate=$(POD_NAMESPACE)/default-tls
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
ports:
- name: http
containerPort: 80
- name: https
containerPort: 443
可能是什么原因
基於評論發布為 Community Wiki,以獲得更好的可見性。
問題的根本原因不是nginx-controller
設置,而是Kubernetes Cluster Configuration
。
1.使用了錯誤的cidr
。
原始發帖者使用與主機相同的--pod-network-cidr
值。 它在文檔中有描述。
另外請注意,您的 Pod 網絡不得與任何主機網絡重疊,因為這可能會導致問題。 如果您發現您的網絡插件的首選 Pod 網絡與您的一些主機網絡之間存在沖突,您應該考慮一個合適的 CIDR 替代品,並在 kubeadm init 期間使用 --pod-network-cidr 並將其用作網絡插件的 YAML 的替代品.
2. CoreDNS崩潰。
原始發帖者使用kubectl -n kube-system edit configmap coredns
了ConfigMap
,其中包含有關CoreDNS
配置的信息(注釋循環)。 后來 OP 安裝了CNI
-Flannel 並重新啟動CoreDNS
pod 以從ConfigMap
接收新配置。
之后Nginx-controller
配置 YAMLs 工作正常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.