Score:0

เซิร์ฟเวอร์ API บนมาสเตอร์สต็อปหลังจากเพิ่มคอนโทรลเพลนที่สอง

ธง us
TRW

ในการตั้งค่าการทดสอบปัจจุบันของฉัน ฉันมี VM หลายตัวที่ใช้ Debian-11 โหนดทั้งหมดมี IP ส่วนตัวและอินเตอร์เฟส wireguard ตัวที่สอง ในอนาคต โหนดจะอยู่คนละตำแหน่งกับเครือข่ายที่แตกต่างกัน และ Wireguard จะถูกใช้เพื่อ "ซ้อนทับ" สภาพแวดล้อมเครือข่ายที่แตกต่างกันทั้งหมด ฉันต้องการติดตั้ง Kubernetes บนโหนดทั้งหมด

โหนด ip สาธารณะ wireguard ip
vm1 192.168.10.10 10.11.12.10
vm2 192.168.10.11 10.11.12.11
vm3 192.168.10.12 10.11.12.12
...

ดังนั้นฉันจึงติดตั้งนักเทียบท่าและ kubeadm/kubelet/kubectl ในเวอร์ชัน 1.23.5 บนโหนดทั้งหมด นอกจากนี้ ฉันได้ติดตั้ง haproxy บนโหนดทั้งหมดด้วย ทำงานเป็นโหลดบาลานเซอร์โดยแสดงรายการไปยัง localhost:443 และส่งต่อคำขอไปยังหนึ่งในส่วนควบคุมออนไลน์

จากนั้นฉันเริ่มคลัสเตอร์ด้วย kubeadm

vm01> kubeadm init --apiserver-advertise-address=10.11.12.10 --pod-network-cidr=10.20.0.0/16

หลังจากนั้นฉันทดสอบเพื่อรวมผ้าสักหลาดหรือผ้าดิบ ไม่ว่าจะโดยการเพิ่ม --iface=<wireguard-interface> หรือโดยการตั้งค่ารายการที่กำหนดเอง ...nodeAddressAutodetectionV4.interface: <wireguard-interface>.

เมื่อฉันเพิ่มโหนดปกติ - ทุกอย่างเรียบร้อยดี โหนดถูกเพิ่ม สร้างพ็อด และทำการสื่อสารผ่านอินเทอร์เฟซเครือข่ายที่กำหนดไว้

เมื่อฉันเพิ่มระนาบควบคุมโดยไม่มีอินเทอร์เฟซ wireguard ฉันยังสามารถเพิ่มระนาบควบคุมอื่นได้ด้วย

vm2> kubeadm เข้าร่วม 127.0.0.1:443 --token ... --discovery-token-ca-cert-hash sha256:... --control-plane

ก่อนหน้านั้นฉันได้คัดลอกไฟล์หลายไฟล์จาก vm01 ถึง vm02 จาก /etc/kubernetes/pki ชอบ แคลิฟอร์เนีย*, สา.*, front-proxy-ca.*, apiserver-kubelet-client.* และ ฯลฯd/ca.*.

แต่เมื่อฉันใช้เครือข่ายผ้าสักหลาดหรือผ้าดิบร่วมกับอินเตอร์เฟส wireguard มีบางอย่างแปลก ๆ เกิดขึ้นหลังจากคำสั่งเข้าร่วม

root@vm02:~# kubeadm เข้าร่วม 127.0.0.1:443 --token nwevkx.tzm37tb4qx3wg2jz --discovery-token-ca-cert-hash sha256:9a97a5846ad823647ccb1892971c5f0004043d88f62328d051a74ceb --controlplaned84ceb
[preflight] การตรวจสอบก่อนการบิน
[preflight] การอ่านการกำหนดค่าจากคลัสเตอร์...
[preflight] FYI: คุณสามารถดูไฟล์ปรับแต่งนี้ด้วย 'kubectl -n kube-system get cm kubeadm-config -o yaml'
[การบินล่วงหน้า] ดำเนินการตรวจสอบก่อนการบินก่อนที่จะเริ่มต้นอินสแตนซ์เครื่องบินควบคุมใหม่
[preflight] การดึงรูปภาพที่จำเป็นสำหรับการตั้งค่าคลัสเตอร์ Kubernetes
[preflight] อาจใช้เวลาหนึ่งหรือสองนาที ขึ้นอยู่กับความเร็วของการเชื่อมต่ออินเทอร์เน็ตของคุณ
[preflight] คุณยังสามารถดำเนินการนี้ล่วงหน้าได้โดยใช้ 'kubeadm config images pull'
[ใบรับรอง] การใช้โฟลเดอร์ certificateDir "/etc/kubernetes/pki"
[certs] กำลังสร้างใบรับรองและคีย์ "front-proxy-client"
[certs] กำลังสร้างใบรับรองและคีย์ "etcd/server"
[certs] ใบรับรองการให้บริการ etcd/server ได้รับการลงชื่อสำหรับชื่อ DNS [localhost mimas] และ IPs [192.168.10.11 127.0.0.1 ::1]
[certs] กำลังสร้างใบรับรองและคีย์ "etcd/peer"
[certs] ใบรับรองการให้บริการ etcd/peer ได้รับการลงชื่อสำหรับชื่อ DNS [localhost mimas] และ IPs [192.168.10.11 127.0.0.1 ::1]
[certs] กำลังสร้างใบรับรองและคีย์ "etcd/healthcheck-client"
[certs] กำลังสร้างใบรับรองและคีย์ "apiserver-etcd-client"
[certs] กำลังสร้างใบรับรองและคีย์ "apiserver"
[certs] apiserver ที่ให้บริการใบรับรองได้รับการลงชื่อสำหรับชื่อ DNS [kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local mimas] และ IPs [10.96.0.1 192.168.10.11 127.0.0.1]
[ใบรับรอง] โดยใช้ใบรับรองและคีย์ "apiserver-kubelet-client" ที่มีอยู่
[certs] ขณะนี้ใบรับรองและคีย์ที่ถูกต้องมีอยู่ใน "/etc/kubernetes/pki"
[ใบรับรอง] โดยใช้คีย์ "sa" ที่มีอยู่
[kubeconfig] กำลังสร้างไฟล์ kubeconfig
[kubeconfig] การใช้โฟลเดอร์ kubeconfig "/etc/kubernetes"
[จุดสิ้นสุด] คำเตือน: พอร์ตที่ระบุใน controlPlaneEndpoint จะแทนที่ bindPort ในที่อยู่ของ controlplane
[kubeconfig] กำลังเขียนไฟล์ "admin.conf" kubeconfig
[จุดสิ้นสุด] คำเตือน: พอร์ตที่ระบุใน controlPlaneEndpoint จะแทนที่ bindPort ในที่อยู่ของ controlplane
[kubeconfig] กำลังเขียนไฟล์ "controller-manager.conf" kubeconfig
[จุดสิ้นสุด] คำเตือน: พอร์ตที่ระบุใน controlPlaneEndpoint จะแทนที่ bindPort ในที่อยู่ของ controlplane
[kubeconfig] กำลังเขียนไฟล์ "scheduler.conf" kubeconfig
[ระนาบควบคุม] การใช้โฟลเดอร์รายการ "/etc/kubernetes/manifests"
[control-plane] การสร้างรายการ Pod แบบคงที่สำหรับ "kube-apiserver"
[control-plane] การสร้างรายการ Pod แบบคงที่สำหรับ "kube-controller-manager"
[control-plane] การสร้างรายการ Pod แบบคงที่สำหรับ "kube-scheduler"
[ตรวจสอบ-etcd] ตรวจสอบว่าคลัสเตอร์ etcd สมบูรณ์
[kubelet-start] กำลังเขียนการกำหนดค่า kubelet ไปยังไฟล์ "/var/lib/kubelet/config.yaml"
[kubelet-start] การเขียนไฟล์สภาพแวดล้อม kubelet พร้อมแฟล็กไปยังไฟล์ "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] การเริ่มต้น kubelet
[kubelet-start] กำลังรอให้ kubelet ดำเนินการ TLS Bootstrap...
[etcd] ประกาศสมาชิก etcd ใหม่ที่เข้าร่วมคลัสเตอร์ etcd ที่มีอยู่
[etcd] การสร้างรายการ Pod แบบคงที่สำหรับ "etcd"
[etcd] กำลังรอสมาชิก etcd ใหม่เพื่อเข้าร่วมคลัสเตอร์ อาจใช้เวลาถึง 40 วินาที
[kubelet-check] หมดเวลาเริ่มต้น 40 วินาที
ขั้นตอนการดำเนินการข้อผิดพลาด control-plane-join/etcd: เกิดข้อผิดพลาดในการสร้างไฟล์รายการพ็อดสแตติก etcd ในเครื่อง: หมดเวลารอให้คลัสเตอร์ etcd พร้อมใช้งาน
หากต้องการดูการติดตามสแต็กของข้อผิดพลาดนี้ให้ดำเนินการด้วย --v=5 หรือสูงกว่า

และหลังจากหมดเวลานั้น แม้แต่ใน vm01 เซิร์ฟเวอร์ API ก็หยุดทำงาน ฉันก็ไม่สามารถรันคำสั่ง kubeadm หรือ kubectl ได้อีก บริการ HTTPS บน 6443 ไม่ทำงาน แต่ฉันก็ไม่เข้าใจว่าเหตุใดเซิร์ฟเวอร์ API บน vm01 จึงหยุดทำงานเมื่อเพิ่มเซิร์ฟเวอร์ API ตัวที่สอง และฉันก็หาสาเหตุไม่ได้เมื่อเอาต์พุตพูดถึง IP 192.168.... เพราะคลัสเตอร์ควรสื่อสารผ่าน 10.11.12.0 เท่านั้น /24 เครือข่ายไวร์การ์ด

Score:0
ธง us
TRW

หลังจากพบปัญหาที่คล้ายกันใน https://stackoverflow.com/questions/64227042/setting-up-a-kubernetes-master-on-a-different-ip ฉันคิดว่านี่เป็นวิธีแก้ปัญหาที่นี่ด้วย เมื่อฉันเพิ่ม --apiserver-advertise-address=<this-wireguard-ip>การเปลี่ยนแปลงเอาต์พุต (ไม่ใช่ 192.168.. IP) และเข้าร่วมสิ่งที่ฉันไม่เข้าใจ ทำไมเซิร์ฟเวอร์ VM01 API หยุดทำงาน

ไม่ว่าคำสั่งเข้าร่วมกำลังทำอะไรภายใต้ประทุน คำสั่งนั้นจำเป็นต้องสร้างบริการ etcd บนระนาบควบคุมที่สอง และบริการนั้นจะต้องทำงานบน IP เดียวกัน จากนั้นจึงต่อกับอินเตอร์เฟสเครือข่ายสักหลาด/ผ้าดิบ ในกรณีของการใช้อินเทอร์เฟซเครือข่ายหลัก พารามิเตอร์นี้ไม่จำเป็นบนระนาบควบคุมที่สอง/สาม

โพสต์คำตอบ

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