เชธเซ€เชงเซ‹ etcd เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ‹ เช…เชฎเชพเชฐเซ‹ เช…เชจเซเชญเชต (K8s API เชตเชฟเชจเชพ)

เชตเชงเซเชจเซ‡ เชตเชงเซ, เช•เซเชฒเชพเชฏเชจเซเชŸเซเชธ เช…เชฎเชจเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชจเซ€ เช…เช‚เชฆเชฐ เชธเซ‡เชตเชพเช“เชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเช•เซเชทเชฎ เชฅเชตเชพ เชฎเชพเชŸเซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐเชจเซ€ เชเช•เซเชธเซ‡เชธ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เชนเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡: เช•เซ‡เชŸเชฒเชพเช• เชกเซ‡เชŸเชพเชฌเซ‡เช เช…เชฅเชตเชพ เชธเซ‡เชตเชพ เชธเชพเชฅเซ‡ เชธเซ€เชงเชพ เชœ เช•เชจเซ‡เช•เซเชŸ เชฅเชตเชพ เชฎเชพเชŸเซ‡, เช•เซเชฒเชธเซเชŸเชฐเชจเซ€ เช…เช‚เชฆเชฐเชจเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹ เชธเชพเชฅเซ‡ เชธเซเชฅเชพเชจเชฟเช• เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชจเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡...

เชธเซ€เชงเซ‹ etcd เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ‹ เช…เชฎเชพเชฐเซ‹ เช…เชจเซเชญเชต (K8s API เชตเชฟเชจเชพ)

เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเชฎเชพเชฐเชพ เชธเซเชฅเชพเชจเชฟเช• เชฎเชถเซ€เชจเชฅเซ€ เชธเซ‡เชตเชพ เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เชฅเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ memcached.staging.svc.cluster.local. เช…เชฎเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชจเซ€ เช…เช‚เชฆเชฐ VPN เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช† เช•เซเชทเชฎเชคเชพ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ€เช เช›เซ€เช เชœเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เช•เซเชฒเชพเชฏเช‚เชŸ เชœเซ‹เชกเชพเชฏ เช›เซ‡. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เช•เซเชฒเชพเชฏเชจเซเชŸเชจเซ‡ เชชเซ‹เชกเซเชธ, เชธเซ‡เชตเชพเช“ เช…เชจเซ‡ เชชเซเชถ เช•เซเชฒเชธเซเชŸเชฐ DNSเชจเชพ เชธเชฌเชจเซ‡เชŸเชจเซ€ เชœเชพเชนเซ‡เชฐเชพเชค เช•เชฐเซ€เช เช›เซ€เช. เช†เชฎ, เชœเซเชฏเชพเชฐเซ‡ เช•เซ‹เชˆ เช•เซเชฒเชพเชฏเช‚เชŸ เชธเซ‡เชตเชพ เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‡ เช›เซ‡ memcached.staging.svc.cluster.local, เชตเชฟเชจเช‚เชคเซ€ เช•เซเชฒเชธเซเชŸเชฐ DNS เชชเชฐ เชœเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชœเชตเชพเชฌเชฎเชพเช‚ เช•เซเชฒเชธเซเชŸเชฐ เชธเซ‡เชตเชพ เชจเซ‡เชŸเชตเชฐเซเช• เช…เชฅเชตเชพ เชชเซ‹เชก เชธเชฐเชจเชพเชฎเชพเช‚เชฎเชพเช‚เชฅเซ€ เช† เชธเซ‡เชตเชพเชจเซเช‚ เชธเชฐเชจเชพเชฎเซเช‚ เชฎเซ‡เชณเชตเซ‡ เช›เซ‡.

เช…เชฎเซ‡ kubeadm เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ K8s เช•เซเชฒเชธเซเชŸเชฐเซ‹เชจเซ‡ เช—เซ‹เช เชตเซ€เช เช›เซ€เช, เชœเซเชฏเชพเช‚ เชกเชฟเชซเซ‹เชฒเซเชŸ เชธเชฐเซเชตเชฟเชธ เชธเชฌเชจเซ‡เชŸ เช›เซ‡ 192.168.0.0/16, เช…เชจเซ‡ เชถเซ€เช‚เช—เซ‹เชจเซเช‚ เชจเซ‡เชŸเชตเชฐเซเช• เช›เซ‡ 10.244.0.0/16. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชฌเชงเซเช‚ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซเชฏเชพเช‚ เช•เซ‡เชŸเชฒเชพเช• เชฎเซเชฆเซเชฆเชพเช“ เช›เซ‡:

  • เชธเชฌเชจเซ‡เชŸ 192.168.*.* เช˜เชฃเซ€เชตเชพเชฐ เช•เซเชฒเชพเชฏเช‚เชŸ เช‘เชซเชฟเชธ เชจเซ‡เชŸเชตเชฐเซเช•เชฎเชพเช‚ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชฏ เช›เซ‡, เช…เชจเซ‡ เชตเชงเซ เชตเช–เชค เชกเซ‡เชตเชฒเชชเชฐ เชนเซ‹เชฎ เชจเซ‡เชŸเชตเชฐเซเช•เซเชธเชฎเชพเช‚. เช…เชจเซ‡ เชชเช›เซ€ เช†เชชเชฃเชจเซ‡ เชคเช•เชฐเชพเชฐ เชฎเชณเซ‡ เช›เซ‡: เชนเซ‹เชฎ เชฐเชพเช‰เชŸเชฐเซเชธ เช† เชธเชฌเชจเซ‡เชŸ เชชเชฐ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ VPN เช† เชธเชฌเชจเซ‡เชŸเชจเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚เชฅเซ€ เช•เซเชฒเชพเชฏเชจเซเชŸ เชคเชฐเชซ เชงเช•เซ‡เชฒเซ‡ เช›เซ‡.
  • เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช˜เชฃเชพ เช•เซเชฒเชธเซเชŸเชฐเซ‹ เช›เซ‡ (เช‰เชคเซเชชเชพเชฆเชจ, เชธเซเชŸเซ‡เชœ เช…เชจเซ‡/เช…เชฅเชตเชพ เช•เซ‡เชŸเชฒเชพเช• เชกเซ‡เชต เช•เซเชฒเชธเซเชŸเชฐ). เชชเช›เซ€, เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡, เชคเซ‡ เชฌเชงเชพเชฎเชพเช‚ เชชเซ‹เชกเซเชธ เช…เชจเซ‡ เชธเซ‡เชตเชพเช“ เชฎเชพเชŸเซ‡ เชธเชฎเชพเชจ เชธเชฌเชจเซ‡เชŸ เชนเชถเซ‡, เชœเซ‡ เช…เชจเซ‡เช• เช•เซเชฒเชธเซเชŸเชฐเซ‹เชฎเชพเช‚ เชธเซ‡เชตเชพเช“ เชธเชพเชฅเซ‡ เชเช•เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฎเซ‹เชŸเซ€ เชฎเซเชถเซเช•เซ‡เชฒเซ€เช“ เชŠเชญเซ€ เช•เชฐเซ‡ เช›เซ‡.

เช…เชฎเซ‡ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏ เชชเชนเซ‡เชฒเชพ เชเช• เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เชธเซ‡เชตเชพเช“ เช…เชจเซ‡ เชชเซ‹เชกเซเชธ เชฎเชพเชŸเซ‡ เช…เชฒเช—-เช…เชฒเช— เชธเชฌเชจเซ‡เชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชชเซเชฐเชฅเชพ เช…เชชเชจเชพเชตเซ€ เช›เซ‡ - เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชœเซ‡เชฅเซ€ เชคเชฎเชพเชฎ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เช…เชฒเช—-เช…เชฒเช— เชจเซ‡เชŸเชตเชฐเซเช• เชนเซ‹เชฏ. เชœเซ‹ เช•เซ‡, เชคเซเชฏเชพเช‚ เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เช•เซเชฒเชธเซเชŸเชฐเซ‹ เช•เชพเชฐเซเชฏเชฐเชค เช›เซ‡ เชœเซ‡เชจเซ‡ เชนเซเช‚ เชถเชฐเซ‚เช†เชคเชฅเซ€ เชฐเซ‹เชฒ เช“เชตเชฐ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเซ‹ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡เช“ เช˜เชฃเซ€ เชธเซ‡เชตเชพเช“, เชธเซเชŸเซ‡เชŸเชซเซเชฒ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซเชธ เชตเช—เซ‡เชฐเซ‡ เชšเชฒเชพเชตเซ‡ เช›เซ‡.

เช…เชจเซ‡ เชชเช›เซ€ เช…เชฎเซ‡ เช…เชฎเชพเชฐเซ€ เชœเชพเชคเชจเซ‡ เชชเซ‚เช›เซเชฏเซเช‚: เชนเชพเชฒเชจเชพ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชธเชฌเชจเซ‡เชŸ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชฆเชฒเชตเซเช‚?

เชจเชฟเชฐเซเชฃเชฏเซ‹เชจเซ€ เชถเซ‹เชง

เชธเซŒเชฅเซ€ เชธเชพเชฎเชพเชจเซเชฏ เชชเซเชฐเชฅเชพ เชซเชฐเซ€เชฅเซ€ เชฌเชจเชพเชตเชตเชพเชจเซ€ เช›เซ‡ เชฌเชงเชพ เช•เซเชฒเชธเซเชŸเชฐเช†เชˆเชชเซ€ เชชเซเชฐเช•เชพเชฐ เชธเชพเชฅเซ‡ เชธเซ‡เชตเชพเช“. เชตเชฟเช•เชฒเซเชช เชคเชฐเซ€เช•เซ‡, เชธเชฒเชพเชน เช†เชชเซ€ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เช†:

เชจเซ€เชšเซ‡เชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชฎเชพเช‚ เชธเชฎเชธเซเชฏเชพ เช›เซ‡: เชฌเชงเซเช‚ เช—เซ‹เช เชตเซเชฏเชพ เชชเช›เซ€, /etc/resolv.conf เชฎเชพเช‚ DNS เชจเซ‡เชฎเชธเชฐเซเชตเชฐ เชคเชฐเซ€เช•เซ‡ เชชเซ‹เชกเซเชธ เชœเซ‚เชจเชพ IP เชธเชพเชฅเซ‡ เช†เชตเซ‡ เช›เซ‡.
เชฎเชจเซ‡ เชนเชœเซ เชชเชฃ เช‰เช•เซ‡เชฒ เชจ เชฎเชณเซเชฏเซ‹ เชนเซ‹เชตเชพเชฅเซ€, เชฎเชพเชฐเซ‡ kubeadm เชฐเซ€เชธเซ‡เชŸ เชธเชพเชฅเซ‡ เช†เช–เชพ เช•เซเชฒเชธเซเชŸเชฐเชจเซ‡ เชฐเซ€เชธเซ‡เชŸ เช•เชฐเชตเซเช‚ เชชเชกเซเชฏเซเช‚ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชถเชฐเซ‚ เช•เชฐเชตเซเช‚ เชชเชกเซเชฏเซเช‚.

เชชเชฐเช‚เชคเซ เช† เชฆเชฐเซ‡เช• เชฎเชพเชŸเซ‡ เชฏเซ‹เช—เซเชฏ เชจเชฅเซ€... เช…เชฎเชพเชฐเชพ เช•เซ‡เชธ เชฎเชพเชŸเซ‡ เช…เชนเซ€เช‚ เชตเชงเซ เชตเชฟเช—เชคเชตเชพเชฐ เชชเชฐเชฟเชšเชฏ เช›เซ‡:

  • เชซเชฒเซ‡เชจเชฒเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡;
  • เชตเชพเชฆเชณเซ‹เชฎเชพเช‚ เช…เชจเซ‡ เชนเชพเชฐเซเชกเชตเซ‡เชฐ เชฌเช‚เชจเซ‡เชฎเชพเช‚ เช•เซเชฒเชธเซเชŸเชฐเซ‹ เช›เซ‡;
  • เชนเซเช‚ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชคเชฎเชพเชฎ เชธเซ‡เชตเชพเช“เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชœเชฎเชพเชตเชตเชพเชจเซเช‚ เชŸเชพเชณเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚;
  • เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชจเซเชฏเซ‚เชจเชคเชฎ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชธเชฎเชธเซเชฏเชพเช“ เชธเชพเชฅเซ‡ เชฌเชงเซเช‚ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡;
  • Kubernetes เชธเช‚เชธเซเช•เชฐเชฃ 1.16.6 เช›เซ‡ (เชœเซ‹ เช•เซ‡, เช†เช—เชณเชจเชพเช‚ เชชเช—เชฒเชพเช‚ เช…เชจเซเชฏ เชธเช‚เชธเซเช•เชฐเชฃเซ‹ เชฎเชพเชŸเซ‡ เชธเชฎเชพเชจ เชนเชถเซ‡);
  • เชฎเซเช–เซเชฏ เช•เชพเชฐเซเชฏ เช เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‡ เช•เซ‡ เชธเซ‡เชตเชพ เชธเชฌเชจเซ‡เชŸ เชธเชพเชฅเซ‡ kubeadm เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชœเชฎเชพเชตเชŸ เช•เชฐเซ‡เชฒ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ 192.168.0.0/16, เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชฌเชฆเชฒเซ‹ 172.24.0.0/16.

เช…เชจเซ‡ เชเชตเซเช‚ เชฌเชจเซเชฏเซเช‚ เช•เซ‡ เช…เชฎเชจเซ‡ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏเชฅเซ€ เช เชœเซ‹เชตเชพเชฎเชพเช‚ เชฐเชธ เชนเชคเซ‹ เช•เซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เชตเช—เซ‡เชฐเซ‡ เชตเช—เซ‡เชฐเซ‡เชฎเชพเช‚ เชถเซเช‚ เช…เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเช‚เช—เซเชฐเชนเชฟเชค เช›เซ‡, เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชถเซเช‚ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡... เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เชตเชฟเชšเชพเชฐเซเชฏเซเช‚: โ€œเชœเซ‚เชจเชพ IP เชเชกเซเชฐเซ‡เชธ (เชธเชฌเชจเซ‡เชŸ) เชจเซ‡ เชจเชตเชพ เชธเชพเชฅเซ‡ เชฌเชฆเชฒเซ€เชจเซ‡, เชซเช•เซเชค etcd เชฎเชพเช‚ เชกเซ‡เชŸเชพ เช•เซ‡เชฎ เช…เชชเชกเซ‡เชŸ เชจ เช•เชฐเซ‹?

etcd เชฎเชพเช‚ เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เชธเชพเชงเชจเซ‹เชจเซ€ เชถเซ‹เชง เช•เชฐเซเชฏเชพ เชชเช›เซ€, เช…เชฎเชจเซ‡ เชเชตเซเช‚ เช•เช‚เชˆ เชฎเชณเซเชฏเซเช‚ เชจเชฅเซ€ เช•เซ‡ เชœเซ‡ เชธเชฎเชธเซเชฏเชพเชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชนเชฒ เช•เชฐเซ‡. (เชฎเชพเชฐเซเช— เชฆเซเชตเชพเชฐเชพ, เชœเซ‹ เชคเชฎเซ‡ etcd เชฎเชพเช‚ เชธเซ€เชงเชพ เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เช•เซ‹เชˆเชชเชฃ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเช“ เชตเชฟเชถเซ‡ เชœเชพเชฃเซ‹ เช›เซ‹, เชคเซ‹ เช…เชฎเซ‡ เชฒเชฟเช‚เช•เซเชธเชจเซ€ เชชเซเชฐเชถเช‚เชธเชพ เช•เชฐเซ€เชถเซเช‚.) เชœเซ‹ เช•เซ‡, เชเช• เชธเชพเชฐเซ‹ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชฌเชฟเช‚เชฆเซ เช›เซ‡ เชตเช—เซ‡เชฐเซ‡ เชธเชนเชพเชฏเช• เช“เชชเชจเชถเชฟเชซเซเชŸเชฎเชพเช‚เชฅเซ€ (เชคเซ‡เชจเชพ เชฒเซ‡เช–เช•เซ‹เชจเซ‡ เช†เชญเชพเชฐ!).

เช† เช‰เชชเชฏเซ‹เช—เชฟเชคเชพ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ etcd เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชˆ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เช†เชฆเซ‡เชถเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเซเชฏเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชตเชพเช‚เชšเซ€ เชถเช•เซ‡ เช›เซ‡ ls, get, dump.

เชตเช—เซ‡เชฐเซ‡ เชธเชนเชพเชฏเช• เช‰เชฎเซ‡เชฐเซ‹

เช†เช—เชณเชจเซ‹ เชตเชฟเชšเชพเชฐ เชคเชพเชฐเซเช•เชฟเช• เช›เซ‡: " etcd เชฎเชพเช‚ เชกเซ‡เชŸเชพ เชฒเช–เชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เช‰เชฎเซ‡เชฐเซ€เชจเซ‡ เชคเชฎเชจเซ‡ เช† เช‰เชชเชฏเซ‹เช—เชฟเชคเชพ เช‰เชฎเซ‡เชฐเชตเชพเชฅเซ€ เชถเซเช‚ เชฐเซ‹เช•เซ‡ เช›เซ‡?"

เชคเซ‡ เชฌเซ‡ เชจเชตเชพ เช•เชพเชฐเซเชฏเซ‹ เชธเชพเชฅเซ‡ etcdhelper เชจเซเช‚ เชธเช‚เชถเซ‹เชงเชฟเชค เชธเช‚เชธเซเช•เชฐเชฃ เชฌเชจเซเชฏเซเช‚ changeServiceCIDR ะธ changePodCIDR. เชคเซ‡เชจเชพ เชชเชฐ เชคเชฎเซ‡ เช•เซ‹เชก เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹ เช…เชนเซ€เช‚.

เชจเชตเซ€ เชธเซเชตเชฟเชงเชพเช“ เชถเซเช‚ เช•เชฐเซ‡ เช›เซ‡? เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎ changeServiceCIDR:

  • เชเช• deserializer เชฌเชจเชพเชตเซ‹;
  • CIDR เชจเซ‡ เชฌเชฆเชฒเชตเชพ เชฎเชพเชŸเซ‡ เชจเชฟเชฏเชฎเชฟเชค เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเชจเซเช‚ เชธเช‚เช•เชฒเชจ เช•เชฐเซ‹;
  • เช…เชฎเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ ClusterIP เชชเซเชฐเช•เชพเชฐ เชธเชพเชฅเซ‡เชจเซ€ เชฌเชงเซ€ เชธเซ‡เชตเชพเช“เชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชˆเช เช›เซ€เช:
    • เช—เซ‹ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชฎเชพเช‚ etcd เชฎเชพเช‚เชฅเซ€ เชฎเซ‚เชฒเซเชฏ เชกเซ€เช•เซ‹เชก เช•เชฐเซ‹;
    • เชจเชฟเชฏเชฎเชฟเชค เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช…เชฎเซ‡ เชธเชฐเชจเชพเชฎเชพเช‚เชจเชพ เชชเซเชฐเชฅเชฎ เชฌเซ‡ เชฌเชพเช‡เชŸเซเชธ เชฌเชฆเชฒเซ€เช เช›เซ€เช;
    • เชธเซ‡เชตเชพเชจเซ‡ เชจเชตเชพ เชธเชฌเชจเซ‡เชŸเชฎเชพเช‚เชฅเซ€ IP เชธเชฐเชจเชพเชฎเซเช‚ เชธเซ‹เช‚เชชเซ‹;
    • เชธเซ€เชฐเซ€เชฏเชฒเชพเช‡เชเชฐ เชฌเชจเชพเชตเซ‹, เช—เซ‹ เช“เชฌเซเชœเซ‡เช•เซเชŸเชจเซ‡ เชชเซเชฐเซ‹เชŸเซ‹เชฌเชซเชฎเชพเช‚ เช•เชจเซเชตเชฐเซเชŸ เช•เชฐเซ‹, เชตเช—เซ‡เชฐเซ‡เชฎเชพเช‚ เชจเชตเซ‹ เชกเซ‡เชŸเชพ เชฒเช–เซ‹.

เช•เชพเชฐเซเชฏ changePodCIDR เช…เชจเชฟเชตเชพเชฐเซเชฏเชชเชฃเซ‡ เชธเชฎเชพเชจ changeServiceCIDR - เชซเช•เซเชค เชธเซ‡เชตเชพ เชธเซเชชเชทเซเชŸเซ€เช•เชฐเชฃเชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเชตเชพเชจเซ‡ เชฌเชฆเชฒเซ‡, เช…เชฎเซ‡ เชคเซ‡ เชจเซ‹เชก เช…เชจเซ‡ เชซเซ‡เชฐเชซเชพเชฐ เชฎเชพเชŸเซ‡ เช•เชฐเซ€เช เช›เซ€เช .spec.PodCIDR เชจเชตเชพ เชธเชฌเชจเซ‡เชŸ เชชเชฐ.

เชชเซเชฐเซ‡เช•เซเชŸเชฟเชธ

เชธเซ‡เชตเชพ CIDR เชฌเชฆเชฒเซ‹

เช•เชพเชฐเซเชฏเชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชฏเซ‹เชœเชจเชพ เช–เซ‚เชฌ เชœ เชธเชฐเชณ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เชฎเชพเช‚ เชกเชพเช‰เชจเชŸเชพเช‡เชฎเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชคเชฎเชพเชฎ เชชเซ‹เชกเซเชธ เชซเชฐเซ€เชฅเซ€ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชฎเซเช–เซเชฏ เชชเช—เชฒเชพเช“เชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เช…เชฎเซ‡ เชธเชฟเชฆเซเชงเชพเช‚เชคเชฎเชพเช‚, เช† เชกเชพเช‰เชจเชŸเชพเช‡เชฎเชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช˜เชŸเชพเชกเซ€ เชถเช•เชพเชฏ เชคเซ‡ เช…เช‚เช—เซ‡เชจเชพ เชตเชฟเชšเชพเชฐเซ‹ เชชเชฃ เชถเซ‡เชฐ เช•เชฐเซ€เชถเซเช‚.

เชคเซˆเชฏเชพเชฐเซ€เชจเชพ เชชเช—เชฒเชพเช‚:

  • เชœเชฐเซ‚เชฐเซ€ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเซเช‚ เช…เชจเซ‡ เชชเซ‡เชš เช•เชฐเซ‡เชฒ เชตเช—เซ‡เชฐเซ‡ เชนเซ‡เชฒเซเชชเชฐเชจเซ‡ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเชตเซเช‚;
  • เชฌเซ‡เช•เช…เชช เชตเช—เซ‡เชฐเซ‡ เช…เชจเซ‡ /etc/kubernetes.

เชธเชฐเซเชตเชฟเชธเชธเซ€เช†เชˆเชกเซ€เช†เชฐ เชฌเชฆเชฒเชตเชพ เชฎเชพเชŸเซ‡ เชธเช‚เช•เซเชทเชฟเชชเซเชค เชเช•เซเชถเชจ เชชเซเชฒเชพเชจ:

  • apiserver เช…เชจเซ‡ เช•เช‚เชŸเซเชฐเซ‹เชฒเชฐ-เชฎเซ‡เชจเซ‡เชœเชฐ เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸ เชฌเชฆเชฒเชตเซเช‚;
  • เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐเซ‹ เชซเชฐเซ€เชฅเซ€ เชœเชพเชฐเซ€;
  • เชตเช—เซ‡เชฐเซ‡เชฎเชพเช‚ เช•เซเชฒเชธเซเชŸเชฐเช†เชˆเชชเซ€ เชธเซ‡เชตเชพเช“ เชฌเชฆเชฒเชตเซ€;
  • เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชคเชฎเชพเชฎ เชถเซ€เช‚เช—เซ‹ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ‹.

เชจเซ€เชšเซ‡เชจเซ€ เชตเชฟเช—เชคเชตเชพเชฐ เช•เซเชฐเชฟเชฏเชพเช“เชจเซ‹ เชธเช‚เชชเซ‚เชฐเซเชฃ เช•เซเชฐเชฎ เช›เซ‡.

1. เชกเซ‡เชŸเชพ เชกเชฎเซเชช เชฎเชพเชŸเซ‡ etcd-client เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹:

apt install etcd-client

2. เชตเช—เซ‡เชฐเซ‡ เชธเชนเชพเชฏเช• เชฌเชจเชพเชตเซ‹:

  • เช—เซ‹เชฒเช‚เช— เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹:
    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_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. เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช•เช‚เชŸเซเชฐเซ‹เชฒ เชชเซเชฒเซ‡เชจ เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸเชฎเชพเช‚ เชธเชฐเซเชตเชฟเชธ เชธเชฌเชจเซ‡เชŸ เชฌเชฆเชฒเซ‹. เชซเชพเช‡เชฒเซ‹เชฎเชพเช‚ /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. เชšเชพเชฒเซ‹ 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. เชšเชพเชฒเซ‹ เชคเชชเชพเชธเซ€เช เช•เซ‡ เชจเชตเชพ เชธเชฌเชจเซ‡เชŸ เชฎเชพเชŸเซ‡ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชœเชพเชฐเซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚:
    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 เชธเชฐเซเชตเชฐ เชชเซเชฐเชฎเชพเชฃเชชเชคเซเชฐ เชซเชฐเซ€เชฅเซ€ เชœเชพเชฐเซ€ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชคเซ‡เชจเชพ เช•เชจเซเชŸเซ‡เชจเชฐเชจเซ‡ เชชเซเชจเชƒเชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ‹:
    docker ps | grep k8s_kube-apiserver | awk '{print $1}' | xargs docker restart
  7. เชฎเชพเชŸเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพ เชชเซเชจเชƒเชœเชจเชฐเซ‡เชŸ เช•เชฐเซ€เช admin.conf:
    kubeadm alpha certs renew admin.conf
  8. เชšเชพเชฒเซ‹ เชกเซ‡เชŸเชพเชจเซ‡ เชตเช—เซ‡เชฐเซ‡เชฎเชพเช‚ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเซ€เช:
    ./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 เชจเชฟเชฏเชฎเซ‹เชจเซ‡ เชœเซ‚เชจเชพ เชธเชฌเชจเซ‡เชŸเชฎเชพเช‚เชฅเซ€ เชจเชตเชพเชฎเชพเช‚ เชฌเชฆเชฒเซ€ เชจเชพเช–เซ‡ เช›เซ‡. เช†เช—เชณ เชฒเซ‡เช–เชฎเชพเช‚ เชคเซ‡ เชกเชพเช‰เชจเชŸเชพเช‡เชฎ เช˜เชŸเชพเชกเชตเชพเชจเชพ เชธเช‚เชญเชตเชฟเชค เชตเชฟเช•เชฒเซเชชเซ‹ เชตเชฟเชถเซ‡ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡.

  9. เชšเชพเชฒเซ‹ เชจเซ‡เชฎเชธเซเชชเซ‡เชธเชฎเชพเช‚ ConfigMap เชจเซ‡ เช เซ€เช• เช•เชฐเซ€เช kube-system:
    kubectl -n kube-system edit cm kubelet-config-1.16

    - เช…เชนเซ€เช‚ เชฌเชฆเชฒเซ‹ clusterDNS kube-dns เชธเซ‡เชตเชพเชจเชพ เชจเชตเชพ IP เชธเชฐเชจเชพเชฎเชพ เชชเชฐ: kubectl -n kube-system get svc kube-dns.

    kubectl -n kube-system edit cm kubeadm-config

    - เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เช เซ€เช• เช•เชฐเซ€เชถเซเช‚ data.ClusterConfiguration.networking.serviceSubnet เชจเชตเชพ เชธเชฌเชจเซ‡เชŸ เชชเชฐ.

  10. kube-dns เชธเชฐเชจเชพเชฎเซเช‚ เชฌเชฆเชฒเชพเชˆ เช—เชฏเซเช‚ เชนเซ‹เชตเชพเชฅเซ€, เชฌเชงเชพ เช—เชพเช‚เช เซ‹ เชชเชฐ kubelet เชฐเซ‚เชชเชฐเซ‡เช–เชพ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเซ€ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡:
    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. เช•เช‚เชŸเซเชฐเซ‹เชฒ เชชเซเชฒเซ‡เชจ เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸ เชฌเชฆเชฒเซเชฏเชพ เชชเช›เซ€, เชจเชตเซ€ kube-dns เชธเซ‡เชตเชพ เชฌเชจเชพเชตเซ‹, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชจเชพเชฎ เชธเชพเชฅเซ‡ kube-dns-tmp เช…เชจเซ‡ เชจเชตเซเช‚ เชธเชฐเชจเชพเชฎเซเช‚ 172.24.0.10.
  2. เชฌเชจเชพเชตเซ‹ if etcdhelper เชฎเชพเช‚, เชœเซ‡ kube-dns เชธเซ‡เชตเชพเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเชถเซ‡ เชจเชนเซ€เช‚.
  3. เชฌเชงเชพ เช•เซเชฌเซ‡เชฒเซ‡เชŸเชฎเชพเช‚ เชธเชฐเชจเชพเชฎเซเช‚ เชฌเชฆเชฒเซ‹ ClusterDNS เชจเชตเซ€ เชธเซ‡เชตเชพ เชฎเชพเชŸเซ‡, เชœเซเชฏเชพเชฐเซ‡ เชœเซ‚เชจเซ€ เชธเซ‡เชตเชพ เชจเชตเซ€ เชธเชพเชฅเซ‡ เชเช•เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซเช‚ เชšเชพเชฒเซ เชฐเชพเช–เชถเซ‡.
  4. เชชเซเชฐเชพเช•เซƒเชคเชฟเช• เช•เชพเชฐเชฃเซ‹เชธเชฐ เช…เชฅเชตเชพ เชธเช‚เชฎเชค เชธเชฎเชฏเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชธเชพเชฅเซ‡เชจเชพ เชถเซ€เช‚เช—เซ‹ เชœเชพเชคเซ‡ เชœ เชซเซ‡เชฐเชตเชพเชˆ เชœเชพเชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เชฐเชพเชน เชœเซเช“.
  5. เชธเซ‡เชตเชพ เช•เชพเชขเซ€ เชจเชพเช–เซ‹ kube-dns-tmp เช…เชจเซ‡ เชฌเชฆเชฒเซ‹ serviceSubnetCIDR kube-dns เชธเซ‡เชตเชพ เชฎเชพเชŸเซ‡.

เช† เชฏเซ‹เชœเชจเชพ เชคเชฎเชจเซ‡ เชธเซ‡เชตเชพ เชฆเซ‚เชฐ เช•เชฐเชตเชพเชจเชพ เชธเชฎเชฏเช—เชพเชณเชพ เชฎเชพเชŸเซ‡ เชกเชพเช‰เชจเชŸเชพเช‡เชฎเชจเซ‡ ~เชเช• เชฎเชฟเชจเชฟเชŸ เชธเซเชงเซ€ เช˜เชŸเชพเชกเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชถเซ‡ kube-dns-tmp เช…เชจเซ‡ เชธเซ‡เชตเชพ เชฎเชพเชŸเซ‡ เชธเชฌเชจเซ‡เชŸ เชฌเชฆเชฒเชตเซเช‚ kube-dns.

เชซเซ‡เชฐเชซเชพเชฐ เชชเซ‹เชกเชจเซ‡เชŸเชตเชฐเซเช•

เชคเซ‡ เชœ เชธเชฎเชฏเซ‡, เช…เชฎเซ‡ เชชเชฐเชฟเชฃเชพเชฎเซ€ etcdhelper เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเซ‹เชกเชจเซ‡เชŸเชตเชฐเซเช•เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเช‚เชถเซ‹เชงเชฟเชค เช•เชฐเชตเซเช‚ เชคเซ‡ เชœเซ‹เชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚. เช•เซเชฐเชฟเชฏเชพเช“เชจเซ‹ เช•เซเชฐเชฎ เชจเซ€เชšเซ‡ เชฎเซเชœเชฌ เช›เซ‡:

  • เชฎเชพเช‚ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช“ เชซเชฟเช•เซเชธเชฟเช‚เช— kube-system;
  • kube-controller-manager เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸเชจเซ‡ เช เซ€เช• เช•เชฐเชตเซเช‚;
  • podCIDR เชธเซ€เชงเชพ etcd เชฎเชพเช‚ เชฌเชฆเชฒเซ‹;
  • เชฌเชงเชพ เช•เซเชฒเชธเซเชŸเชฐ เชจเซ‹เชกเซเชธ เชฐเซ€เชฌเซเชŸ เช•เชฐเซ‹.

เชนเชตเซ‡ เช† เช•เซเชฐเชฟเชฏเชพเช“ เชตเชฟเชถเซ‡ เชตเชงเซ:

1. เชจเซ‡เชฎเชธเซเชชเซ‡เชธเชฎเชพเช‚ ConfigMaps เชจเซ‡ เชธเช‚เชถเซ‹เชงเชฟเชค เช•เชฐเซ‹ 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. เช•เช‚เชŸเซเชฐเซ‹เชฒเชฐ-เชฎเซ‡เชจเซ‡เชœเชฐ เชฎเซ‡เชจเชฟเชซเซ‡เชธเซเชŸเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเซ‹:

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

- เชธเซเชงเชพเชฐเชตเซเช‚ --cluster-cidr=10.55.0.0/16.

3. เชตเชฐเซเชคเชฎเชพเชจ เชฎเซ‚เชฒเซเชฏเซ‹ เชœเซเช“ .spec.podCIDR, .spec.podCIDRs, .InternalIP, .status.addresses เชฌเชงเชพ เช•เซเชฒเชธเซเชŸเชฐ เชจเซ‹เชกเซเชธ เชฎเชพเชŸเซ‡:

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. เชธเซ€เชงเชพ etcd เชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เช•เชฐเซ€เชจเซ‡ podCIDR เชจเซ‡ เชฌเชฆเชฒเซ‹:

./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. เชšเชพเชฒเซ‹ เชคเชชเชพเชธเซ€เช เช•เซ‡ เชชเซ‹เชกเชธเซ€เช†เชˆเชกเซ€เช†เชฐ เช–เชฐเซ‡เช–เชฐ เชฌเชฆเชฒเชพเชˆ เช—เชฏเซเช‚ เช›เซ‡:

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. เชšเชพเชฒเซ‹ เชฌเชงเชพ เช•เซเชฒเชธเซเชŸเชฐ เชจเซ‹เชกเซเชธ เชเช• เชชเช›เซ€ เชเช• เชฐเซ€เชฌเซ‚เชŸ เช•เชฐเซ€เช.

7. เชœเซ‹ เชคเชฎเซ‡ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เชเช• เชจเซ‹เชก เช›เซ‹เชกเซ‹ เช›เซ‹ เชœเซ‚เชจเชพ เชชเซ‹เชกเชธเซ€เช†เชˆเชกเซ€เช†เชฐ, เชคเซ‹ kube-controller-manager เชถเชฐเซ‚ เช•เชฐเซ€ เชถเช•เชถเซ‡ เชจเชนเซ€เช‚, เช…เชจเซ‡ เช•เซเชฒเชธเซเชŸเชฐเชฎเชพเช‚ เชชเซ‹เชกเซเชธ เชถเซ‡เชกเซเชฏเซ‚เชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เชจเชนเซ€เช‚.

เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เชชเซ‹เชกเชธเซ€เช†เชˆเชกเซ€เช†เชฐ เชฌเชฆเชฒเชตเซเช‚ เชตเชงเซ เชธเชฐเชณ เชชเชฃ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเซ‡เชฅเซ€). เชชเชฐเช‚เชคเซ เช…เชฎเซ‡ เชธเซ€เชงเชพ etcd เชธเชพเชฅเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเชตเซเช‚ เชคเซ‡ เชถเซ€เช–เชตเชพ เชฎเชพเช—เชคเชพ เชนเชคเชพ, เช•เชพเชฐเชฃ เช•เซ‡ เช•เซเชฌเชฐเชจเซ‡เชŸเซเชธ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธ เชตเช—เซ‡เชฐเซ‡เชฎเชพเช‚ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชเชตเชพ เช•เชฟเชธเซเชธเชพเช“ เช›เซ‡ - เชฎเชพเชคเซเชฐ เชถเช•เซเชฏ เชชเซเชฐเช•เชพเชฐ. (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเชฎเซ‡ เชกเชพเช‰เชจเชŸเชพเช‡เชฎ เชตเชฟเชจเชพ เชซเช•เซเชค เชธเซ‡เชตเชพ เช•เซเชทเซ‡เชคเซเชฐ เชฌเชฆเชฒเซ€ เชถเช•เชคเชพ เชจเชฅเซ€ spec.clusterIP.)

เชชเชฐเชฟเชฃเชพเชฎ

เชฒเซ‡เช– เชตเช—เซ‡เชฐเซ‡เชฎเชพเช‚ เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ เชธเซ€เชงเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ€ เชถเช•เซเชฏเชคเชพเชจเซ€ เชšเชฐเซเชšเชพ เช•เชฐเซ‡ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡. Kubernetes API เชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเซ€เชจเซ‡. เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เช† เช…เชญเชฟเช—เชฎ เชคเชฎเชจเซ‡ "เชฎเซเชถเซเช•เซ‡เชฒ เชตเชธเซเชคเซเช“" เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เช…เชฎเซ‡ เชตเชพเชธเซเชคเชตเชฟเช• K8s เช•เซเชฒเชธเซเชŸเชฐเซ‹ เชชเชฐ เชŸเซ‡เช•เซเชธเซเชŸเชฎเชพเช‚ เช†เชชเซ‡เชฒ เช‘เชชเชฐเซ‡เชถเชจเซเชธเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซเชฏเซเช‚. เชœเซ‹ เช•เซ‡, เชตเซเชฏเชพเชชเช• เช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡ เชคเซ‡เชฎเชจเซ€ เชคเชคเซเชชเชฐเชคเชพเชจเซ€ เชธเซเชฅเชฟเชคเชฟ เช›เซ‡ PoC (เชตเชฟเชญเชพเชตเชจเชพเชจเซ‹ เชชเซเชฐเชพเชตเซ‹). เชคเซ‡เชฅเซ€, เชœเซ‹ เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ เช•เซเชฒเชธเซเชŸเชฐเซ‹ เชชเชฐ etcdhelper เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเชจเชพ เชธเช‚เชถเซ‹เชงเชฟเชค เชธเช‚เชธเซเช•เชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹, เชคเซ‹ เชคเซ‡ เชคเชฎเชพเชฐเชพ เชชเซ‹เชคเชพเชจเชพ เชœเซ‹เช–เชฎเซ‡ เช•เชฐเซ‹.

PS

เช…เชฎเชพเชฐเชพ เชฌเซเชฒเซ‹เช— เชชเชฐ เชชเชฃ เชตเชพเช‚เชšเซ‹:

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹