เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปƒเบ™ etcd Kubernetes cluster เป‚เบ”เบเบเบปเบ‡ (เป‚เบ”เบเบšเปเปˆเบกเบต K8s API)

เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™, เบฅเบนเบเบ„เป‰เบฒเบเปเบฒเบฅเบฑเบ‡เบ‚เปเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเบธเปˆเบก Kubernetes เป€เบžเบทเปˆเบญเบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบžเบฒเบเปƒเบ™เบเบธเปˆเบก: เป€เบžเบทเปˆเบญเบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเป‚เบ”เบเบเบปเบ‡เบเบฑเบšเบšเบฒเบ‡เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบซเบผเบทเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™, เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบเบฑเบšเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบžเบฒเบเปƒเบ™เบเบธเปˆเบก ...

เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปƒเบ™ etcd Kubernetes cluster เป‚เบ”เบเบเบปเบ‡ (เป‚เบ”เบเบšเปเปˆเบกเบต K8s API)

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบตเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป„เบ›เบซเบฒเบšเปเบฅเบดเบเบฒเบ™ memcached.staging.svc.cluster.local. เบžเบงเบเป€เบฎเบปเบฒเบชเบฐเบซเบ™เบญเบ‡เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ™เบตเป‰เป‚เบ”เบเปƒเบŠเป‰ VPN เบžเบฒเบเปƒเบ™เบเบธเปˆเบกเบ—เบตเปˆเบฅเบนเบเบ„เป‰เบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบเบฒเบ” subnets เบ‚เบญเบ‡ pods, เบšเปเบฅเบดเบเบฒเบ™เปเบฅเบฐ push cluster DNS เบเบฑเบšเบฅเบนเบเบ„เป‰เบฒ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบกเบทเปˆเบญเบฅเบนเบเบ„เป‰เบฒเบžเบฐเบเบฒเบเบฒเบกเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ memcached.staging.svc.cluster.local, เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเป„เบ›เบซเบฒ DNS cluster เปเบฅเบฐเปƒเบ™เบเบฒเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบขเบนเปˆเบ‚เบญเบ‡เบšเปเบฅเบดเบเบฒเบ™เบ™เบตเป‰เบˆเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบšเปเบฅเบดเบเบฒเบ™ cluster เบซเบผเบทเบ—เบตเปˆเบขเบนเปˆ pod.

เบžเบงเบเป€เบฎเบปเบฒเบเบณเบ™เบปเบ”เบ„เปˆเบฒเบเบธเปˆเบก K8s เป‚เบ”เบเปƒเบŠเป‰ kubeadm, เบšเปˆเบญเบ™เบ—เบตเปˆเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบเปˆเบญเบเบšเปเบฅเบดเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบขเบนเปˆ 192.168.0.0/16, เปเบฅเบฐเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบเบฑเบเปเบกเปˆเบ™ 10.244.0.0/16. เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เบ”เบต, เปเบ•เปˆเบกเบตเบชเบญเบ‡เบชเบฒเบกเบˆเบธเบ”:

  • เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบเปˆเบญเบ 192.168.*.* เบกเบฑเบเบˆเบฐเปƒเบŠเป‰เปƒเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบซเป‰เบญเบ‡เบเบฒเบ™เบฅเบนเบเบ„เป‰เบฒ, เปเบฅเบฐเบซเบผเบฒเบเบเบงเปˆเบฒเบ™เบฑเป‰เบ™เบกเบฑเบเบˆเบฐเบขเบนเปˆเปƒเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบšเป‰เบฒเบ™เบ‚เบญเบ‡เบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒ. เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบ„เบงเบฒเบกเบ‚เบฑเบ”เปเบเป‰เบ‡: เป€เบฃเบปเบฒเป€เบ•เบตเปƒเบ™เป€เบฎเบทเบญเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบเปˆเบญเบเบ™เบตเป‰เปเบฅเบฐ VPN เบเบนเป‰เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบเปˆเบญเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบˆเบฒเบเบเบธเปˆเบกเป„เบ›เบซเบฒเบฅเบนเบเบ„เป‰เบฒ.
  • เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบซเบผเบฒเบเบเบธเปˆเบก (เบเบฒเบ™เบœเบฐเบฅเบดเบ”, เบ‚เบฑเป‰เบ™เบ•เบญเบ™ เปเบฅเบฐ/เบซเบผเบทเบเบธเปˆเบกเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบซเบผเบฒเบเบเบธเปˆเบก). เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบžเบงเบเบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบกเบต subnets เบ”เบฝเบงเบเบฑเบ™เบชเปเบฒเบฅเบฑเบš pods เปเบฅเบฐเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™, เป€เบŠเบดเปˆเบ‡เบชเป‰เบฒเบ‡เบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบžเป‰เบญเบกเป†เบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปƒเบ™เบซเบผเบฒเบเป†เบเบธเปˆเบก.

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบฎเบญเบ‡เป€เบญเบปเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ subnets เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เปเบฅเบฐ pods เบžเบฒเบเปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ”เบฝเบงเบเบฑเบ™ - เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เป€เบžเบทเปˆเบญเปƒเบซเป‰เบเบธเปˆเบกเบ—เบฑเบ‡เบซเบกเบปเบ”เบกเบตเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบตเบˆเปเบฒเบ™เบงเบ™เบซเบฅเบฒเบเบ‚เบญเบ‡เบเบธเปˆเบกเบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบ—เบตเปˆเบ‚เป‰เบญเบเบšเปเปˆเบขเบฒเบเบˆเบฐเบกเป‰เบงเบ™เบˆเบฒเบเบˆเบธเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบเป‰เบญเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบซเบผเบฒเบ, เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ‚เบญเบ‡เบฅเบฑเบ”, เปเบฅเบฐเบญเบทเปˆเบ™เป†.

เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ–เบฒเบกเบ•เบปเบงเป€เบญเบ‡เบงเปˆเบฒ: เบงเบดเบ—เบตเบเบฒเบ™เบ›เปˆเบฝเบ™ subnet เปƒเบ™ cluster เบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง?

เบ„เบปเป‰เบ™เบซเบฒเบเบฒเบ™เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆ

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เปƒเบซเบกเปˆ เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ” เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบกเบตเบ›เบฐเป€เบžเบ” ClusterIP. เป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เบชเบฒเบกเบฒเบ”เปƒเบซเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ เปเบฅเบฐเบ™เบตเป‰:

เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบกเบตเบšเบฑเบ™เบซเบฒ: เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, เบเบฑเบเบˆเบฐเบกเบฒเบเบฑเบš IP เป€เบเบปเปˆเบฒเป€เบ›เบฑเบ™ DNS nameserver เปƒเบ™ /etc/resolv.conf.
เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ‚เป‰เบญเบเบเบฑเบ‡เบšเปเปˆเบžเบปเบšเบ—เบฒเบ‡เบญเบญเบ, เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบ•เบฑเป‰เบ‡เบเบธเปˆเบกเบ—เบฑเบ‡เปเบปเบ”เบ”เป‰เบงเบ kubeadm reset เปเบฅเบฐ init เบกเบฑเบ™เบญเบตเบเบ„เบฑเป‰เบ‡.

เปเบ•เปˆเบ™เบตเป‰เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบชเปเบฒเบฅเบฑเบšเบ—เบธเบเบ„เบปเบ™ ... เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เปเบ™เบฐเบ™เปเบฒเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบชเปเบฒเบฅเบฑเบšเบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ:

  • Flannel เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰;
  • เบกเบตเบเบธเปˆเบกเบ—เบฑเบ‡เบขเบนเปˆเปƒเบ™เบ„เบฅเบฒเบง เปเบฅเบฐเปƒเบ™เบฎเบฒเบ”เปเบง;
  • เบ‚เป‰เบญเบเบขเบฒเบเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เบ™เบณเปƒเบŠเป‰เบšเปเบฅเบดเบเบฒเบ™เบ—เบฑเบ‡เปเบปเบ”เปƒเบ™เบเบธเปˆเบกเบ„เบทเบ™เปƒเปเปˆ;
  • เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เปเบฅเป‰เบงเบกเบตเบ„เบงเบฒเบกเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบกเบตเบˆเปเบฒเบ™เบงเบ™เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒ;
  • เบฅเบธเป‰เบ™ Kubernetes เปเบกเปˆเบ™ 1.16.6 (เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปเปˆเป„เบ›เบˆเบฐเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบฅเบธเป‰เบ™เบญเบทเปˆเบ™เป†);
  • เบงเบฝเบเบ‡เบฒเบ™เบ•เบปเป‰เบ™เบ•เปเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบขเบนเปˆเปƒเบ™เบเบธเปˆเบกเบ—เบตเปˆเบ™เปเบฒเปƒเบŠเป‰ kubeadm เบเบฑเบšเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบเปˆเบญเบเบšเปเบฅเบดเบเบฒเบ™ 192.168.0.0/16, เปเบ—เบ™เบ—เบตเปˆเบ”เป‰เบงเบ 172.24.0.0/16.

เปเบฅเบฐเบกเบฑเบ™เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบซเบผเบฒเบเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบชเบปเบ™เปƒเบˆเบขเบฒเบเป€เบซเบฑเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบขเบนเปˆเปƒเบ™ Kubernetes เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™ etcd, เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบเบฑเบšเบกเบฑเบ™ ... เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เบงเปˆเบฒ: "เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบ›เบฑเบšเบ›เบธเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™ etcd, เปเบ—เบ™เบ—เบตเปˆเบ—เบตเปˆเบขเบนเปˆ IP เป€เบเบปเปˆเบฒ (subnet) เบ”เป‰เบงเบเบญเบฑเบ™เปƒเบซเบกเปˆ? ยป

เบกเบตเบเบฒเบ™เบ„เบปเป‰เบ™เบซเบฒเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบเบฝเบกเบžเป‰เบญเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปƒเบ™ etcd, เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบžเบปเบšเบชเบดเปˆเบ‡เบ—เบตเปˆเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™. (เป‚เบ”เบเบงเบดเบ—เบตเบ—เบฒเบ‡เบเบฒเบ™, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบฎเบนเป‰เบเปˆเบฝเบงเบเบฑเบšเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เปƒเบ”เป†เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เป‚เบ”เบเบเบปเบ‡เปƒเบ™ etcd, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบŠเบทเปˆเบ™เบŠเบปเบกเบเบฑเบšเบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ.) เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบˆเบธเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบ”เบตเปเบกเปˆเบ™ เปเบฅเบฐ เบญเบทเปˆเบ™เป† เบˆเบฒเบ OpenShift (เบ‚เปโ€‹เบ‚เบญเบšโ€‹เปƒเบˆโ€‹เบœเบนเป‰โ€‹เบ‚เบฝเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹!).

เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš etcd เป‚เบ”เบเปƒเบŠเป‰เปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เปเบฅเบฐเบญเปˆเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบ™เบฑเป‰เบ™เป‚เบ”เบเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ ls, get, dump.

เป€เบžเบตเปˆเบก etcdhelper

เบ„เบงเบฒเบกเบ„เบดเบ”เบ•เปเปˆเป„เบ›เปเบกเปˆเบ™เบกเบตเป€เบซเบ”เบœเบปเบ™: "เปเบกเปˆเบ™เบซเบเบฑเบ‡เบ—เบตเปˆเบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เป€เบˆเบปเป‰เบฒเบˆเบฒเบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเป‚เบซเบเบ”เบ™เบตเป‰เป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ‚เบฝเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบชเปˆ etcd?"

เบกเบฑเบ™เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบชเบฐเบšเบฑเบšเบ”เบฑเบ”เปเบเป‰เบ‚เบญเบ‡ etcdhelper เบ”เป‰เบงเบเบชเบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเปƒเบซเบกเปˆ changeServiceCIDR ะธ changePodCIDR. เบชเบธเบ”เบ‚เบญเบ‡เบ™เบฒเบ‡ เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เบฅเบฐเบซเบฑเบ” เบ—เบตเปˆเบ™เบตเป‰.

เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเปเปˆเป€เบฎเบฑเบ”เบซเบเบฑเบ‡เปเบ”เปˆ? เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆ changeServiceCIDR:

  • เบชเป‰เบฒเบ‡ deserializer เป€เบ›เบฑเบ™;
  • เบฅเบงเบšเบฅเบงเบกเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ›เบปเบเบเบฐเบ•เบดเป€เบžเบทเปˆเบญเบ—เบปเบ”เปเบ—เบ™ CIDR;
  • เบžเบงเบเป€เบฎเบปเบฒเบœเปˆเบฒเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบกเบตเบ›เบฐเป€เบžเบ” ClusterIP เปƒเบ™เบเบธเปˆเบก:
    • เบ–เบญเบ”เบฅเบฐเบซเบฑเบ”เบ„เปˆเบฒเบˆเบฒเบ etcd เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบงเบฑเบ”เบ–เบธ Go;
    • เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเบ›เบปเบเบเบฐเบ•เบดเบžเบงเบเป€เบฎเบปเบฒเปเบ—เบ™เบชเบญเบ‡ bytes เบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบ—เบตเปˆเบขเบนเปˆ;
    • เบกเบญเบšเปเบฒเบเปƒเบซเป‰เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบขเบนเปˆ IP เบˆเบฒเบเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบเปˆเบญเบเปƒเปเปˆ;
    • เบชเป‰เบฒเบ‡ serializer, เบ›เปˆเบฝเบ™เบงเบฑเบ”เบ–เบธ Go เป€เบ›เบฑเบ™ protobuf, เบ‚เบฝเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบซเบกเปˆเป€เบ›เบฑเบ™ etcd.

เบเบฒเบ™เบ—เปเบฒเบ‡เบฒเบ™เบ‚เบญเบ‡ changePodCIDR เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™ changeServiceCIDR - เบžเบฝเบ‡เปเบ•เปˆเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเปเบเป‰เป„เบ‚เบ‚เปเป‰เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบกเบฑเบ™เบชเปเบฒเบฅเบฑเบš node เปเบฅเบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ .spec.PodCIDR เบเบฑเบšเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบเปˆเบญเบเปƒเบซเบกเปˆ.

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”

เบ›เปˆเบฝเบ™เบšเปเบฅเบดเบเบฒเบ™ CIDR

เปเบœเบ™เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบงเบฝเบเบ‡เบฒเบ™เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบเบซเบผเบฒเบ, เปเบ•เปˆเบกเบฑเบ™เบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบขเบธเบ”เป€เบงเบฅเบฒเปƒเบ™เป€เบงเบฅเบฒเบ‚เบญเบ‡เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฑเบเบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบเบธเปˆเบก. เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบญเบฐเบ—เบดเบšเบฒเบเบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ•เป, เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบˆเบฐเปเบšเปˆเบ‡เบ›เบฑเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™, เปƒเบ™เบ—เบฒเบ‡เบ—เบดเบ”เบชเบฐเบ”เบต, เบเบฒเบ™เบขเบธเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบซเบผเบธเบ”เบœเปˆเบญเบ™เบฅเบปเบ‡เป„เบ”เป‰.

เบ‚เบฑเป‰เบ™โ€‹เบ•เบญเบ™โ€‹เบเบฒเบ™โ€‹เบเบฐโ€‹เบเบฝเบกโ€‹:

  • เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบŠเบญเบšเปเบงเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เปเบฅเบฐเบเบฒเบ™เบ›เบฐเบเบญเบš etcdhelper patched;
  • backup etcd เปเบฅเบฐ /etc/kubernetes.

เปเบœเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบชเบฑเป‰เบ™เป†เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™CIDR:

  • เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ apiserver เปเบฅเบฐ controller-manager manifests;
  • เบเบฒเบ™เบญเบญเบเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™;
  • เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ ClusterIP เปƒเบ™ etcd;
  • เบฃเบตเบชเบฐเบ•เบฒเบ”เบ‚เบญเบ‡เบเบฑเบเบ—เบฑเบ‡เปเบปเบ”เปƒเบ™เบเบธเปˆเบก.

เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบฅเปเบฒโ€‹เบ”เบฑเบšโ€‹เบ—เบตเปˆโ€‹เบชเบปเบกโ€‹เบšเบนเบ™โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เปƒเบ™โ€‹เบฅเบฐโ€‹เบญเบฝเบ”โ€‹.

1. เบ•เบดเบ”เบ•เบฑเป‰เบ‡ etcd-client เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ dump เบ‚เปเป‰เบกเบนเบ™:

apt install etcd-client

2. เบชเป‰เบฒเบ‡ เปเบฅเบฐ เบญเบทเปˆเบ™เป†:

  • เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡ golangโ€‹:
    GOPATH=/root/golang
    mkdir -p $GOPATH/local
    curl -sSL https://dl.google.com/go/go1.14.1.linux-amd64.tar.gz | tar -xzvC $GOPATH/local
    echo "export GOPATH="$GOPATH"" >> ~/.bashrc
    echo 'export GOROOT="$GOPATH/local/go"' >> ~/.bashrc
    echo 'export PATH="$PATH:$GOPATH/local/go/bin"' >> ~/.bashrc
  • เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบซเบเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเป€เบฎเบปเบฒเป€เบญเบ‡ etcdhelper.go, เบ”เบฒเบงเป‚เบซเบผเบ”เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช, เป€เบเบฑเบšเบเปเบฒ:
    wget https://raw.githubusercontent.com/flant/examples/master/2020/04-etcdhelper/etcdhelper.go
    go get go.etcd.io/etcd/clientv3 k8s.io/kubectl/pkg/scheme k8s.io/apimachinery/pkg/runtime
    go build -o etcdhelper etcdhelper.go

3. เป€เบฎเบฑเบ” backup etcd:

backup_dir=/root/backup
mkdir ${backup_dir}
cp -rL /etc/kubernetes ${backup_dir}
ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --key=/etc/kubernetes/pki/etcd/server.key --cert=/etc/kubernetes/pki/etcd/server.crt --endpoints https://192.168.199.100:2379 snapshot save ${backup_dir}/etcd.snapshot

4. เบ›เปˆเบฝเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบเปˆเบญเบเบšเปเบฅเบดเบเบฒเบ™เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ„เบงเบšเบ„เบธเบก Kubernetes manifests. เปƒเบ™เป„เบŸเบฅเปŒ /etc/kubernetes/manifests/kube-apiserver.yaml ะธ /etc/kubernetes/manifests/kube-controller-manager.yaml เบ›เปˆเบฝเบ™เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต --service-cluster-ip-range เป„เบ›เบซเบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบเปˆเบญเบเปƒเปเปˆ: 172.24.0.0/16 เปเบ—เบ™เบ—เบตเปˆเบˆเบฐ 192.168.0.0/16.

5. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เบ›เปˆเบฝเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบเบเปˆเบญเบเบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆ kubeadm เบญเบญเบเปƒเบšเบขเบฑเป‰เบ‡เบขเบทเบ™เบชเปเบฒเบฅเบฑเบš apiserver (เบฅเบงเบกเบ—เบฑเบ‡), เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบญเบญเบเปƒเบซเบกเปˆ:

  1. เปƒเบซเป‰เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเป‚เบ”เป€เบกเบ™ เปเบฅเบฐเบ—เบตเปˆเบขเบนเปˆ IP เปƒเบ”เบ—เบตเปˆเปƒเบšเบฎเบฑเบšเบฎเบญเบ‡เบ›เบฐเบˆเบธเบšเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบญเบญเบเปƒเบซเป‰:
    openssl x509 -noout -ext subjectAltName </etc/kubernetes/pki/apiserver.crt
    X509v3 Subject Alternative Name:
        DNS:dev-1-master, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster.local, DNS:apiserver, IP Address:192.168.0.1, IP Address:10.0.0.163, IP Address:192.168.199.100
  2. เปƒเบซเป‰เบเบฐเบเบฝเบก config เบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบš kubeadm:
    cat kubeadm-config.yaml
    apiVersion: kubeadm.k8s.io/v1beta1
    kind: ClusterConfiguration
    networking:
      podSubnet: "10.244.0.0/16"
      serviceSubnet: "172.24.0.0/16"
    apiServer:
      certSANs:
      - "192.168.199.100" # IP-ะฐะดั€ะตั ะผะฐัั‚ะตั€ ัƒะทะปะฐ
  3. เปƒเบซเป‰เบฅเบถเบš crt เปเบฅเบฐเบฅเบฐเบซเบฑเบ”เป€เบเบปเปˆเบฒ, เป€เบžเบฒเบฐเบงเปˆเบฒเบ–เป‰เบฒเบšเปเปˆเบกเบตเปƒเบšเบฎเบฑเบšเบฎเบญเบ‡เปƒเบซเบกเปˆเบˆเบฐเบšเปเปˆเบ–เบทเบเบญเบญเบ:
    rm /etc/kubernetes/pki/apiserver.{key,crt}
  4. เบกเบฒเบญเบญเบเปƒเบšเบฎเบฑเบšเบฎเบญเบ‡เปƒเปเปˆเบชเบณเบฅเบฑเบšเป€เบŠเบตเบšเป€เบงเบต API:
    kubeadm init phase certs apiserver --config=kubeadm-config.yaml
  5. เปƒเบซเป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒเปƒเบšเบฎเบฑเบšเบฎเบญเบ‡เป„เบ”เป‰เบ–เบทเบเบญเบญเบเปƒเบซเป‰เบชเปเบฒเบฅเบฑเบš subnet เปƒเบซเบกเปˆ:
    openssl x509 -noout -ext subjectAltName </etc/kubernetes/pki/apiserver.crt
    X509v3 Subject Alternative Name:
        DNS:kube-2-master, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster.local, IP Address:172.24.0.1, IP Address:10.0.0.163, IP Address:192.168.199.100
  6. เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบญเบญเบโ€‹เปƒเบšโ€‹เบขเบฑเป‰เบ‡โ€‹เบขเบทเบ™โ€‹เป€เบ„เบทเปˆเบญเบ‡โ€‹เปเบกเปˆโ€‹เบ‚เปˆเบฒเบ API เบ„เบทเบ™โ€‹เปƒเบซเบกเปˆโ€‹, restart container เบ‚เบญเบ‡โ€‹เบ•เบปเบ™โ€‹:
    docker ps | grep k8s_kube-apiserver | awk '{print $1}' | xargs docker restart
  7. เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡ config เบชเปเบฒเบฅเบฑเบš admin.conf:
    kubeadm alpha certs renew admin.conf
  8. เบกเบฒเปเบเป‰เป„เบ‚เบ‚เปเป‰เบกเบนเบ™เปƒเบ™ etcd:
    ./etcdhelper -cacert /etc/kubernetes/pki/etcd/ca.crt -cert /etc/kubernetes/pki/etcd/server.crt -key /etc/kubernetes/pki/etcd/server.key -endpoint https://127.0.0.1:2379 change-service-cidr 172.24.0.0/16 

    เบฅเบฐโ€‹เบกเบฑเบ”โ€‹เบฅเบฐโ€‹เบงเบฑเบ‡ เปƒเบ™เป€เบงเบฅเบฒเบ™เบตเป‰, เบเบฒเบ™เปเบเป‰เป„เบ‚เป‚เบ”เป€เบกเบ™เบขเบธเบ”เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบเบธเปˆเบก, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบขเบนเปˆเปƒเบ™เบเบฑเบเบ—เบตเปˆเบกเบตเบขเบนเปˆ /etc/resolv.conf เบ—เบตเปˆเบขเบนเปˆ CoreDNS เป€เบเบปเปˆเบฒ (kube-dns) เบ–เบทเบเบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™, เปเบฅเบฐ kube-proxy เบ›เปˆเบฝเบ™เบเบปเบ”เบฅเบฐเบšเบฝเบš iptables เบˆเบฒเบ subnet เป€เบเบปเปˆเบฒเป„เบ›เบซเบฒเบญเบฑเบ™เปƒเบซเบกเปˆ. เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบกเบฑเบ™เบ–เบทเบเบ‚เบฝเบ™เบเปˆเบฝเบงเบเบฑเบšเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เป€เบงเบฅเบฒเบขเบธเบ”เป€เบฎเบฑเบ”เบงเบฝเบ.

  9. เปƒเบซเป‰เปเบเป‰เป„เบ‚ ConfigMap เปƒเบ™ namespace kube-system:
    kubectl -n kube-system edit cm kubelet-config-1.16

    - เปเบ—เบ™โ€‹เบ—เบตเปˆโ€‹เบ™เบตเป‰โ€‹ clusterDNS เป„เบ›เบซเบฒเบ—เบตเปˆเบขเบนเปˆ IP เปƒเบซเบกเปˆเบ‚เบญเบ‡เบšเปเบฅเบดเบเบฒเบ™ kube-dns: kubectl -n kube-system get svc kube-dns.

    kubectl -n kube-system edit cm kubeadm-config

    - เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เบกเบฑเบ™โ€‹ data.ClusterConfiguration.networking.serviceSubnet เบเบฑเบšเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบเปˆเบญเบเปƒเบซเบกเปˆ.

  10. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ—เบตเปˆเบขเบนเปˆ kube-dns เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡, เบกเบฑเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ›เบฑเบšเบ›เบธเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ kubelet เปƒเบ™เบ—เบธเบ nodes:
    kubeadm upgrade node phase kubelet-config && systemctl restart kubelet
  11. เบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบฃเบตเบชเบฐเบ•เบฒเบ”เบžเบญเบ”เบ—เบฑเบ‡เปเบปเบ”เปƒเบ™เบเบธเปˆเบก:
    kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(S+)s+(S+).*/kubectl --namespace 1 delete pod 2/e'

เบซเบผเบธเบ”เป€เบงเบฅเบฒเบขเบธเบ”เป€เบฎเบฑเบ”เบงเบฝเบ

เบ„เบงเบฒเบกโ€‹เบ„เบดเบ”โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบงเบดโ€‹เบ—เบตโ€‹เบเบฒเบ™โ€‹เบซเบผเบธเบ”โ€‹เบœเปˆเบญเบ™โ€‹เบเบฒเบ™โ€‹เบขเบธเบ”โ€‹เป€เบŠเบปเบฒโ€‹เบเบฒเบ™โ€‹:

  1. เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบปเบ™เบ„เบงเบšเบ„เบธเบก manifests, เบชเป‰เบฒเบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ kube-dns เปƒเบซเบกเปˆ, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบกเบตเบŠเบทเปˆ kube-dns-tmp เปเบฅเบฐเบ—เบตเปˆเบขเบนเปˆเปƒเปเปˆ 172.24.0.10.
  2. เป€เบฎเบฑเบ”เปƒเบซเป‰ if เปƒเบ™ etcdhelper, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบšเปเปˆเบ”เบฑเบ”เปเบ›เบ‡เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ kube-dns.
  3. เบ—เบปเบ”เปเบ—เบ™เบ—เบตเปˆเบขเบนเปˆเปƒเบ™ kubelets เบ—เบฑเบ‡เบซเบกเบปเบ” ClusterDNS เบเบฑเบšเบญเบฑเบ™เปƒเบซเบกเปˆ, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป€เบเบปเปˆเบฒเบˆเบฐเบชเบทเบšเบ•เปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบžเป‰เบญเบกเป†เบเบฑเบ™เบเบฑเบšเบญเบฑเบ™เปƒเบซเบกเปˆ.
  4. เบฅเปเบ–เป‰เบฒเบˆเบปเบ™เบเปˆเบงเบฒเบเบฑเบเบ—เบตเปˆเบกเบตเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบกเป‰เบงเบ™เบœเปˆเบฒเบ™เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบ—เปเบฒเบกเบฐเบŠเบฒเบ”เบซเบผเบทเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ•เบปเบเบฅเบปเบ‡.
  5. เบฅเบถเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ kube-dns-tmp เปเบฅเบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ serviceSubnetCIDR เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ kube-dns.

เปเบœเบ™เบเบฒเบ™เบ™เบตเป‰เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เป€เบงเบฅเบฒเบขเบธเบ”เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบซเป‰เปœเป‰เบญเบเบชเบธเบ”เป€เบ›เบฑเบ™ ~ เบ™เบฒเบ—เบต - เบชเปเบฒเบฅเบฑเบšเป„เบฅเบเบฐเป€เบงเบฅเบฒเบ‚เบญเบ‡เบเบฒเบ™เบเปเบฒเบˆเบฑเบ”เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ kube-dns-tmp เปเบฅเบฐเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ subnet เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™ kube-dns.

เบเบฒเบ™โ€‹เบ”เบฑเบ”โ€‹เปเบเป‰ podNetworkโ€‹

เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ”เบฑเบ”เปเบ›เบ‡ podNetwork เป‚เบ”เบเปƒเบŠเป‰ etcdhelper เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš. เบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เปเบกเปˆเบ™เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เบเบฒเบ™เปเบเป‰เป„เบ‚ configs เปƒเบ™ kube-system;
  • เปเบเป‰เป„เบ‚ manifest kube-controller-manager;
  • เบ›เปˆเบฝเบ™ podCIDR เป‚เบ”เบเบเบปเบ‡เปƒเบ™ etcd;
  • reboot nodes cluster เบ—เบฑเบ‡เปเบปเบ”.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰:

1. เปเบเป‰เป„เบ‚ ConfigMap เปƒเบ™ namespace kube-system:

kubectl -n kube-system edit cm kubeadm-config

- เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹ data.ClusterConfiguration.networking.podSubnet เบเบฑเบšเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบเปˆเบญเบเปƒเบซเบกเปˆ 10.55.0.0/16.

kubectl -n kube-system edit cm kube-proxy

- เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹ data.config.conf.clusterCIDR: 10.55.0.0/16.

2. เปเบเป‰เป„เบ‚ manifest เบ‚เบญเบ‡เบœเบนเป‰เบ„เบงเบšเบ„เบธเบก-เบœเบนเป‰เบˆเบฑเบ”เบเบฒเบ™:

vim /etc/kubernetes/manifests/kube-controller-manager.yaml

- เบเบฒเบ™โ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹ --cluster-cidr=10.55.0.0/16.

3. เป€เบšเบดเปˆเบ‡เบ„เปˆเบฒเบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ .spec.podCIDR, .spec.podCIDRs, .InternalIP, .status.addresses เบชเปเบฒเบฅเบฑเบšเบ—เบธเบ nodes cluster:

kubectl get no -o json | jq '[.items[] | {"name": .metadata.name, "podCIDR": .spec.podCIDR, "podCIDRs": .spec.podCIDRs, "InternalIP": (.status.addresses[] | select(.type == "InternalIP") | .address)}]'

[
  {
    "name": "kube-2-master",
    "podCIDR": "10.244.0.0/24",
    "podCIDRs": [
      "10.244.0.0/24"
    ],
    "InternalIP": "192.168.199.2"
  },
  {
    "name": "kube-2-master",
    "podCIDR": "10.244.0.0/24",
    "podCIDRs": [
      "10.244.0.0/24"
    ],
    "InternalIP": "10.0.1.239"
  },
  {
    "name": "kube-2-worker-01f438cf-579f9fd987-5l657",
    "podCIDR": "10.244.1.0/24",
    "podCIDRs": [
      "10.244.1.0/24"
    ],
    "InternalIP": "192.168.199.222"
  },
  {
    "name": "kube-2-worker-01f438cf-579f9fd987-5l657",
    "podCIDR": "10.244.1.0/24",
    "podCIDRs": [
      "10.244.1.0/24"
    ],
    "InternalIP": "10.0.4.73"
  }
]

4. เปเบ—เบ™เบ—เบตเปˆ podCIDR เป‚เบ”เบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป‚เบ”เบเบเบปเบ‡เบเบฑเบš etcd:

./etcdhelper -cacert /etc/kubernetes/pki/etcd/ca.crt -cert /etc/kubernetes/pki/etcd/server.crt -key /etc/kubernetes/pki/etcd/server.key -endpoint https://127.0.0.1:2379 change-pod-cidr 10.55.0.0/16

5. เปƒเบซเป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡เบงเปˆเบฒ podCIDR เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปเบ—เป‰เป†:

kubectl get no -o json | jq '[.items[] | {"name": .metadata.name, "podCIDR": .spec.podCIDR, "podCIDRs": .spec.podCIDRs, "InternalIP": (.status.addresses[] | select(.type == "InternalIP") | .address)}]'

[
  {
    "name": "kube-2-master",
    "podCIDR": "10.55.0.0/24",
    "podCIDRs": [
      "10.55.0.0/24"
    ],
    "InternalIP": "192.168.199.2"
  },
  {
    "name": "kube-2-master",
    "podCIDR": "10.55.0.0/24",
    "podCIDRs": [
      "10.55.0.0/24"
    ],
    "InternalIP": "10.0.1.239"
  },
  {
    "name": "kube-2-worker-01f438cf-579f9fd987-5l657",
    "podCIDR": "10.55.1.0/24",
    "podCIDRs": [
      "10.55.1.0/24"
    ],
    "InternalIP": "192.168.199.222"
  },
  {
    "name": "kube-2-worker-01f438cf-579f9fd987-5l657",
    "podCIDR": "10.55.1.0/24",
    "podCIDRs": [
      "10.55.1.0/24"
    ],
    "InternalIP": "10.0.4.73"
  }
]

6. เปƒเบซเป‰ reboot nodes cluster เบ—เบฑเบ‡เปเบปเบ”เป€เบ—เบทเปˆเบญเบฅเบฐเบญเบฑเบ™.

7. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบญเบญเบเบˆเบฒเบเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบซเบ™เบถเปˆเบ‡ node podCIDR เป€เบเบปเปˆเบฒ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ kube-controller-manager เบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป„เบ”เป‰, เปเบฅเบฐ pods เปƒเบ™ cluster เบˆเบฐเบšเปเปˆเบ–เบทเบเบเปเบฒเบ™เบปเบ”.

เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡ podCIDR เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบ‡เปˆเบฒเบเบเบงเปˆเบฒ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบชเบฐเบ™เบฑเป‰เบ™). เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบฎเบฝเบ™เบฎเบนเป‰เบงเบดเบ—เบตเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš etcd เป‚เบ”เบเบเบปเบ‡, เป€เบžเบฒเบฐเบงเปˆเบฒเบกเบตเบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเปเบเป‰เป„เบ‚เบงเบฑเบ”เบ–เบธ Kubernetes เปƒเบ™ etcd - เบ”เบฝเบง เบ•เบปเบงเปเบ›เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰. (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ—เปˆเบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบžเบฝเบ‡เปเบ•เปˆเบ›เปˆเบฝเบ™เบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบขเบธเบ”เป€เบงเบฅเบฒ spec.clusterIP.)

เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš

เบšเบปเบ”เบ„เบงเบฒเบกเบชเบปเบ™เบ—เบฐเบ™เบฒเบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เปƒเบ™ etcd เป‚เบ”เบเบเบปเบ‡, i.e. เบ‚เป‰เบฒเบก Kubernetes API. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เป€เบฎเบฑเบ” "เบชเบดเปˆเบ‡เบ—เบตเปˆเบซเบเบธเป‰เบ‡เบเบฒเบ". เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบตเปˆเปƒเบซเป‰เบขเบนเปˆเปƒเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบขเบนเปˆเปƒเบ™เบเบธเปˆเบก K8s เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบชเบฐเบ–เบฒเบ™เบฐเบžเบฒเบšเบ„เบงเบฒเบกเบžเป‰เบญเบกเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบขเปˆเบฒเบ‡เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡เปเบกเปˆเบ™ PoC (เบซเบผเบฑเบเบ–เบฒเบ™เบชเบฐเปเบ”เบ‡เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”). เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบŠเป‰เบชเบฐเบšเบฑเบšเบ”เบฑเบ”เปเบเป‰เบ‚เบญเบ‡ utility etcdhelper เปƒเบ™เบเบธเปˆเบกเบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เปƒเบซเป‰เป€เบฎเบฑเบ”เปเบ™เบงเบ™เบฑเป‰เบ™เบ”เป‰เบงเบเบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡.

PS

เบญเปˆเบฒเบ™เบเบฑเบ‡เบขเบนเปˆเปƒเบ™ blog เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ:

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™