เรียกใช้คลัสเตอร์ไฮบริดบน 3 VMs, โหนดหลักเป็น linux, ผู้ปฏิบัติงานคนหนึ่งคือ linux อีกคนหนึ่งคือ windows โหนด linux ทำงานได้อย่างถูกต้อง (อย่างน้อยก็สามารถเรียกใช้งาน Jenkins และ grafana ได้)
โหนด Windows ไม่สามารถเข้าถึง DNS จาก IP ของบริการ แม้ว่าบริการ DNS จะหยุดทำงานและพ็อดทั้งสองไม่มีข้อผิดพลาด พ็อดพร็อกซี kube ทำงานอย่างถูกต้องบนโหนด windows ที่ให้เฉพาะข้อมูลในบันทึก (บนโหนด windows):
"I1011 10:02:39.770583 7524 proxier.go:919] syncProxyRules ใช้เวลา 2.2098ms\n","stream":"stderr","time":"2021-10-11T08:02:39.7715829Z"}
{"log":"I1011 10:02:39.770583 7524 bounded_frequency_runner.go:296] sync-runner: วิ่ง ถัดไปเป็นไปได้ใน 1 วินาที เป็นช่วงๆ ใน 30 วินาที\n","สตรีม":"stderr","เวลา":" 2021-10-11T08:02:39.7715829Z"}
{"log":"I1011 10:03:09.782792 7524 proxier.go:967] นโยบายการซิงค์\n","stream":"stderr","time":"2021-10-11T08:03:09.7837903Z"}
{"log":"I1011 10:03:09.782792 7524 proxier.go:978] ใช้นโยบายนี้แล้วสำหรับ (*winkernel.serviceInfo)(0xc00080aab0)({\n","stream":"stderr","time": "2021-10-11T08:03:09.7837903Z"}
เมื่อพยายาม nslookup อะไรจากพ็อดที่ทำงานบนคลัสเตอร์ นี่คือผลลัพธ์:
คำขอ DNS หมดเวลา
หมดเวลา 2 วินาที
เซิร์ฟเวอร์: ไม่รู้จัก
ที่อยู่: 172.31.128.10
คำขอ DNS หมดเวลา
หมดเวลา 2 วินาที
คำขอ DNS หมดเวลา
หมดเวลา 2 วินาที
คำขอ DNS หมดเวลา
หมดเวลา 2 วินาที
คำขอ DNS หมดเวลา
หมดเวลา 2 วินาที
*** คำขอที่ไม่รู้จักหมดเวลา
การพยายามสืบค้น DNS โดยตรงกับหนึ่งใน IP จากพ็อดที่เรียกใช้ DNS ทำให้ได้ผลลัพธ์ที่ถูกต้อง
โหนด linux เป็นมาตรฐาน ฉันอ่านเอกสารแล้ว https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/, cni เป็นผ้าสักหลาด และมี metalLB มี 3 ซับเน็ต 1 /17 สำหรับบริการ 1 /17 สำหรับคลัสเตอร์ ips และ 1 /24 สำหรับโหลดบาลานซ์ IP ภายนอก ช่วงทั้งหมดเป็นช่วง RFC1918 (คลัสเตอร์มีไว้สำหรับใช้ภายในเท่านั้น) DNS เป็น corens ด้วยค่าเริ่มต้น
โหนด Windows ถูกตั้งค่าโดยใช้บทช่วยสอนนี้ https://v1-17.docs.kubernetes.io/docs/setup/production-environment/windows/user-guide-windows-nodes/ เปลี่ยนเวอร์ชันจาก 1.17 เป็น 1.21.3
พร็อกซี windows kube ถูกวางไข่ผ่าน
curl -L https://github.com/kubernetes-sigs/sig-windows-tools/releases/latest/download/kube-proxy.yml | sed 's/VERSION/v1.22.0/g' | kubectl ใช้ -f -
รุ่น Kubectl:
รุ่น $ kubectl
เวอร์ชันไคลเอนต์: version.Info{หลัก:"1", รอง:"21", GitVersion:"v1.21.3", GitCommit:"ca643a4d1f7bfe34773c74f79527be4afd95bf39", GitTreeState:"สะอาด", BuildDate:"2021-07-15T21:04: 39Z", GoVersion:"go1.16.6", คอมไพเลอร์:"gc", แพลตฟอร์ม:"windows/amd64"}
เวอร์ชันเซิร์ฟเวอร์: version.Info{ เมเจอร์:"1", รอง:"21", GitVersion:"v1.21.5", GitCommit:"aea7bbadd2fc0cd689de94a54e5b7b758869d691", GitTreeState:"สะอาด", BuildDate:"2021-09-15T21:04: 16Z", GoVersion:"go1.16.8", คอมไพเลอร์:"gc", แพลตฟอร์ม:"linux/amd64"}