etcd Kubernetes เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต† เดกเดพเดฑเตเดฑเดฏเตเดฎเดพเดฏเดฟ เดจเต‡เดฐเดฟเดŸเตเดŸเตเดณเตเดณ เดžเด™เตเด™เดณเตเดŸเต† เด…เดจเตเดญเดตเด‚ (K8s API เด‡เดฒเตเดฒเดพเดคเต†)

เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเตเดณเตเดณเดฟเดฒเต† เดธเต‡เดตเดจเด™เตเด™เตพ เด†เด•เตโ€Œเดธเดธเต เดšเต†เดฏเตเดฏเดพเตป เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต‡เด•เตเด•เต เด†เด•เตโ€Œเดธเดธเต เดจเตฝเด•เดพเตป เด•เตเดฒเดฏเตปเตเดฑเตเด•เตพ เดžเด™เตเด™เดณเต‹เดŸเต เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเดคเต เดตเตผเดฆเตเดงเดฟเดšเตเดšเตเดตเดฐเดฟเด•เดฏเดพเดฃเต: เดšเดฟเดฒ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดฒเต‡เด•เตเด•เต‹ เดธเต‡เดตเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต‹ เดจเต‡เดฐเดฟเดŸเตเดŸเต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเตป, เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเตเดณเตเดณเดฟเดฒเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เดณเตเดฎเดพเดฏเดฟ เด’เดฐเต เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเต† เดฌเดจเตเดงเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต...

etcd Kubernetes เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต† เดกเดพเดฑเตเดฑเดฏเตเดฎเดพเดฏเดฟ เดจเต‡เดฐเดฟเดŸเตเดŸเตเดณเตเดณ เดžเด™เตเด™เดณเตเดŸเต† เด…เดจเตเดญเดตเด‚ (K8s API เด‡เดฒเตเดฒเดพเดคเต†)

เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดฎเต†เดทเต€เดจเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดธเต‡เดตเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต memcached.staging.svc.cluster.local. เด•เตเดฒเดฏเตปเตเดฑเต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจ เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เด’เดฐเต VPN เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เตพ เดˆ เด•เดดเดฟเดตเต เดจเตฝเด•เตเดจเตเดจเต. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เดžเด™เตเด™เตพ เดชเต‹เดกเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดธเต‡เดตเดจเด™เตเด™เดณเตเดŸเต†เดฏเตเด‚ เดธเดฌเตโ€Œเดจเต†เดฑเตเดฑเตเด•เดณเตเด‚ เด•เตเดฒเดฏเตปเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดชเตเดทเต เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดกเดฟเดŽเตปเดŽเดธเตเด‚ เดชเตเดฐเด–เตเดฏเดพเดชเดฟเด•เตเด•เตเดจเตเดจเต. เด…เด™เตเด™เดจเต†, เด’เดฐเต เด•เตเดฒเดฏเตปเตเดฑเต เดธเต‡เดตเดจเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ memcached.staging.svc.cluster.local, เด…เดญเตเดฏเตผเดคเตเดฅเดจ เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดกเดฟเดŽเตปเดŽเดธเดฟเดฒเต‡เด•เตเด•เต เดชเต‹เด•เตเด•เดฏเตเด‚ เดชเตเดฐเดคเดฟเด•เดฐเดฃเดฎเดพเดฏเดฟ เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดธเต‡เดตเดจ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเตฝ เดจเดฟเดจเตเดจเต‹ เดชเต‹เดกเต เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต‹ เดˆ เดธเต‡เดตเดจเดคเตเดคเดฟเตปเตเดฑเต† เดตเดฟเดฒเดพเดธเด‚ เดธเตเดตเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดกเดฟเดซเต‹เตพเดŸเตเดŸเต เดธเตผเดตเต€เดธเต เดธเดฌเตเดจเต†เดฑเตเดฑเต เด‰เดณเตเดณ kubeadm เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เตพ K8s เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเด•เตพ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเต 192.168.0.0/16, เด’เดชเตเดชเด‚ เดชเต‹เดกเตเด•เดณเตเดŸเต† เดถเตƒเด‚เด–เดฒเดฏเดพเดฃเต 10.244.0.0/16. เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดŽเดฒเตเดฒเดพเด‚ เดจเดจเตเดจเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เดชเด•เตเดทเต‡ เด•เตเดฑเดšเตเดšเต เดชเต‹เดฏเดฟเตปเตเดฑเตเด•เตพ เด‰เดฃเตเดŸเต:

  • เดธเดฌเตเดจเต†เดฑเตเดฑเต 192.168.*.* เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เด•เตเดฒเดฏเตปเตเดฑเต เด“เดซเต€เดธเต เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เตเด•เดณเดฟเดฒเตเด‚ เดกเต†เดตเดฒเดชเตเดชเตผ เดนเต‹เด‚ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เตเด•เดณเดฟเดฒเตเด‚ เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เดคเตเดŸเตผเดจเตเดจเต เดžเด™เตเด™เตพเด•เตเด•เต เดตเตˆเดฐเตเดฆเตเดงเตเดฏเด™เตเด™เตพ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเต: เดนเต‹เด‚ เดฑเต‚เดŸเตเดŸเดฑเตเด•เตพ เดˆ เดธเดฌเตโ€Œเดจเต†เดฑเตเดฑเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† VPN เดˆ เดธเดฌเตโ€Œเดจเต†เดฑเตเดฑเตเด•เดณเต† เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เด•เตเดฒเดฏเตปเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดคเดณเตเดณเตเดจเตเดจเต.
  • เดžเด™เตเด™เตพเด•เตเด•เต เดจเดฟเดฐเดตเดงเดฟ เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเด•เตพ เด‰เดฃเตเดŸเต (เดชเตเดฐเตŠเดกเด•เตเดทเตป, เดธเตเดฑเตเดฑเต‡เดœเต เด•เต‚เดŸเดพเดคเต†/เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดจเดฟเดฐเดตเดงเดฟ เดกเต†เดตเดฒเดชเตเดชเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเด•เตพ). เดคเตเดŸเตผเดจเตเดจเต, เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ, เด…เดตเดฏเตโ€Œเด•เตเด•เต†เดฒเตเดฒเดพเด‚ เดชเต‹เดกเตเด•เตพเด•เตเด•เตเด‚ เดธเต‡เดตเดจเด™เตเด™เตพเด•เตเด•เตเด‚ เด’เดฐเต‡ เดธเดฌเตโ€Œเดจเต†เดฑเตเดฑเตเด•เตพ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚, เด‡เดคเต เดจเดฟเดฐเดตเดงเดฟ เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเด•เดณเดฟเดฒเต† เดธเต‡เดตเดจเด™เตเด™เดณเตเดฎเดพเดฏเดฟ เด’เดฐเต‡เดธเดฎเดฏเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดตเดฒเดฟเดฏ เดฌเตเดฆเตเดงเดฟเดฎเตเดŸเตเดŸเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต.

เด’เดฐเต‡ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเดจเตเดณเตเดณเดฟเตฝ เดธเต‡เดตเดจเด™เตเด™เตพเด•เตเด•เตเด‚ เดชเต‹เดกเตเด•เตพเด•เตเด•เตเดฎเดพเดฏเดฟ เดตเตเดฏเดคเตเดฏเดธเตโ€Œเดค เดธเดฌเตโ€Œเดจเต†เดฑเตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดฐเต€เดคเดฟ เดžเด™เตเด™เตพ เดตเดณเดฐเต† เดฎเตเดฎเตเดชเตเดคเดจเตเดจเต† เดธเตเดตเต€เด•เดฐเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต - เดชเตŠเดคเตเดตเต†, เดŽเดฒเตเดฒเดพ เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเด•เตพเด•เตเด•เตเด‚ เดตเตเดฏเดคเตเดฏเดธเตเดค เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เตเด•เตพ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดจเดฟเดฐเดตเดงเดฟ เดธเต‡เดตเดจเด™เตเด™เตพ, เดธเตโ€Œเดฑเตเดฑเต‡เดฑเตเดฑเตโ€Œเดซเตเตพ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดฎเตเดคเดฒเดพเดฏเดต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเตฝ, เด†เดฆเตเดฏเด‚ เดฎเตเดคเตฝ เด‰เดฐเตเดŸเตเดŸเดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เดพเดคเตเดค เดงเดพเดฐเดพเดณเด‚ เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเดฟเดฒเตเดฃเตเดŸเต.

เดŽเดจเตเดจเดฟเดŸเตเดŸเต เดžเด™เตเด™เตพ เดธเตเดตเดฏเด‚ เดšเต‹เดฆเดฟเดšเตเดšเต: เดจเดฟเดฒเดตเดฟเดฒเตเดณเตเดณ เด’เดฐเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เดธเดฌเตเดจเต†เดฑเตเดฑเต เดŽเด™เตเด™เดจเต† เดฎเดพเดฑเตเดฑเดพเด‚?

เดคเต€เดฐเตเดฎเดพเดจเด™เตเด™เตพ เดคเดฟเดฐเดฏเตเดจเตเดจเต

เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดเดฑเตเดฑเดตเตเด‚ เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฏ เดฐเต€เดคเดฟ เดŽเดฒเตเดฒเดพเด‚ เดคเดฐเด‚ ClusterIP เด‰เดณเตเดณ เดธเต‡เดตเดจเด™เตเด™เตพ. เด’เดฐเต เด“เดชเตเดทเดจเดพเดฏเดฟ, เด‰เดชเดฆเต‡เดถเดฟเด•เตเด•เดพเด‚ เด‡เดคเตเด‚:

เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเตเด•เตเด•เต เด’เดฐเต เดชเตเดฐเดถเตโ€ŒเดจเดฎเตเดฃเตเดŸเต: เดŽเดฒเตเดฒเดพเด‚ เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚, /etc/resolv.conf-เตฝ เด’เดฐเต DNS เดจเต†เดฏเดฟเด‚เดธเต†เตผเดตเดฑเดพเดฏเดฟ เดชเต‹เดกเตเด•เตพ เดชเดดเดฏ เดเดชเดฟเดฏเตเดฎเดพเดฏเดฟ เดตเดฐเตเดจเตเดจเต.
เดŽเดจเดฟเด•เตเด•เต เด‡เดชเตเดชเต‹เดดเตเด‚ เดชเดฐเดฟเดนเดพเดฐเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เดพเดคเตเดคเดคเดฟเดจเดพเตฝ, เดŽเดจเดฟเด•เตเด•เต เดฎเตเดดเตเดตเตป เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเด‚ kubeadm เดฑเต€เดธเต†เดฑเตเดฑเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฑเต€เดธเต†เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เด…เดคเต เดตเต€เดฃเตเดŸเตเด‚ เด‡เตปเดจเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดฟเดตเดจเตเดจเต.

เดŽเดจเตเดจเดพเตฝ เด‡เดคเต เดŽเดฒเตเดฒเดพเดตเตผเด•เตเด•เตเด‚ เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดฒเตเดฒ... เดžเด™เตเด™เดณเตเดŸเต† เด•เต‡เดธเดฟเตปเตเดฑเต† เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏ เด†เดฎเตเด–เด™เตเด™เตพ เด‡เดคเดพ:

  • เดซเตเดฒเดพเดจเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต;
  • เดฎเต‡เด˜เด™เตเด™เดณเดฟเดฒเตเด‚ เดนเดพเตผเดกเตโ€Œเดตเต†เดฏเดฑเดฟเดฒเตเด‚ เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเด•เตพ เด‰เดฃเตเดŸเต;
  • เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต† เดŽเดฒเตเดฒเดพ เดธเต‡เดตเดจเด™เตเด™เดณเตเด‚ เดตเต€เดฃเตเดŸเตเด‚ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเดจเตเดจเดคเต เด’เดดเดฟเดตเดพเด•เตเด•เดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต;
  • เดŽเดฒเตเดฒเดพ เด•เดพเดฐเตเดฏเด™เตเด™เดณเตเด‚ เดšเตเดฐเตเด™เตเด™เดฟเดฏเดคเต เดชเตเดฐเดถเตโ€Œเดจเด™เตเด™เดณเต‹เดŸเต† เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต;
  • เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต เดชเดคเดฟเดชเตเดชเต 1.16.6 เด†เดฃเต (เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดฎเดฑเตเดฑเต เดชเดคเดฟเดชเตเดชเตเด•เตพเด•เตเด•เตเด‚ เดคเตเดŸเตผ เดจเดŸเดชเดŸเดฟเด•เตพ เดธเดฎเดพเดจเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚);
  • เด’เดฐเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เด’เดฐเต เดธเต‡เดตเดจ เดธเดฌเตโ€Œเดจเต†เดฑเตเดฑเดฟเดจเตŠเดชเตเดชเด‚ kubeadm เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดตเดฟเดจเตเดฏเดธเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดงเดพเดจ เดšเตเดฎเดคเดฒ 192.168.0.0/16, เด‡เดคเต เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเด• 172.24.0.0/16.

เด•เตเดฌเต†เตผเดจเต†เดฑเตเดฑเดธเดฟเตฝ เดŽเดจเตเดคเดพเดฃเต, เดŽเด™เตเด™เดจเต† เดคเตเดŸเด™เตเด™เดฟเดฏเดต etcd-เตฝ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เด•เตŠเดฃเตเดŸเต เดŽเดจเตเดคเตเดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚ เดŽเดจเตเดจเดฑเดฟเดฏเดพเตป เดžเด™เตเด™เตพเด•เตเด•เต เดตเดณเดฐเต†เด•เตเด•เดพเดฒเดฎเดพเดฏเดฟ เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต ... เด…เดคเดฟเดจเดพเตฝ เดžเด™เตเด™เตพ เดšเดฟเดจเตเดคเดฟเดšเตเดšเต: "เดชเดดเดฏ เดเดชเดฟ เดตเดฟเดฒเดพเดธเด™เตเด™เตพ (เดธเดฌเตโ€Œเดจเต†เดฑเตเดฑเต) เดฎเดพเดฑเตเดฑเดฟ เดชเตเดคเดฟเดฏเดต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดŽเดจเตเดคเดฟเดจเดพเดฃเต etcd-เดฏเดฟเดฒเต† เดกเดพเดฑเตเดฑ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตโ€Œเดคเดคเต??

etcd-เดฏเดฟเดฒเต† เดกเดพเดฑเตเดฑ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฑเต†เดกเดฟเดฎเต†เดฏเตเดกเต เดŸเต‚เดณเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดคเดฟเดฐเดžเตเดžเดคเดฟเดจเดพเตฝ, เดชเตเดฐเดถเตเดจเด‚ เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเตเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดจเตเดจเตเด‚ เดžเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏเดฟเดฒเตเดฒ. (เดตเดดเดฟ, etcd-เดฏเดฟเตฝ เดจเต‡เดฐเดฟเดŸเตเดŸเต เดกเดพเดฑเตเดฑ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดฑเดฟเดฏเดพเดฎเต†เด™เตเด•เดฟเตฝ, เดžเด™เตเด™เตพ เดฒเดฟเด™เตเด•เตเด•เดณเต† เด…เดญเดฟเดจเดจเตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.) เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เด’เดฐเต เดจเดฒเตเดฒ เดคเตเดŸเด•เตเด•เดฎเดพเดฃเต etcdhelper OpenShift-เตฝ เดจเดฟเดจเตเดจเต (เด…เดคเดฟเตปเตเดฑเต† เดฐเดšเดฏเดฟเดคเดพเด•เตเด•เตพเด•เตเด•เต เดจเดจเตเดฆเดฟ!).

เดˆ เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟเด•เตเด•เต เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต etcd-เดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเดจเตเด‚ เด•เดฎเดพเตปเดกเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด…เดตเดฟเดŸเต† เดจเดฟเดจเตเดจเต เดกเดพเดฑเตเดฑ เดตเดพเดฏเดฟเด•เตเด•เดพเดจเตเด‚ เด•เดดเดฟเดฏเตเด‚ ls, get, dump.

etcdhelper เดšเต‡เตผเด•เตเด•เตเด•

เด…เดŸเตเดคเตเดค เดšเดฟเดจเตเดค เดฏเตเด•เตเดคเดฟเดธเดนเดฎเดพเดฃเต: " etcd-เดฏเดฟเดฒเต‡เด•เตเด•เต เดกเดพเดฑเตเดฑ เดŽเดดเตเดคเดพเดจเตเดณเตเดณ เด•เดดเดฟเดตเต เดšเต‡เตผเดคเตเดคเต เดˆ เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟ เดšเต‡เตผเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเด™เตเด™เดณเต† เดคเดŸเดฏเตเดจเตเดจเดคเต†เดจเตเดคเดพเดฃเต?"

เดฐเดฃเตเดŸเต เดชเตเดคเดฟเดฏ เดซเด‚เด—เตโ€Œเดทเดจเตเด•เดณเตเดณเตเดณ etcdhelper-เตปเตเดฑเต† เดชเดฐเดฟเดทเตโ€Œเด•เตเด•เดฐเดฟเดšเตเดš เดชเดคเดฟเดชเตเดชเดพเดฏเดฟ เด‡เดคเต เดฎเดพเดฑเดฟ changeServiceCIDR ะธ changePodCIDR. เด…เดตเดณเตเดŸเต† เดฎเต‡เตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เต‹เดกเต เด•เดพเดฃเดพเตป เด•เดดเดฟเดฏเตเด‚ เด‡เดตเดฟเดŸเต†.

เดชเตเดคเดฟเดฏ เดธเดตเดฟเดถเต‡เดทเดคเด•เตพ เดŽเดจเตเดคเดพเดฃเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต? เด…เตฝเด—เต‹เดฐเดฟเดคเด‚ changeServiceCIDR:

  • เด’เดฐเต deserializer เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•;
  • CIDR เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ เดŽเด•เตเดธเตเดชเตเดฐเดทเตป เดธเดฎเดพเดนเดฐเดฟเด•เตเด•เตเด•;
  • เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต† ClusterIP เดคเดฐเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เตพ เดŽเดฒเตเดฒเดพ เดธเต‡เดตเดจเด™เตเด™เดณเดฟเดฒเต‚เดŸเต†เดฏเตเด‚ เด•เดŸเดจเตเดจเตเดชเต‹เด•เตเดจเตเดจเต:
    • etcd-เตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดฎเต‚เดฒเตเดฏเด‚ เด’เดฐเต Go เด’เดฌเตเดœเด•เตเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดกเต€เด•เต‹เดกเต เดšเต†เดฏเตเดฏเตเด•;
    • เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ เดชเดฆเดชเตเดฐเดฏเต‹เด—เด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เตพ เดตเดฟเดฒเดพเดธเดคเตเดคเดฟเตปเตเดฑเต† เด†เดฆเตเดฏ เดฐเดฃเตเดŸเต เดฌเตˆเดฑเตเดฑเตเด•เตพ เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเต;
    • เดชเตเดคเดฟเดฏ เดธเดฌเตเดจเต†เดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเต‡เดตเดจเดคเตเดคเดฟเดจเต เด’เดฐเต IP เดตเดฟเดฒเดพเดธเด‚ เดจเตฝเด•เตเด•;
    • เด’เดฐเต เดธเต€เดฐเดฟเดฏเดฒเตˆเดธเตผ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•, Go เด’เดฌเตโ€Œเดœเด•เตโ€Œเดฑเตเดฑเดฟเดจเต† เดชเตเดฐเต‹เดŸเตเดŸเต‹เดฌเดซเดพเด•เตเด•เดฟ เดฎเดพเดฑเตเดฑเตเด•, etcd-เดฒเต‡เด•เตเด•เต เดชเตเดคเดฟเดฏ เดกเดพเดฑเตเดฑ เดŽเดดเตเดคเตเด•.

เดซเด‚เด—เตเดทเตป changePodCIDR เด…เดŸเดฟเดธเตเดฅเดพเดจเดชเดฐเดฎเดพเดฏเดฟ เดธเดฎเดพเดจเดฎเดพเดฃเต changeServiceCIDR - เดธเต‡เดตเดจ เดธเตเดชเต†เดธเดฟเดซเดฟเด•เตเด•เต‡เดทเตป เดŽเดกเดฟเดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดชเด•เดฐเด‚, เดจเต‹เดกเดฟเดจเตเด‚ เดฎเดพเดฑเตเดฑเดคเตเดคเดฟเดจเตเดฎเดพเดฏเดฟ เดžเด™เตเด™เตพ เด…เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต .spec.PodCIDR เด’เดฐเต เดชเตเดคเดฟเดฏ เดธเดฌเตเดจเต†เดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต.

เดชเตเดฐเดพเด•เตเดŸเต€เดธเต เดšเต†เดฏเตเดฏเตเด•

เดธเต‡เดตเดจเด‚ CIDR เดฎเดพเดฑเตเดฑเตเด•

เดŸเดพเดธเตโ€Œเด•เต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดชเดฆเตเดงเดคเดฟ เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต† เดŽเดฒเตเดฒเดพ เดชเต‹เดกเตเด•เดณเตเดŸเต†เดฏเตเด‚ เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดพเดฃ เดธเดฎเดฏเดคเตเดคเต เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดฏ เดธเดฎเดฏเด‚ เด‡เดคเดฟเตฝ เด‰เตพเดชเตเดชเต†เดŸเตเดจเตเดจเต. เดชเตเดฐเดงเดพเดจ เด˜เดŸเตเดŸเด™เตเด™เตพ เดตเดฟเดตเดฐเดฟเดšเตเดš เดถเต‡เดทเด‚, เดธเตˆเดฆเตเดงเดพเดจเตเดคเดฟเด•เดฎเดพเดฏเดฟ, เดˆ เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดฏ เดธเดฎเดฏเด‚ เดŽเด™เตเด™เดจเต† เด•เตเดฑเดฏเตเด•เตเด•เดพเด‚ เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดšเดฟเดจเตเดคเด•เดณเตเด‚ เดžเด™เตเด™เตพ เดชเด™เตเด•เดฟเดŸเตเด‚.

เดคเดฏเตเดฏเดพเดฑเต†เดŸเตเดชเตเดชเต เด˜เดŸเตเดŸเด™เตเด™เตพ:

  • เด†เดตเดถเตเดฏเดฎเดพเดฏ เดธเต‹เดซเตโ€Œเดฑเตเดฑเตโ€Œเดตเต†เดฏเตผ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดชเดพเดšเตเดšเต เดšเต†เดฏเตเดค etcdhelper เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด•;
  • เดฌเดพเด•เตเด•เดชเตเดชเต เดคเตเดŸเด™เตเด™เดฟเดฏเดต /etc/kubernetes.

เดธเตผเดตเต€เดธเตโ€Œเดธเดฟเดเดกเดฟเด†เตผ เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดนเตเดฐเดธเตเดต เดชเตเดฐเดตเตผเดคเตเดคเดจ เดชเดฆเตเดงเดคเดฟ:

  • apiserver, เด•เตบเดŸเตเดฐเต‹เดณเตผ-เดฎเดพเดจเต‡เดœเตผ เดฎเดพเดจเดฟเดซเต†เดธเตเดฑเตเดฑเตเด•เตพ เดฎเดพเดฑเตเดฑเตเดจเตเดจเต;
  • เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เดณเตเดŸเต† เดชเตเดจเตผเดตเดฟเดคเดฐเดฃเด‚;
  • etcd-เตฝ ClusterIP เดธเต‡เดตเดจเด™เตเด™เตพ เดฎเดพเดฑเตเดฑเตเดจเตเดจเต;
  • เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต† เดŽเดฒเตเดฒเดพ เดชเต‹เดกเตเด•เดณเตเด‚ เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด•.

เดตเดฟเดถเดฆเดฎเดพเดฏ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเดŸเต† เด’เดฐเต เดธเดฎเตเดชเต‚เตผเดฃเตเดฃ เดถเตเดฐเต‡เดฃเดฟเดฏเดพเดฃเต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจเดคเต.

1. เดกเดพเดฑเตเดฑ เดกเดฎเตเดชเดฟเดจเดพเดฏเดฟ etcd-เด•เตเดฒเดฏเตปเตเดฑเต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•:

apt install etcd-client

2. เดฌเดฟเตฝเดกเต etcdhelper:

  • เด—เต‹เดฒเดพเด‚เด—เต เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•:
    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. apiserver-เดจเต (เด‰เตพเดชเตเดชเต†เดŸเต†) kubeadm เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเตเด•เตพ เดจเตฝเด•เตเดจเตเดจ เดธเต‡เดตเดจ เดธเดฌเตโ€Œเดจเต†เดฑเตเดฑเต เดžเด™เตเด™เตพ เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เด…เดต เดตเต€เดฃเตเดŸเตเด‚ เด‡เดทเตเดฏเต‚ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

  1. เดเดคเตŠเด•เตเด•เต† เดกเตŠเดฎเต†เดฏเตโ€Œเดจเตเด•เตพเด•เตเด•เตเด‚ เดเดชเดฟ เดตเดฟเดฒเดพเดธเด™เตเด™เตพเด•เตเด•เตเดฎเดพเดฃเต เดจเดฟเดฒเดตเดฟเดฒเต† เดธเตผเดŸเตเดŸเดฟเดซเดฟเด•เตเด•เดฑเตเดฑเต เดจเตฝเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เดจเต‹เด•เตเด•เดพเด‚:
    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. 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 เดจเดฟเดฏเดฎเด™เตเด™เดณเต† เดชเดดเดฏ เดธเดฌเตโ€Œเดจเต†เดฑเตเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดคเดฟเดฏเดคเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเตเดจเตเดจเต. เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเดฏ เดธเดฎเดฏเด‚ เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดธเดพเดงเตเดฏเดฎเดพเดฏ เด“เดชเตเดทเดจเตเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เดŽเดดเตเดคเดฟเดฏเดฟเดŸเตเดŸเตเดฃเตเดŸเต.

  9. เดจเดฎเตเด•เตเด•เต เดจเต†เดฏเดฟเด‚เดธเตเดชเต‡เดธเดฟเตฝ เด•เต‹เตบเดซเดฟเด—เตเดฎเดพเดชเตเดชเต เดถเดฐเดฟเดฏเดพเด•เตเด•เดพเด‚ 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 config เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต:
    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 เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดŽเด™เตเด™เดจเต† podNetwork เดชเดฐเดฟเดทเตเด•เตเด•เดฐเดฟเด•เตเด•เดพเด‚ เดŽเดจเตเดจเต เดจเต‹เด•เตเด•เดพเตป เดžเด™เตเด™เตพ เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต. เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเดŸเต† เด•เตเดฐเดฎเด‚ เด‡เดชเตเดฐเด•เดพเดฐเดฎเดพเดฃเต:

  • เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเด•เตพ เดถเดฐเดฟเดฏเดพเด•เตเด•เตเดจเตเดจเต kube-system;
  • เด•เตเดฏเต‚เดฌเต-เด•เตบเดŸเตเดฐเต‹เดณเตผ-เดฎเดพเดจเต‡เดœเตผ เดฎเดพเดจเดฟเดซเต†เดธเตเดฑเตเดฑเต เดถเดฐเดฟเดฏเดพเด•เตเด•เตเดจเตเดจเต;
  • podCIDR เดจเต‡เดฐเดฟเดŸเตเดŸเต etcd-เดฏเดฟเตฝ เดฎเดพเดฑเตเดฑเตเด•;
  • เดŽเดฒเตเดฒเดพ เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดจเต‹เดกเตเด•เดณเตเด‚ เดฑเต€เดฌเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเด•.

เด‡เดชเตเดชเต‹เตพ เดˆ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด•เต‚เดŸเตเดคเตฝ:

1. เดจเต†เดฏเดฟเด‚เดธเตเดชเต‡เดธเดฟเตฝ เด•เต‹เตบเดซเดฟเด—เตเดฎเดพเดชเตเดชเต เดชเดฐเดฟเดทเตเด•เตเด•เดฐเดฟเด•เตเด•เตเด• 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. 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. เดŽเดฒเตเดฒเดพ เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดจเต‹เดกเตเด•เดณเตเด‚ เด“เดฐเต‹เดจเตเดจเดพเดฏเดฟ เดฑเต€เดฌเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเดพเด‚.

7. เดจเดฟเด™เตเด™เตพ เด’เดฐเต เดจเต‹เดกเต†เด™เตเด•เดฟเดฒเตเด‚ เด‰เดชเต‡เด•เตเดทเดฟเดšเตเดšเดพเตฝ เดชเดดเดฏ podCIDR, เดคเตเดŸเตผเดจเตเดจเต kube-controller-manager-เดจเต เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ, เด•เต‚เดŸเดพเดคเต† เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเต† เดชเต‹เดกเตเด•เตพ เดทเต†เดกเตเดฏเต‚เตพ เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเด•เดฏเตเดฎเดฟเดฒเตเดฒ.

เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, podCIDR เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเต เด‡เดคเดฟเดฒเตเด‚ เดฒเดณเดฟเดคเดฎเดพเดฏเดฟ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚ (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด…เดคเตเดชเต‡เดพเดฒเต†). เดŽเดจเตเดจเดพเตฝ, etcd-เดฏเดฟเตฝ Kubernetes เด’เดฌเตโ€Œเดœเด•เตโ€Œเดฑเตเดฑเตเด•เตพ เดŽเดกเดฟเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ เดšเดฟเดฒ เด•เต‡เดธเตเด•เดณเตเดฃเตเดŸเต เดŽเดจเตเดจเดคเดฟเดจเดพเตฝ, etcd-เดฏเดฟเตฝ เดจเต‡เดฐเดฟเดŸเตเดŸเต เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดฃเดฎเต†เดจเตเดจเต เดชเด เดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเดšเตเดšเต. เด’เดฐเต‡เดฏเตŠเดฐเต เดธเดพเดงเตเดฏเดฎเดพเดฏ เดตเต‡เดฐเดฟเดฏเตปเตเดฑเต. (เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดชเตเดฐเดตเตผเดคเตเดคเดจเดฐเดนเดฟเดคเดฎเดพเด•เดพเดคเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเต‡เดตเดจ เดซเต€เตฝเดกเต เดฎเดพเดฑเตเดฑเดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ spec.clusterIP.)

เดซเดฒเด‚

etcd-เดฏเดฟเดฒเต† เดกเดพเดฑเตเดฑเดฏเตเดฎเดพเดฏเดฟ เดจเต‡เดฐเดฟเดŸเตเดŸเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เดธเดพเดงเตเดฏเดค เดฒเต‡เด–เดจเด‚ เดšเตผเดšเตเดšเดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด…เดคเดพเดฏเดคเต. Kubernetes API เดฌเตˆเดชเดพเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดšเดฟเดฒเดชเตเดชเต‹เตพ เดˆ เดธเดฎเต€เดชเดจเด‚ เดจเดฟเด™เตเด™เดณเต† "เดคเดจเตเดคเตเดฐเดชเดฐเดฎเดพเดฏ เด•เดพเดฐเตเดฏเด™เตเด™เตพ" เดšเต†เดฏเตเดฏเดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เดฏเดฅเดพเตผเดคเตเดฅ K8s เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเด•เดณเดฟเตฝ เดตเดพเดšเด•เดคเตเดคเดฟเตฝ เดจเตฝเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เตพ เดžเด™เตเด™เตพ เดชเดฐเต€เด•เตเดทเดฟเดšเตเดšเต. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดตเตเดฏเดพเดชเด•เดฎเดพเดฏ เด‰เดชเดฏเต‹เด—เดคเตเดคเดฟเดจเตเดณเตเดณ เด…เดตเดฐเตเดŸเต† เดธเดจเตเดจเดฆเตเดงเดคเดฏเดพเดฃเต PoC (เดธเด™เตเด•เตฝเดชเตเดชเดคเตเดคเดฟเตปเตเดฑเต† เดคเต†เดณเดฟเดตเต). เด…เดคเดฟเดจเดพเตฝ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเด•เดณเดฟเตฝ etcdhelper เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟเดฏเตเดŸเต† เดชเดฐเดฟเดทเตเด•เดฐเดฟเดšเตเดš เดชเดคเดฟเดชเตเดชเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เตพ เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดคเตเดคเดคเตเดคเดฟเตฝ เด…เดคเต เดšเต†เดฏเตเดฏเตเด•.

เดชเดฟ.เดŽเดธเต

เดžเด™เตเด™เดณเตเดŸเต† เดฌเตเดฒเต‹เด—เดฟเดฒเตเด‚ เดตเดพเดฏเดฟเด•เตเด•เตเด•:

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•