Am o mulțime de probleme care par să decurgă din actualizarea clusterului meu kubernetes la cea mai recentă versiune (1.23.5). Am avut inițial câteva probleme cu clusterul în sine și cu nodurile, dar asta pare a fi rezolvat și clusterul pare să fie sănătos, cel puțin se spune că atunci când rulez kops valida clusterul
. Problema cu care mă confrunt acum este că podurile mele de intrare-nginx nu rulează, ceea ce înseamnă că echilibrerul meu de încărcare nu are la ce să indice și, prin urmare, nu pot ajunge la aplicația mea, chiar dacă podurile de aplicație rulează fără probleme. Am folosit helm pentru a crea resursele ingress-nginx și voi lipi fișierele pe care încerc să le folosesc mai jos pentru a face upgrade. Am încercat mai multe lucruri în jurul acestui lucru și cred că principalul lucru care îmi lipsește este chestiile IngressClass și am încercat să le includ în mai multe locuri, dar nu văd cum să fac asta.Clusterul meu are un singur controler de intrare și există o instanță Ingress definită în implementare pentru fiecare instanță a aplicației. Veți vedea, de asemenea, că AppVersion este 0.24.0, am încercat să o depășesc în mai multe moduri și să folosesc imagini diferite în deployment.yaml.
rbac.yml
apiVersion: v1
fel: ServiceAccount
metadate:
nume: {{ .Chart.Name }}-serviceaccount
---
apiVersion: rbac.authorization.k8s.io/v1
fel: ClusterRole
metadate:
nume: {{ .Chart.Name }}-clusterrole
reguli:
- apiGroups:
-""
resurse:
- configmaps
- puncte finale
- noduri
- păstăi
- secrete
verbe:
- lista
- ceas
- apiGroups:
-""
resurse:
- noduri
verbe:
- obține
- apiGroups:
-""
resurse:
- Servicii
verbe:
- obține
- lista
- ceas
- apiGroups:
- "extensii"
resurse:
- intrări
verbe:
- obține
- lista
- ceas
- apiGroups:
-""
resurse:
- evenimente
verbe:
- crea
- plasture
- apiGroups:
- "extensii"
resurse:
- intrări/stare
verbe:
- Actualizați
---
apiVersion: rbac.authorization.k8s.io/v1
fel: Rol
metadate:
nume: {{ .Chart.Name }}-rol
reguli:
- apiGroups:
-""
resurse:
- configmaps
- păstăi
- secrete
- spații de nume
verbe:
- obține
- apiGroups:
-""
resurse:
- configmaps
ResourceNames:
# Implicit la „<election-id>-<ingress-class>”
# Aici: „<ingress-controller-leader>-<nginx>”
# Acest lucru trebuie adaptat dacă modificați oricare dintre parametri
# când lansați nginx-ingress-controller.
- „ingress-controller-leader-nginx”
verbe:
- obține
- Actualizați
- apiGroups:
-""
resurse:
- configmaps
verbe:
- crea
- apiGroups:
-""
resurse:
- puncte finale
verbe:
- obține
---
apiVersion: rbac.authorization.k8s.io/v1
fel: RoleBinding
metadate:
nume: {{ .Chart.Name }}-nisa-binding
rolRef:
apiGroup: rbac.authorization.k8s.io
fel: Rol
nume: {{ .Chart.Name }}-rol
subiecte:
- fel: ServiceAccount
nume: {{ .Chart.Name }}-serviceaccount
spațiu de nume: {{ .Release.Namspace }}
---
apiVersion: rbac.authorization.k8s.io/v1
fel: ClusterRoleBinding
metadate:
nume: {{ .Chart.Name }}-clusterrole-nisa-binding
rolRef:
apiGroup: rbac.authorization.k8s.io
fel: ClusterRole
nume: {{ .Chart.Name }}-clusterrole
subiecte:
- fel: ServiceAccount
nume: {{ .Chart.Name }}-serviceaccount
spațiu de nume: {{ .Release.Namspace }}
serviciu.yaml
---
# Serviciul principal care ingerează trafic http
fel: Serviciu
apiVersion: v1
metadate:
nume: loadbalancer-ingress
etichete:
app.kubernetes.io/managed-by: Helm
adnotari:
{{- dacă .Values.loadbalancer.cert }}
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: {{ .Values.loadbalancer.cert | citat }}
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: „{{- interval .Values.loadbalancer.ports -}}{{- dacă .ssl -}}{{ .name }},{{ - end -}}{{- end -}}"
{{- Sfârşit }}
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: {{ .Values.loadbalancer.backend_protocol | citat }}
service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: „60”
specificație:
tip: LoadBalancer
selector:
pod: {{ .Chart.Name }}
porturi:
{{- interval .Values.loadbalancer.ports }}
- nume: {{ .nume }}
port: {{ .port }}
targetPort: {{ .targetPort }}
{{- Sfârşit }}
---
# Serviciu fals pentru a opri controlerul să nu mai sâcâie cu serviciul ingress-nginx
fel: Serviciu
apiVersion: v1
metadate:
nume: ingress-nginx
etichete:
app.kubernetes.io/managed-by: Helm
specificație:
porturi:
- nume: http
port: 10254
targetPort: 10254
selector:
pod: {{ .Chart.Name }}
---
implementare.yaml
---
apiVersion: apps/v1
fel: DaemonSet
metadate:
nume: {{ .Chart.Name }}-controller
specificație:
selector:
matchLabels:
pod: {{ .Chart.Name }}
șablon:
metadate:
etichete:
pod: {{ .Chart.Name }}
adnotari:
prometheus.io/port: „10254”
prometheus.io/scrape: „adevărat”
fluentbit.io/parser: k8s-nginx-ingress
specificație:
serviceAccountName: {{ .Chart.Name }}-serviceaccount
containere:
- nume: {{ .Chart.Name }}-controller
imagine: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:{{ .Chart.AppVersion }}
argumente:
- /nginx-ingress-controller
- --configmap=$(POD_NAMESPACE)/{{ .Chart.Name }}-nginx-configuration
- --tcp-services-configmap=$(POD_NAMESPACE)/{{ .Chart.Name }}-tcp-services
- --udp-services-configmap=$(POD_NAMESPACE)/{{ .Chart.Name }}-udp-services
- --publish-service=$(POD_NAMESPACE)/loadbalancer-ingress
- --annotations-prefix=nginx.ingress.kubernetes.io
securityContext:
allowPrivilegeEscalation: adevărat
capacitati:
cădere brusca:
- TOATE
adăuga:
- NET_BIND_SERVICE
# www-data -> 33
runAsUser: 33
env:
- nume: POD_NAME
valoareDe la:
fieldRef:
fieldPath: metadata.name
- nume: POD_NAMESPACE
valoareDe la:
fieldRef:
fieldPath: metadata.namespace
porturi:
- nume: http
containerPort: 80
- nume: metrici
containerPort: 10254
livenessProbe:
Pragul de eșec: 3
httpGet:
cale: /healthz
port: 10254
schema: HTTP
initialDelaySeconds: 10
perioadaSecunde: 10
Pragul de succes: 1
timeoutSecunde: 10
ReadinessProbe:
Pragul de eșec: 3
httpGet:
cale: /healthz
port: 10254
schema: HTTP
perioadaSecunde: 10
Pragul de succes: 1
timeoutSecunde: 10
configmap.yaml
---
fel: ConfigMap
apiVersion: v1
metadate:
nume: {{ .Chart.Name }}-nginx-configuration
date:
use-proxy-protocol: „fals”
use-forwarded-headers: „adevărat”
server-tokens: „false”
---
fel: ConfigMap
apiVersion: v1
metadate:
nume: {{ .Chart.Name }}-tcp-services
---
fel: ConfigMap
apiVersion: v1
metadate:
nume: {{ .Chart.Name }}-udp-services
Chart.yaml
nume: ingress-nginx
descriere: Cluster - Ingress Controller
versiunea: 1
apiVersion: v1
appVersion: „0.24.0”
valori.yaml
echilibrarea greutății:
backend_protocol: http
cert: <cert-meu>
porturi:
- nume: http
port: 80
targetPort: 80
ssl: fals
- nume: https
port: 443
targetPort: 80
ssl: adevărat
Comanda pe care rulez.
helm upgrade ingress-nginx --install --namespace ingress-nginx ./
Ieșire pe care o primesc în prezent.
W0327 19:53:47.472827 8 client_config.go:614] Nu au fost specificate nici --kubeconfig, nici --master. Folosind inClusterConfig. S-ar putea să nu funcționeze.
I0327 19:53:47.473136 8 main.go:241] „Crearea clientului API” host="https://100.64.0.1:443"
I0327 19:53:47.487201 8 main.go:285] „Rulează în cluster Kubernetes” major="1" minor="23" git="v1.23.5" state="clean" commit="c285e781331a3785a7f436042c65clinux="platforms" /amd64"
I0327 19:53:47.684135 8 main.go:105] „Certificat SSL fals creat” file="/etc/ingress-controller/ssl/default-fake-certificate.pem”
I0327 19:53:47.689215 8 main.go:115] „Activarea noilor funcții Ingress disponibile începând cu Kubernetes v1.18”
E0327 19:53:47.692044 8 main.go:124] „Căutarea IngressClass” err="ingressclasses.networking.k8s.io \"nginx\" este interzisă: utilizatorul \"system:serviceaccount:ingress-nginx:ingress-nginx- serviceaccount\" nu poate obține resursa \"ingressclasses\" în grupul API \"networking.k8s.io\" în domeniul clusterului" class="nginx"
W0327 19:53:47.692070 8 main.go:127] Nu a fost găsită nicio resursă IngressClass cu numele nginx. Se vor folosi doar adnotări.
I0327 19:53:47.739577 8 nginx.go:254] „Se pornește controlerul NGINX Ingress”
I0327 19:53:47.755865 8 event.go:282] Event(v1.ObjectReference{Kind:"ConfigMap", Namespace:"ingress-nginx", Name:"ingress-nginx-tcp-services", UID:"6115a34f- 4f95-4f99-970a-b65477e45808", APIVersion:"v1", ResourceVersion:"103400810", FieldPath:""}): tip: „Normal” motiv: „CREATE” ConfigMap ingress-nginx/ingress-nginx-tcp-services
I0327 19:53:47.756010 8 event.go:282] Event(v1.ObjectReference{Kind:"ConfigMap", Namespace:"ingress-nginx", Name:"ingress-nginx-udp-services", UID:"fa04d653- a070-4934-a606-a60a7f98ad6a", APIVersion:"v1", ResourceVersion:"103400812", FieldPath:""}): tip: „Normal” motiv: „CREATE” ConfigMap ingress-nginx/ingress-nginx-udp-services
I0327 19:53:47.756196 8 event.go:282] Event(v1.ObjectReference{Kind:"ConfigMap", Namespace:"ingress-nginx", Name:"ingress-nginx-nginx-configuration", UID:"3af77ed0- e71c-49e9-bac3-b7c3fada40df", APIVersion:"v1", ResourceVersion:"103400808", FieldPath:""}): tip: „Normal” motiv: „CREATE” ConfigMap ingress-nginx/ingress-nginx-nginx-configuration
E0327 19:53:48.844980 8 reflector.go:138] k8s.io/[email protected]/tools/cache/reflector.go:167: Nu s-a putut viziona *v1beta1.Ingress: nu s-a putut lista *v1beta1.Ingress : serverul nu a putut găsi resursa solicitată
E0327 19:53:50.385656 8 reflector.go:138] k8s.io/[email protected]/tools/cache/reflector.go:167: Nu s-a putut viziona *v1beta1.Ingress: nu s-a putut lista *v1beta1.Ingress : serverul nu a putut găsi resursa solicitată
E0327 19:53:52.811461 8 reflector.go:138] k8s.io/[email protected]/tools/cache/reflector.go:167: Nu s-a putut viziona *v1beta1.Ingress: nu s-a putut lista *v1beta1.Ingress : serverul nu a putut găsi resursa solicitată
E0327 19:53:57.052727 8 reflector.go:138] k8s.io/[email protected]/tools/cache/reflector.go:167: Nu s-a putut viziona *v1beta1.Ingress: nu s-a putut lista *v1beta1.Ingress : serverul nu a putut găsi resursa solicitată
E0327 19:54:05.784219 8 reflector.go:138] k8s.io/[email protected]/tools/cache/reflector.go:167: Nu s-a putut viziona *v1beta1.Ingress: nu s-a putut lista *v1beta1.Ingress : serverul nu a putut găsi resursa solicitată
I0327 19:54:26.690574 8 main.go:187] „SIGTERM primit, închidere”
I0327 19:54:26.690593 8 nginx.go:372] „Închiderea cozilor de la controler”
E0327 19:54:26.690778 8 store.go:178] a expirat în așteptarea sincronizării cache-urilor
I0327 19:54:26.690835 8 nginx.go:296] „Se pornește procesul NGINX”
I0327 19:54:26.691321 8 queue.go:78] „coada a fost oprită, nu s-a putut pune în coadă” key="&ObjectMeta{Name:initial-sync,GenerateName:,Namspace:,SelfLink:,UID:,GenerationVersion:, :0,CreationTimestamp:0001-01-01 00:00:00 +0000 UTC,DeletionTimestamp:<nil>,DeletionGracePeriodSeconds:nil,Labels:map[string]string{},Adnotations:map[string]string{},OwnerReferences :[]OwnerReference{},Finalizers:[],ClusterName:,ManagedFields:[]ManagedFieldsEntry{},}"
I0327 19:54:26.691353 8 leaderelection.go:243] încercarea de a achiziționa închiriere lider ingress-nginx/ingress-controller-leader-nginx...
I0327 19:54:26.718477 8 status.go:84] „Noul lider ales” identity="ingress-nginx-controller-72b9j"
I0327 19:54:26.733451 8 nginx.go:388] „Oprirea procesului NGINX”
2022/03/27 19:54:26 [notificare] 28#28: procesul de semnal a început
I0327 19:54:27.738884 8 nginx.go:401] „Procesul NGINX sa oprit”
I0327 19:54:27.738926 8 main.go:195] „Închidere rezolvată, în așteptarea ștergerii podului”
I0327 19:54:37.739197 8 main.go:198] Cod „Ieșire”=0
Cu plăcere să ofer orice alte detalii care ar fi de ajutor. Apreciez foarte mult ajutorul anticipat!
EDITAȚI | ×:
Clusterul este pe AWS și a fost creat folosind următoarea comandă k0ps.
kops create cluster --node-count 2 --node-size t2.medium --zones ap-southeast-2a,ap-southeast-2c --master-size t2.small --master-zones ap-southeast-2c - -master-count 1 --networking=calico --authorization RBAC -o yaml --dry-run > my-cluster.yaml