Score:1

กำลังอัปเดตแผนภูมิหางเสือ ingress-nginx สำหรับ kubernetes 1.23.5

ธง be

ฉันมีปัญหามากมายที่ดูเหมือนจะเกิดจากการอัปเกรดคลัสเตอร์ kubernetes เป็นเวอร์ชันล่าสุด (1.23.5) ตอนแรกฉันมีปัญหาบางอย่างกับตัวคลัสเตอร์เองและโหนด แต่ดูเหมือนว่าจะได้รับการแก้ไขแล้ว และคลัสเตอร์ก็ดูเหมือนจะมีสุขภาพดี อย่างน้อยมันก็บอกว่าเมื่อฉันเรียกใช้ kops ตรวจสอบคลัสเตอร์. ปัญหาที่ฉันพบตอนนี้คือพ็อด ingress-nginx ของฉันไม่ทำงาน ซึ่งหมายความว่าโหลดบาลานเซอร์ของฉันไม่มีอะไรต้องชี้ ดังนั้นฉันจึงไม่สามารถเข้าถึงแอปพลิเคชันของฉันได้ แม้ว่าพ็อดแอปพลิเคชันจะทำงานโดยไม่มีปัญหา ฉันใช้หางเสือเพื่อสร้างทรัพยากร ingress-nginx และจะวางไฟล์ที่ฉันพยายามใช้ด้านล่างเพื่ออัปเกรด ฉันได้ลองทำหลายสิ่งหลายอย่างเกี่ยวกับสิ่งนี้และฉันคิดว่าสิ่งสำคัญที่ฉันขาดหายไปคือเนื้อหาใน IngressClass และฉันได้พยายามรวมสิ่งนั้นไว้ในหลาย ๆ ที่ แต่ฉันไม่เห็นวิธีการทำเช่นนั้นคลัสเตอร์ของฉันมีตัวควบคุมขาเข้าเพียงตัวเดียว และมีอินสแตนซ์ Ingress ที่กำหนดไว้ในการปรับใช้สำหรับแต่ละอินสแตนซ์ของแอปพลิเคชัน คุณยังจะเห็นว่า AppVersion เป็น 0.24.0 ฉันได้ลองชนมันหลายวิธีและใช้อิมเมจต่างๆ ใน ​​deployment.yaml

rbac.yml

api เวอร์ชัน: v1
ชนิด: ServiceAccount
ข้อมูลเมตา:
  ชื่อ: {{ .Chart.Name }}-serviceaccount

---
รุ่น api: rbac.authorization.k8s.io/v1
ประเภท: ClusterRole
ข้อมูลเมตา:
  ชื่อ: {{ .Chart.Name }}-clusterrole
กฎ:
  - กลุ่ม api:
      - ""
    ทรัพยากร:
      - configmaps
      - จุดสิ้นสุด
      - โหนด
      - ฝัก
      - ความลับ
    คำกริยา:
      - รายการ
      - นาฬิกา
  - กลุ่ม api:
      - ""
    ทรัพยากร:
      - โหนด
    คำกริยา:
      - รับ
  - กลุ่ม api:
      - ""
    ทรัพยากร:
      - บริการ
    คำกริยา:
      - รับ
      - รายการ
      - นาฬิกา
  - กลุ่ม api:
      - "ส่วนขยาย"
    ทรัพยากร:
      - ทางเข้า
    คำกริยา:
      - รับ
      - รายการ
      - นาฬิกา
  - กลุ่ม api:
      - ""
    ทรัพยากร:
      - เหตุการณ์
    คำกริยา:
      - สร้าง
      - ปะ
  - กลุ่ม api:
      - "ส่วนขยาย"
    ทรัพยากร:
      - ทางเข้า / สถานะ
    คำกริยา:
      - อัปเดต

---
รุ่น api: rbac.authorization.k8s.io/v1
ชนิด: บทบาท
ข้อมูลเมตา:
  ชื่อ: {{ .Chart.Name }}-บทบาท
กฎ:
  - กลุ่ม api:
      - ""
    ทรัพยากร:
      - configmaps
      - ฝัก
      - ความลับ
      - เนมสเปซ
    คำกริยา:
      - รับ
  - กลุ่ม api:
      - ""
    ทรัพยากร:
      - configmaps
    ชื่อทรัพยากร:
      # ค่าเริ่มต้นเป็น "<election-id>-<ingress-class>"
      # ที่นี่: "<ingress-controller-leader>-<nginx>"
      # สิ่งนี้จะต้องปรับเปลี่ยนหากคุณเปลี่ยนพารามิเตอร์ตัวใดตัวหนึ่ง
      # เมื่อเปิดตัว nginx-ingress-controller
      - "ตัวควบคุมขาเข้าผู้นำ nginx"
    คำกริยา:
      - รับ
      - อัปเดต
  - กลุ่ม api:
      - ""
    ทรัพยากร:
      - configmaps
    คำกริยา:
      - สร้าง
  - กลุ่ม api:
      - ""
    ทรัพยากร:
      - จุดสิ้นสุด
    คำกริยา:
      - รับ

---
รุ่น api: rbac.authorization.k8s.io/v1
ชนิด: RoleBinding
ข้อมูลเมตา:
  ชื่อ: {{ .Chart.Name }}-nisa-binding
บทบาทอ้างอิง:
  apiGroup: rbac.authorization.k8s.io
  ชนิด: บทบาท
  ชื่อ: {{ .Chart.Name }}-บทบาท
วิชา:
  - ประเภท: ServiceAccount
    ชื่อ: {{ .Chart.Name }}-serviceaccount
    เนมสเปซ: {{ .Release.Namespace }}

---
รุ่น api: rbac.authorization.k8s.io/v1
ชนิด: ClusterRoleBinding
ข้อมูลเมตา:
  ชื่อ: {{ .Chart.Name }}-clusterrole-nisa-binding
บทบาทอ้างอิง:
  apiGroup: rbac.authorization.k8s.io
  ประเภท: ClusterRole
  ชื่อ: {{ .Chart.Name }}-clusterrole
วิชา:
  - ประเภท: ServiceAccount
    ชื่อ: {{ .Chart.Name }}-serviceaccount
    เนมสเปซ: {{ .Release.Namespace }}

บริการ. yaml

---
# บริการหลักรับส่งข้อมูล http
ชนิด:บริการ
api เวอร์ชัน: v1
ข้อมูลเมตา:
  ชื่อ: loadbalancer-ingress
  ป้ายกำกับ:
    app.kubernetes.io/managed-by: หางเสือ
  คำอธิบายประกอบ:
    {{- if .Values.loadbalancer.cert }}
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: {{ .Values.loadbalancer.cert | อ้าง }}
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "{{- range .Values.loadbalancer.ports -}}{{- if .ssl -}}{{ .name }},{{ - จบ -}}{{- จบ -}}"
    {{- จบ }}
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: {{ .Values.loadbalancer.backend_protocol | อ้าง }}
    service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "60"
ข้อมูลจำเพาะ:
  ประเภท: LoadBalancer
  ตัวเลือก: 
    พ็อด: {{ .Chart.Name }}
  พอร์ต:
    {{- ช่วง .Values.loadbalancer.ports }}
    - ชื่อ: {{ .name }}
      พอร์ต: {{ .พอร์ต }}
      พอร์ตเป้าหมาย: {{ .targetPort }}
    {{- จบ }}

---
# บริการจำลองเพื่อหยุดคอนโทรลเลอร์จากการจู้จี้เกี่ยวกับบริการ ingress-nginx
ชนิด:บริการ
api เวอร์ชัน: v1
ข้อมูลเมตา:
  ชื่อ: ingress-nginx
  ป้ายกำกับ:
    app.kubernetes.io/managed-by: หางเสือ
ข้อมูลจำเพาะ:
  พอร์ต:
  - ชื่อ: http
    พอร์ต: 10254
    พอร์ตเป้าหมาย: 10254
  ตัวเลือก:
    พ็อด: {{ .Chart.Name }}
---

การปรับใช้ yaml

---
apiVersion: แอป/v1
ชนิด: DaemonSet
ข้อมูลเมตา:
  ชื่อ: {{ .Chart.Name }}-ตัวควบคุม
ข้อมูลจำเพาะ:
  ตัวเลือก:
    ป้ายกำกับการแข่งขัน:
      พ็อด: {{ .Chart.Name }}
  แม่แบบ:
    ข้อมูลเมตา:
      ป้ายกำกับ:
        พ็อด: {{ .Chart.Name }}
      คำอธิบายประกอบ:
        prometheus.io/port: "10254"
        prometheus.io/scrape: "จริง"
        Fluffybit.io/parser: k8s-nginx-ingress
    ข้อมูลจำเพาะ:
      serviceAccountName: {{ .Chart.Name }}-serviceaccount
      ตู้คอนเทนเนอร์:
        - ชื่อ: {{ .Chart.Name }}-ตัวควบคุม
          รูปภาพ: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:{{ .Chart.AppVersion }}
          หาเรื่อง:
            - /nginx-ingress-ตัวควบคุม
            - --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
            - --public-service=$(POD_NAMESPACE)/loadbalancer-เข้า
            - --annotations-prefix=nginx.ingress.kubernetes.io
          บริบทความปลอดภัย:
            allowPrivilegeEscalation: จริง
            ความสามารถ:
              หยด:
                - ทั้งหมด
              เพิ่ม:
                - NET_BIND_SERVICE
            # www-ข้อมูล -> 33
            เรียกใช้ AsUser: 33
          สภาพแวดล้อม:
            - ชื่อ: POD_NAME
              มูลค่าจาก:
                fieldRef:
                  fieldPath: metadata.name
            - ชื่อ: POD_NAMESPACE
              มูลค่าจาก:
                fieldRef:
                  fieldPath: metadata.namespace
          พอร์ต:
            - ชื่อ: http
              ตู้คอนเทนเนอร์พอร์ต: 80
            - ชื่อ: เมตริก
              พอร์ตคอนเทนเนอร์: 10254
          livenessProbe:
            เกณฑ์ความล้มเหลว: 3
            httpรับ:
              เส้นทาง: /healthz
              พอร์ต: 10254
              รูปแบบ: HTTP
            initialDelaySeconds: 10
            periodSeconds: 10
            เกณฑ์ความสำเร็จ: 1
            หมดเวลาวินาที: 10
          ความพร้อม Probe:
            เกณฑ์ความล้มเหลว: 3
            httpรับ:
              เส้นทาง: /healthz
              พอร์ต: 10254
              รูปแบบ: HTTP
            periodSeconds: 10
            เกณฑ์ความสำเร็จ: 1
            หมดเวลาวินาที: 10

configmap.yaml

---
ประเภท: ConfigMap
api เวอร์ชัน: v1
ข้อมูลเมตา:
  ชื่อ: {{ .Chart.Name }}-nginx-configuration
ข้อมูล:
  ใช้พร็อกซีโปรโตคอล: "เท็จ"
  ใช้ส่งต่อส่วนหัว: "จริง"
  โทเค็นเซิร์ฟเวอร์: "เท็จ"

---
ประเภท: ConfigMap
api เวอร์ชัน: v1
ข้อมูลเมตา:
  ชื่อ: {{ .Chart.Name }}-tcp-services

---
ประเภท: ConfigMap
api เวอร์ชัน: v1
ข้อมูลเมตา:
  ชื่อ: {{ .Chart.Name }}-udp-services

Chart.yaml

ชื่อ: ingress-nginx
คำอธิบาย: Cluster - Ingress Controller
รุ่น: 1
api เวอร์ชัน: v1

เวอร์ชันแอป: "0.24.0"

ค่า. yaml

โหลดบาลานเซอร์:
  backend_protocol: http
  ใบรับรอง: <my-cert>
  พอร์ต:
    - ชื่อ: http
      พอร์ต: 80
      พอร์ตเป้าหมาย: 80
      ssl: เท็จ
    - ชื่อ: https
      พอร์ต: 443
      พอร์ตเป้าหมาย: 80
      ssl: จริง

คำสั่ง ฉันกำลังทำงาน

หางเสืออัพเกรด ingress-nginx --install --namespace ingress-nginx ./

ผลลัพธ์ที่ฉันได้รับในปัจจุบัน

W0327 19:53:47.472827 8 client_config.go:614] ไม่ได้ระบุ --kubeconfig และ --master การใช้ inClusterConfig สิ่งนี้อาจไม่ทำงาน
I0327 19:53:47.473136 8 main.go:241] "กำลังสร้างไคลเอ็นต์ API" host="https://100.64.0.1:443"
I0327 19:53:47.487201 8 main.go:285] "ทำงานในคลัสเตอร์ Kubernetes" major="1" minor="23" git="v1.23.5" state="clean" commit="c285e781331a3785a7f436042c65c5641ce8a9e9" platform="linux /amd64"
I0327 19:53:47.684135 8 main.go:105] "สร้างใบรับรอง SSL ปลอมแล้ว" file="/etc/ingress-controller/ssl/default-fake-certificate.pem"
I0327 19:53:47.689215 8 main.go:115] "เปิดใช้ฟีเจอร์ Ingress ใหม่ตั้งแต่ Kubernetes v1.18"
E0327 19:53:47.692044 8 main.go:124] "การค้นหา IngressClass" err="ingressclasses.networking.k8s.io \"nginx\" เป็นสิ่งต้องห้าม: ผู้ใช้ \"ระบบ:serviceaccount:ingress-nginx:ingress-nginx- serviceaccount\" ไม่สามารถรับทรัพยากร \"ingressclasses\" ในกลุ่ม API \"networking.k8s.io\" ที่ขอบเขตคลัสเตอร์" class="nginx"
W0327 19:53:47.692070 8 main.go:127] ไม่พบทรัพยากร IngressClass ที่มีชื่อ nginx จะใช้คำอธิบายประกอบเท่านั้น
I0327 19:53:47.739577 8 nginx.go:254] "กำลังเริ่มต้นตัวควบคุม NGINX Ingress"
I0327 19:53:47.755865 8 event.go:282] เหตุการณ์ (v1.ObjectReference{ชนิด:"ConfigMap", เนมสเปซ:"ingress-nginx", ชื่อ:"ingress-nginx-tcp-services", UID:"6115a34f- 4f95-4f99-970a-b65477e45808", APIVersion:"v1", ResourceVersion:"103400810", FieldPath:""}): ประเภท: 'ปกติ' เหตุผล: 'สร้าง' ConfigMap ingress-nginx/ingress-nginx-tcp-services
I0327 19:53:47.756010 8 event.go:282] เหตุการณ์ (v1.ObjectReference{ชนิด:"ConfigMap", เนมสเปซ:"ingress-nginx", ชื่อ:"ingress-nginx-udp-services", UID:"fa04d653- a070-4934-a606-a60a7f98ad6a", APIVersion:"v1", ResourceVersion:"103400812", FieldPath:""}): ประเภท: 'ปกติ' เหตุผล: 'สร้าง' ConfigMap ingress-nginx/ingress-nginx-udp-services
I0327 19:53:47.756196 8 event.go:282] เหตุการณ์ (v1.ObjectReference{ชนิด:"ConfigMap", เนมสเปซ:"ingress-nginx", ชื่อ:"ingress-nginx-nginx-configuration", UID:"3af77ed0- e71c-49e9-bac3-b7c3fada40df", APIVersion:"v1", ResourceVersion:"103400808", FieldPath:""}): ประเภท: 'ปกติ' เหตุผล: 'สร้าง' 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: ไม่สามารถดู *v1beta1.Ingress: ไม่สามารถแสดงรายการ *v1beta1.Ingress : เซิร์ฟเวอร์ไม่พบทรัพยากรที่ร้องขอ
E0327 19:53:50.385656 8 reflector.go:138] k8s.io/[email protected]/tools/cache/reflector.go:167: ไม่สามารถดู *v1beta1.Ingress: ไม่สามารถแสดงรายการ *v1beta1.Ingress : เซิร์ฟเวอร์ไม่พบทรัพยากรที่ร้องขอ
E0327 19:53:52.811461 8 reflector.go:138] k8s.io/[email protected]/tools/cache/reflector.go:167: ไม่สามารถดู *v1beta1.Ingress: ไม่สามารถแสดงรายการ *v1beta1.Ingress : เซิร์ฟเวอร์ไม่พบทรัพยากรที่ร้องขอ
E0327 19:53:57.052727 8 reflector.go:138] k8s.io/[email protected]/tools/cache/reflector.go:167: ไม่สามารถดู *v1beta1.Ingress: ไม่สามารถแสดงรายการ *v1beta1.Ingress : เซิร์ฟเวอร์ไม่พบทรัพยากรที่ร้องขอ
E0327 19:54:05.784219 8 reflector.go:138] k8s.io/[email protected]/tools/cache/reflector.go:167: ไม่สามารถดู *v1beta1.Ingress: ไม่สามารถแสดงรายการ *v1beta1.Ingress : เซิร์ฟเวอร์ไม่พบทรัพยากรที่ร้องขอ
I0327 19:54:26.690574 8 main.go:187] "ได้รับ SIGTERM กำลังปิด"
I0327 19:54:26.690593 8 nginx.go:372] "กำลังปิดคิวคอนโทรลเลอร์"
E0327 19:54:26.690778 8 store.go:178] หมดเวลารอให้แคชซิงค์
I0327 19:54:26.690835 8 nginx.go:296] "กำลังเริ่มกระบวนการ NGINX"
I0327 19:54:26.691321 8 Queue.go:78] "คิวถูกปิด ไม่สามารถเข้าคิว" key="&ObjectMeta{Name:initial-sync,GenerateName:,Namespace:,SelfLink:,UID:,ResourceVersion:,Generation :0,CreationTimestamp:0001-01-01 00:00:00 +0000 UTC,DeletionTimestamp:<nil>,DeletionGracePeriodSeconds:nil,Labels:map[string]string{},Annotations:map[string]string{},OwnerReferences :[]OwnerReference{},Finalizers:[],ClusterName:,ManagedFields:[]ManagedFieldsEntry{},}"
I0327 19:54:26.691353 8 leaderelection.go:243] พยายามที่จะได้ผู้นำการเช่า ingress-nginx/ingress-controller-leader-nginx...
I0327 19:54:26.718477 8 status.go:84] "เลือกผู้นำคนใหม่แล้ว" identity="ingress-nginx-controller-72b9j"
I0327 19:54:26.733451 8 nginx.go:388] "หยุดกระบวนการ NGINX"
2022/03/27 19:54:26 [ประกาศ] 28#28: เริ่มกระบวนการสัญญาณ
I0327 19:54:27.738884 8 nginx.go:401] "กระบวนการ NGINX หยุดทำงาน"
I0327 19:54:27.738926 8 main.go:195] "จัดการออก กำลังรอการลบ Pod"
I0327 19:54:37.739197 8 main.go:198] "กำลังออก" รหัส=0

ยินดีให้รายละเอียดอื่นๆ ที่เป็นประโยชน์ ฉันขอขอบคุณความช่วยเหลือล่วงหน้า!

แก้ไข:

คลัสเตอร์อยู่บน AWS และสร้างโดยใช้คำสั่ง k0ps ต่อไปนี้

kops สร้างคลัสเตอร์ --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
br flag
คลัสเตอร์ K8s ของคุณมีการกำหนดค่าอย่างไร - การกระจายแบบใด การติดตั้งผู้ให้บริการแบบ Bare Metal/Cloud หรือไม่
kirie avatar
be flag
คลัสเตอร์ของฉันสร้างขึ้นโดยใช้ k0ps และอยู่บน AWS

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา