ืื•ื ื“ื–ืขืจ ื“ืขืจืคืึทืจื•ื ื’ ืžื™ื˜ ื“ืึทื˜ืŸ ืื™ืŸ ืขื˜ืง Kubernetes ืงื ื•ื™ืœ ื’ืœื™ื™ึทืš (ืึธืŸ K8s API)

ื™ื ืงืจื™ืกื™ื ื’ืœื™, ืงืœื™ื™ืึทื ืฅ ื‘ืขื˜ืŸ ืื•ื ื“ื– ืฆื• ืฆื•ืฉื˜ืขืœืŸ ืึทืงืกืขืก ืฆื• ื“ื™ Kubernetes ืงื ื•ื™ืœ ืฆื• ืงืขื ืขืŸ ืฆื• ืึทืงืกืขืก ืกืขืจื•ื•ื™ืกืขืก ืื™ืŸ ื“ืขื ืงื ื•ื™ืœ: ืฆื• ืงืขื ืขืŸ ื’ืœื™ื™ึทืš ืคืึทืจื‘ื™ื ื“ืŸ ืฆื• ืขื˜ืœืขื›ืข ื“ืึทื˜ืึทื‘ื™ื™ืก ืึธื“ืขืจ ืกืขืจื•ื•ื™ืก, ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ืึท ื”ื™ื’ืข ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืžื™ื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื™ืŸ ื“ืขื ืงื ื•ื™ืœ ...

ืื•ื ื“ื–ืขืจ ื“ืขืจืคืึทืจื•ื ื’ ืžื™ื˜ ื“ืึทื˜ืŸ ืื™ืŸ ืขื˜ืง Kubernetes ืงื ื•ื™ืœ ื’ืœื™ื™ึทืš (ืึธืŸ K8s API)

ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืขืก ืื™ื– ืึท ื ื•ื™ื˜ ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ืคื•ืŸ ื“ื™ื™ืŸ ื”ื™ื’ืข ืžืึทืฉื™ืŸ ืฆื• ืึท ืกืขืจื•ื•ื™ืก memcached.staging.svc.cluster.local. ืžื™ืจ ืฆื•ืฉื˜ืขืœืŸ ื“ืขื ืคื™ื™ื™ืงื™ื™ื˜ ื ื™ืฆืŸ ืึท VPN ืื™ืŸ ื“ืขื ืงื ื•ื™ืœ ืฆื• ื•ื•ืึธืก ื“ืขืจ ืงืœื™ืขื ื˜ ืงืึทื ืขืงืฅ. ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืžื™ืจ ืžืขืœื“ืŸ ืกื•ื‘ื ืขืฅ ืคื•ืŸ ืคึผืึธื“ืก, ื‘ืึทื“ื™ื ื•ื ื’ืก ืื•ืŸ ืฉื˜ื•ืคึผืŸ ืงื ื•ื™ืœ ื“ื ืก ืฆื• ื“ืขื ืงืœื™ืขื ื˜. ืื–ื•ื™, ื•ื•ืขืŸ ืึท ืงืœื™ืขื ื˜ ืคืจื•ื•ื•ื˜ ืฆื• ืคืึทืจื‘ื™ื ื“ืŸ ืฆื• ื“ื™ ืกืขืจื•ื•ื™ืก memcached.staging.svc.cluster.local, ื“ื™ ื‘ืขื˜ืŸ ื’ื™ื™ื˜ ืฆื• ื“ื™ ืงื ื•ื™ืœ ื“ื ืก ืื•ืŸ ืื™ืŸ ืขื ื˜ืคืขืจ ื ืขืžื˜ ื“ื™ ืึทื“ืจืขืก ืคื•ืŸ ื“ืขื ื“ื™ื ืกื˜ ืคื•ืŸ ื“ื™ ืงื ื•ื™ืœ ืกืขืจื•ื•ื™ืก ื ืขืฅ ืึธื“ืขืจ ื“ื™ ืคึผืึธื“ ืึทื“ืจืขืก.

ืžื™ืจ ืงืึทื ืคื™ื’ื™ืขืจ K8s ืงืœืึทืกื˜ืขืจื– ื ื™ืฆืŸ kubeadm, ื•ื•ื• ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ืกืขืจื•ื•ื™ืก ืกื•ื‘ื ืขื˜ ืื™ื– 192.168.0.0/16, ืื•ืŸ ื“ื™ ื ืขืฅ ืคื•ืŸ ืคึผืึธื“ืก ืื™ื– 10.244.0.0/16. ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ืึทืœืฅ ืึทืจื‘ืขื˜ ื’ื•ื˜, ืึธื‘ืขืจ ืขืก ื–ืขื ืขืŸ ืึท ืคึผืึธืจ ืคื•ืŸ ืคื•ื ืงื˜ืŸ:

  • ืกื•ื‘ื ืขื˜ 192.168.*.* ืึธืคื˜ ื’ืขื ื™ืฆื˜ ืื™ืŸ ืงืœื™ืขื ื˜ ืึธืคื™ืก ื ืขื˜ื•ื•ืึธืจืงืก, ืื•ืŸ ืืคื™ืœื• ืžืขืจ ืึธืคื˜ ืื™ืŸ ื“ืขื•ื•ืขืœืึธืคึผืขืจืก ื”ื™ื™ื ื ืขื˜ื•ื•ืึธืจืงืก. ืื•ืŸ ื“ืขืžืึธืœื˜ ืžื™ืจ ื‘ืึทืงื•ืžืขืŸ ืงืึธื ืคืœื™ืงื˜: ื”ื™ื™ื ืจืึธื•ื˜ืขืจืก ืึทืจื‘ืขื˜ ืื•ื™ืฃ ื“ืขื ืกื•ื‘ื ืขื˜ ืื•ืŸ ื“ื™ ื•ื•ืคึผืŸ ืคึผื•ืฉื™ื– ื“ื™ ืกื•ื‘ื ืขืฅ ืคื•ืŸ ื“ืขื ืงื ื•ื™ืœ ืฆื• ื“ืขื ืงืœื™ืขื ื˜.
  • ืžื™ืจ ื”ืึธื‘ืŸ ืขื˜ืœืขื›ืข ืงืœืึทืกื˜ืขืจื– (ืคึผืจืึธื“ื•ืงืฆื™ืข, ื‘ื™ื ืข ืื•ืŸ / ืึธื“ืขืจ ืขื˜ืœืขื›ืข ื“ืขื•ื• ืงืœืึทืกื˜ืขืจื–). ื“ืขืจื ืึธืš, ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ืึทืœืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื–ื™ื™ ื•ื•ืขืœืŸ ื”ืึธื‘ืŸ ื“ื™ ื–ืขืœื‘ืข ืกื•ื‘ื ืขืฅ ืคึฟืึทืจ ืคึผืึธื“ืก ืื•ืŸ ื‘ืึทื“ื™ื ื•ื ื’ืก, ื•ื•ืึธืก ืงืจื™ื™ื™ืฅ ื’ืจื•ื™ืก ืฉื•ื•ืขืจื™ืงื™ื™ื˜ืŸ ืคึฟืึทืจ ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืก ืึทืจื‘ืขื˜ ืžื™ื˜ ืกืขืจื•ื•ื™ืกืขืก ืื™ืŸ ืขื˜ืœืขื›ืข ืงืœืึทืกื˜ืขืจื–.

ืžื™ืจ ื”ืึธื‘ืŸ ืœืึทื ื’ ืฆื•ืจื™ืง ืื ื’ืขื ื•ืžืขืŸ ื“ื™ ืคื™ืจ ืคื•ืŸ ื ื™ืฆืŸ ืคืึทืจืฉื™ื“ืขื ืข ืกื•ื‘ื ืขืฅ ืคึฟืึทืจ ื‘ืึทื“ื™ื ื•ื ื’ืก ืื•ืŸ ืคึผืึธื“ืก ืื™ืŸ ืื™ื™ืŸ ืคึผืจื•ื™ืขืงื˜ - ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ืึทื–ื•ื™ ืึทื– ืึทืœืข ืงืœืึทืกื˜ืขืจื– ื”ืึธื‘ืŸ ืคืึทืจืฉื™ื“ืขื ืข ื ืขื˜ื•ื•ืึธืจืงืก. ืึธื‘ืขืจ, ืขืก ื–ืขื ืขืŸ ืึท ื’ืจื•ื™ืก ื ื•ืžืขืจ ืคื•ืŸ ืงืœืึทืกื˜ืขืจื– ืื™ืŸ ืึธืคึผืขืจืึทืฆื™ืข ื•ื•ืึธืก ืื™ืš ื•ื•ืึธืœื˜ ื ื™ืฉื˜ ื•ื•ืขืœืŸ ืฆื• ืจืึธื•ืœื“ ืื™ื‘ืขืจ ืคึฟื•ืŸ ืงืจืึทืฆืŸ, ื•ื•ื™ื™ึทืœ ื–ื™ื™ ืœื•ื™ืคืŸ ืคื™ืœืข ื‘ืึทื“ื™ื ื•ื ื’ืก, ืกื˜ื™ื™ื˜ืคื•ืœ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื–, ืืื–"ื• ื•.

ืื•ืŸ ื“ืขืžืึธืœื˜ ืžื™ืจ ื’ืขืคืจืขื’ื˜ ื–ื™ืš: ื•ื•ื™ ืฆื• ื˜ื•ื™ืฉืŸ ื“ื™ ืกื•ื‘ื ืขื˜ ืื™ืŸ ืึท ื™ื’ื–ื™ืกื˜ื™ื ื’ ืงื ื•ื™ืœ?

ื–ื•ื›ืŸ ืคื•ืŸ ื“ื™ืกื™ื–ืฉืึทื ื–

ื“ื™ ืžืขืจืกื˜ ืคึผืจืึธืกื˜ ืคื™ืจ ืื™ื– ืฆื• ืจื™ืงืจื™ื™ื™ื˜ ืึทืœืข ืกืขืจื•ื•ื™ืกืขืก ืžื™ื˜ ื˜ื™ืคึผ ClusterIP. ื•ื•ื™ ืึทืŸ ืึธืคึผืฆื™ืข, ืงืขื ืขืŸ ืจืขืงืึธืžืขื ื“ื™ืจืŸ ืื•ืŸ ื“ืืก:

ื“ื™ ืคืืœื’ืขื ื“ืข ืคึผืจืึธืฆืขืก ื”ืื˜ ืึท ืคึผืจืึธื‘ืœืขื: ื ืึธืš ืึทืœืฅ ืงืึทื ืคื™ื’ื™ืขืจื“, ื“ื™ ืคึผืึธื“ืก ืงื•ืžืขืŸ ืึทืจื•ื™ืฃ ืžื™ื˜ ื“ื™ ืึทืœื˜ IP ื•ื•ื™ ืึท ื“ื ืก ื ืึทืžืขืกืขืจื•ื•ืขืจ ืื™ืŸ /etc/resolv.conf.
ื–ื™ื ื˜ ืื™ืš ื ืึธืš ื”ืื˜ ื ื™ืฉื˜ ื’ืขืคึฟื™ื ืขืŸ ื“ื™ ืœื™ื™ื–ื•ื ื’, ืื™ืš ื”ืื˜ ืฆื• ื‘ืึทืฉื˜ืขื˜ื™ืง ื“ื™ ื’ืื ืฆืข ืงื ื•ื™ืœ ืžื™ื˜ kubeadm ื‘ืึทืฉื˜ืขื˜ื™ืง ืื•ืŸ ืึธื ื”ื™ื™ื‘ืŸ ืขืก ื•ื•ื™ื“ืขืจ.

ืึธื‘ืขืจ ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ืคึผืึทืกื™ืง ืคึฟืึทืจ ืึทืœืขืžืขืŸ ... ื“ืึธ ื–ืขื ืขืŸ ืžืขืจ ื“ื™ื˜ื™ื™ืœื“ ื”ืงื“ืžื” ืคึฟืึทืจ ืื•ื ื“ื–ืขืจ ืคืึทืœ:

  • ืคืœืึทื ืึทืœ ืื™ื– ื’ืขื ื™ืฆื˜;
  • ืขืก ื–ืขื ืขืŸ ืงืœืึทืกื˜ืขืจื– ื‘ื™ื™ื“ืข ืื™ืŸ ื“ื™ ื•ื•ืืœืงื ืก ืื•ืŸ ืื•ื™ืฃ ื™ื™ึทื–ื ื•ื•ืึทืจื’;
  • ืื™ืš ื•ื•ืึธืœื˜ ื•ื•ื™ ืฆื• ื•ื™ืกืžื™ื™ื“ืŸ ืฉื™ื™ึทืขืš-ื“ื™ืคึผืœื•ื™ื™ื ื’ ืึทืœืข ืกืขืจื•ื•ื™ืกืขืก ืื™ืŸ ื“ืขื ืงื ื•ื™ืœ;
  • ืขืก ืื™ื– ืึท ื ื•ื™ื˜ ืฆื• ื˜ืึธืŸ ืึทืœืฅ ืžื™ื˜ ืึท ืžื™ื ื™ืžื•ื ื ื•ืžืขืจ ืคื•ืŸ ืคึผืจืึธื‘ืœืขืžืก;
  • Kubernetes ื•ื•ืขืจืกื™ืข ืื™ื– 1.16.6 (ืึธื‘ืขืจ, ื•ื•ื™ื™ึทื˜ืขืจ ืกื˜ืขืคึผืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืขื ืœืขืš ืคึฟืึทืจ ืื ื“ืขืจืข ื•ื•ืขืจืกื™ืขืก);
  • ื“ื™ ื”ื•ื™ืคึผื˜ ืึทืจื‘ืขื˜ ืื™ื– ืฆื• ืขื ืฉื•ืจ ืึทื– ืื™ืŸ ืึท ืงื ื•ื™ืœ ื“ื™ืคึผืœื•ื™ื“ ื ื™ืฆืŸ kubeadm ืžื™ื˜ ืึท ืกืขืจื•ื•ื™ืก ืกื•ื‘ื ืขื˜ 192.168.0.0/16, ืคืึทืจื‘ื™ื™ึทื˜ืŸ ืขืก ืžื™ื˜ 172.24.0.0/16.

ืื•ืŸ ืขืก ืื™ื– ืคึผื•ื ืงื˜ ืึทื–ื•ื™ ื’ืขืฉืขืŸ ืึทื– ืžื™ืจ ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ืœืึทื ื’ ืื™ื ื˜ืขืจืขืกื™ืจื˜ ืฆื• ื–ืขืŸ ื•ื•ืึธืก ืื•ืŸ ื•ื•ื™ ืื™ืŸ ืงื•ื‘ืขืจื ืขื˜ืขืก ืื™ื– ืกื˜ืึธืจื“ ืื™ืŸ ื•ื›ื•', ื•ื•ืึธืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื˜ืืŸ ืžื™ื˜ ืื™ื... ืึทื–ื•ื™ ืžื™ืจ ื’ืขื“ืึทื ืง: "ืคืืจื•ื•ืืก ื ื™ืฉื˜ ื ืึธืจ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ ื“ื™ ื“ืึทื˜ืŸ ืื™ืŸ ืขื˜ืง, ืจื™ืคึผืœื™ื™ืกื™ื ื’ ื“ื™ ืึทืœื˜ IP ืึทื“ืจืขืกืขืก (ืกื•ื‘ื ืขื˜) ืžื™ื˜ ื ื™ื™ึทืข? ยป

ื•ื•ื™ื™ืœ ื’ืขื–ื•ื›ื˜ ืคืึทืจื˜ื™ืง ืžื›ืฉื™ืจื™ื ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ืึทื˜ืŸ ืื™ืŸ ืขื˜ืง, ืžื™ืจ ื”ืึธื‘ืŸ ื ื™ื˜ ื’ืขืคึฟื•ื ืขืŸ ืขืคึผืขืก ื•ื•ืึธืก ื’ืึธืจ ืกืึทืœื•ื•ื“ ื“ื™ ืคึผืจืึธื‘ืœืขื. (ืื’ื‘, ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืกืŸ ื•ื•ืขื’ืŸ ืงื™ื™ืŸ ื™ื•ื˜ื™ืœืึทื˜ื™ื– ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ืึทื˜ืŸ ื’ืœื™ื™ึทืš ืื™ืŸ ืขื˜ืง, ืžื™ืจ ื•ื•ืึธืœื˜ ืึธืคึผืฉืึทืฆืŸ ื“ื™ ืœื™ื ืงืก.) ืึธื‘ืขืจ, ืึท ื’ื•ื˜ ืกื˜ืึทืจื˜ื™ื ื’ ืคื•ื ื˜ ืื™ื– ืขื˜ืงื“ื”ืขืœืคืขืจ ืคึฟื•ืŸ OpenShift (ื“ืึทื ืง ืฆื• ื–ื™ื™ืŸ ืžื—ื‘ืจื™ื!).

ื“ืขื ื ื•ืฆืŸ ืงืขื ืขืŸ ืคืึทืจื‘ื™ื ื“ืŸ ืฆื• ืขื˜ืง ื ื™ืฆืŸ ืกืขืจื˜ื™ืคื™ืงืึทืฅ ืื•ืŸ ืœื™ื™ืขื ืขืŸ ื“ืึทื˜ืŸ ืคึฟื•ืŸ ื“ืึธืจื˜ ื ื™ืฆืŸ ืงืึทืžืึทื ื“ื– ls, get, dump.

ืœื™ื™ื’ ืขื˜ืงื“ื”ืขืœืคึผืขืจ

ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ื’ืขื“ืึทื ืง ืื™ื– ืœืึทื“ื–ืฉื™ืงืึทืœ: "ื•ื•ืึธืก ืกื˜ืึธืคึผืคึผื™ื ื’ ืื™ืจ ืคื•ืŸ ืึทื“ื™ื ื’ ื“ืขื ื ื•ืฆืŸ ื“ื•ืจืš ืึทื“ื™ื ื’ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ื“ืึทื˜ืŸ ืฆื• ืขื˜ืง?"

ืขืก ืื™ื– ื’ืขื•ื•ืืจืŸ ืึท ืžืึทื“ืึทืคื™ื™ื“ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ืขื˜ืงื“ื”ืขืœืคึผืขืจ ืžื™ื˜ ืฆื•ื•ื™ื™ ื ื™ื™ึทืข ืคืึทื ื’ืงืฉืึทื ื– changeServiceCIDR ะธ changePodCIDR. ืื•ื™ืฃ ืื™ืจ ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ื“ื™ ืงืึธื“ ื“ืึธ.

ื•ื•ืึธืก ื˜ืึธืŸ ื“ื™ ื ื™ื™ึทืข ืคึฟืขื™ึดืงื™ื™ื˜ืŸ? ืึทืœื’ืขืจื™ื“ืึทื changeServiceCIDR:

  • ืฉืึทืคึฟืŸ ืึท ื“ืขืกืขืจื™ืึทืœื™ื–ืขืจ;
  • ืฆื•ื ื•ื™ืคื ืขืžืขืŸ ืึท ืจืขื’ื•ืœืขืจ ืื•ื™ืกื“ืจื•ืง ืฆื• ืคืึทืจื‘ื™ื™ึทื˜ืŸ CIDR;
  • ืžื™ืจ ื’ื™ื™ืŸ ื“ื•ืจืš ืึทืœืข ืกืขืจื•ื•ื™ืกืขืก ืžื™ื˜ ื“ื™ ClusterIP ื˜ื™ืคึผ ืื™ืŸ ื“ืขื ืงื ื•ื™ืœ:
    • ื“ืขืงืึธื“ืข ื“ื™ ื•ื•ืขืจื˜ ืคื•ืŸ ืขื˜ืง ืื™ืŸ ืึท ื’ื™ื™ืŸ ื›ื™ื™ืคืขืฅ;
    • ื ื™ืฆืŸ ืึท ืจืขื’ื•ืœืขืจ ืื•ื™ืกื“ืจื•ืง ืžื™ืจ ืคืึทืจื‘ื™ื™ึทื˜ืŸ ื“ื™ ืขืจืฉื˜ืขืจ ืฆื•ื•ื™ื™ ื‘ื™ื˜ืขืก ืคื•ืŸ ื“ื™ ืึทื“ืจืขืก;
    • ื‘ืึทืฉื˜ื™ืžืขืŸ ื“ื™ ืกืขืจื•ื•ื™ืก ืึทืŸ IP ืึทื“ืจืขืก ืคื•ืŸ ื“ื™ ื ื™ื™ึทืข ืกื•ื‘ื ืขื˜;
    • ืฉืึทืคึฟืŸ ืึท ืกื™ืจื™ืึทืœื™ื–ืขืจ, ื’ืขืจ ื“ื™ Go ื›ื™ื™ืคืขืฅ ืื™ืŸ ืคึผืจืึธื˜ืึธื‘ื•ืฃ, ืฉืจื™ื™ึทื‘ืŸ ื ื™ื™ึทืข ื“ืึทื˜ืŸ ืฆื• ืขื˜ืง.

ืคื•ื ืงืฆื™ืึธื ื™ืจืŸ changePodCIDR ื™ืกืขื ืฉืึทืœื™ ืขื ืœืขืš changeServiceCIDR - ื ืึธืจ ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ ืขื“ื™ื˜ื™ื ื’ ื“ื™ ืกืขืจื•ื•ื™ืก ื‘ืึทืฉืจื™ื™ึทื‘ื•ื ื’, ืžื™ืจ ื˜ืึธืŸ ื“ืึธืก ืคึฟืึทืจ ื“ื™ ื ืึธื“ืข ืื•ืŸ ื˜ื•ื™ืฉืŸ .spec.PodCIDR ืฆื• ืึท ื ื™ื™ึทืข ืกื•ื‘ื ืขื˜.

ืคื™ืจ

ื˜ื•ื™ืฉืŸ ื“ื™ื ืกื˜ CIDR

ื“ืขืจ ืคึผืœืึทืŸ ืคึฟืึทืจ ื™ืžืคึผืœืึทืžืขื ื™ื ื’ ื“ื™ ืึทืจื‘ืขื˜ ืื™ื– ื–ื™ื™ืขืจ ืคึผืฉื•ื˜, ืึธื‘ืขืจ ืขืก ื™ื ื•ื•ืึทืœื•ื•ื– ื“ืึทื•ื ื˜ื™ื™ื ื‘ืฉืขืช ืึทืœืข ืคึผืึธื“ืก ืื™ืŸ ื“ืขื ืงื ื•ื™ืœ ื–ืขื ืขืŸ ืจื™ืงืจื™ื™ื™ื˜ื™ื“. ื ืึธืš ื“ื™ืกืงืจื™ื™ื‘ื™ื ื’ ื“ื™ ื”ื•ื™ืคึผื˜ ืกื˜ืขืคึผืก, ืžื™ืจ ื•ื•ืขืœืŸ ืื•ื™ืš ื˜ื™ื™ืœืŸ ื’ืขื“ืื ืงืขืŸ ื•ื•ืขื’ืŸ ื•ื•ื™, ืื™ืŸ ื˜ืขืึธืจื™ืข, ื“ื™ ื“ืึทื•ื ื˜ื™ื™ื ืงืขื ืขืŸ ื–ื™ื™ืŸ ืžื™ื ืึทืžื™ื™ื–ื“.

ืคึผืจื™ืคึผืขืจืึทื˜ืึธืจื™ ืกื˜ืขืคึผืก:

  • ื™ื ืกื˜ืึธืœื™ื ื’ ื“ื™ ื ื™ื™ื˜ื™ืง ื•ื•ื™ื™ื›ื•ื•ืืจื’ ืื•ืŸ ืึทืกืขืžื‘ืึทืœ ื“ื™ ืคึผืึทื˜ืฉื˜ ืขื˜ืงื“ื”ืขืœืคึผืขืจ;
  • ื‘ืึทืงืึทืคึผ ืขื˜ืง ืื•ืŸ /etc/kubernetes.

ืงื•ืจืฅ ืงืึทืžืฃ ืคึผืœืึทืŸ ืคึฟืึทืจ ื˜ืฉืึทื ื’ื™ื ื’ ืกืขืจื•ื•ื™ืก ืกื™ื“ืจ:

  • ื˜ืฉืึทื ื’ื™ื ื’ ื“ื™ ืึทืคึผื™ืกืขืจื•ื•ืขืจ ืื•ืŸ ืงืึธื ื˜ืจืึธืœืœืขืจ-ืคืึทืจื•ื•ืึทืœื˜ืขืจ ืžืึทื ืึทืคืขืกืฅ;
  • ืจืขื™ืกื•ื•ืก ืคื•ืŸ ืกืขืจื˜ื™ืคื™ืงืึทืฅ;
  • ื˜ืฉืึทื ื’ื™ื ื’ ClusterIP ื‘ืึทื“ื™ื ื•ื ื’ืก ืื™ืŸ ืขื˜ืง;
  • ืจื™ืกื˜ืึทืจื˜ ืึทืœืข ืคึผืึธื“ืก ืื™ืŸ ื“ืขื ืงื ื•ื™ืœ.

ื“ื™ ืคืืœื’ืขื ื“ืข ืื™ื– ืึท ื’ืึทื ืฅ ืกื™ืงื•ื•ืึทื ืก ืคื•ืŸ ืึทืงืฉืึทื ื– ืื™ืŸ ื“ืขื˜ืึทืœ.

1. ื™ื ืกื˜ืึทืœื™ืจืŸ ืขื˜ืง-ืงืœื™ืขื ื˜ ืคึฟืึทืจ ื“ืึทื˜ืŸ ื“ืึทืžืคึผ:

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 ืึทืจื•ื™ืกื’ืขื‘ืŸ ืกืขืจื˜ื™ืคื™ืงืึทืฅ ืคึฟืึทืจ ืึทืคึผื™ืกืขืจื•ื•ืขืจ (ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜), ื–ื™ื™ ื“ืึทืจืคึฟืŸ ืฆื• ื–ื™ื™ืŸ ืจื™ืกื•ื•ื“:

  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. ืœืึธืžื™ืจ ื•ื™ืกืžืขืงืŸ ื“ื™ ืึทืœื˜ ืงืจื˜ ืื•ืŸ ืฉืœื™ืกืœ, ื•ื•ื™ื™ึทืœ ืึธืŸ ื“ืขื ื“ื™ ื ื™ื™ึท ื‘ืึทื•ื•ื™ื™ึทื–ืŸ ื•ื•ืขื˜ ื ื™ืฉื˜ ื–ื™ื™ืŸ ืืจื•ื™ืก:
    rm /etc/kubernetes/pki/apiserver.{key,crt}
  4. ืœืึธืžื™ืจ ืึทืจื•ื™ืกื’ืขื‘ืŸ ืกืขืจื˜ื™ืคื™ืงืึทืฅ ืคึฟืึทืจ ื“ื™ ืึทืคึผื™ ืกืขืจื•ื•ืขืจ:
    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. ื ืึธืš ืฉื™ื™ึทืขืš-ืึทืจื•ื™ืกื’ืขื‘ืŸ ื“ื™ ืึทืคึผื™ ืกืขืจื•ื•ืขืจ ื‘ืึทื•ื•ื™ื™ึทื–ืŸ, ืจื™ืกื˜ืึทืจื˜ ื–ื™ื™ึทืŸ ืงืึทื ื˜ื™ื™ื ืขืจ:
    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. ื–ืืœ ืก ืคืึทืจืจื™ื›ื˜ืŸ ConfigMap ืก ืื™ืŸ ื“ื™ ื ืึทืžืขืกืคึผืึทืกืข 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 ืึทื“ืจืขืก ืื™ื– ืคืืจืขื ื“ืขืจื˜, ืขืก ืื™ื– ื ื™ื™ื˜ื™ืง ืฆื• ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ ื“ื™ ืงื•ื‘ืขืœืขื˜ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืื•ื™ืฃ ืึทืœืข ื ืึธื•ื“ื–:
    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 ืื™ืŸ ืขื˜ืงื“ื”ืขืœืคึผืขืจ, ื•ื•ืึธืก ื•ื•ืขื˜ ื ื™ืฉื˜ ืžืึธื“ื™ืคื™ืฆื™ืจืŸ ื“ื™ kube-dns ื“ื™ื ืกื˜.
  3. ืคืึทืจื‘ื™ื™ึทื˜ืŸ ื“ื™ ืึทื“ืจืขืก ืื™ืŸ ืึทืœืข ืงื•ื‘ืขืœืขืฅ ClusterDNS ืฆื• ืึท ื ื™ื™ึทืข, ื‘ืฉืขืช ื“ื™ ืึทืœื˜ ื“ื™ื ืกื˜ ื•ื•ืขื˜ ืคืึธืจื–ืขืฆืŸ ืฆื• ืึทืจื‘ืขื˜ืŸ ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืกืœื™ ืžื™ื˜ ื“ื™ ื ื™ื™ึทืข.
  4. ื•ื•ืึทืจื˜ืŸ ื‘ื™ื– ื“ื™ ืคึผืึธื“ืก ืžื™ื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืจืึธื•ืœื“ ืื™ื‘ืขืจ ื–ื™ืš ืคึฟืึทืจ ื ืึทื˜ื™ืจืœืขืš ืกื™ื‘ื•ืช ืึธื“ืขืจ ืื™ืŸ ืึท ืžืกื›ื™ื ืฆื™ื™ื˜.
  5. ื•ื™ืกืžืขืงืŸ ื“ื™ื ืกื˜ kube-dns-tmp ืื•ืŸ ื˜ื•ื™ืฉืŸ serviceSubnetCIDR ืคึฟืึทืจ ื“ื™ ืงื•ื‘ืข-ื“ื ืก ื“ื™ื ืกื˜.

ื“ืขืจ ืคึผืœืึทืŸ ื•ื•ืขื˜ ืœืึธื–ืŸ ืื™ืจ ืฆื• ืžื™ื ืึทืžื™ื™ื– ื“ืึทื•ื ื˜ื™ื™ื ืฆื• ~ ืึท ืžื™ื ื•ื˜ - ืคึฟืึทืจ ื“ืขืจ ื’ืขื“ื•ื™ืขืจ ืคื•ืŸ ื“ื™ ื‘ืึทื–ื™ื™ึทื˜ื™ืงื•ื ื’ ืคื•ืŸ ื“ื™ ืกืขืจื•ื•ื™ืก kube-dns-tmp ืื•ืŸ ื˜ืฉืึทื ื’ื™ื ื’ ื“ื™ ืกื•ื‘ื ืขื˜ ืคึฟืึทืจ ื“ื™ ื“ื™ื ืกื˜ kube-dns.

ืžืึธื“ื™ืคื™ืงืึทื˜ื™ืึธืŸ ืคึผืึธื“ื ืขื˜ื•ื•ืึธืจืง

ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ื˜, ืžื™ืจ ื‘ืึทืฉืœืึธืกืŸ ืฆื• ืงื•ืงืŸ ื•ื•ื™ ืฆื• ืžืึธื“ื™ืคื™ืฆื™ืจืŸ ืคึผืึธื“ื ืขื˜ื•ื•ืึธืจืง ืžื™ื˜ ื“ื™ ืจื™ื–ืึทืœื˜ื™ื ื’ ืขื˜ืงื“ื”ืขืœืคึผืขืจ. ื“ื™ ืกื™ืงื•ื•ืึทื ืก ืคื•ืŸ ืึทืงืฉืึทื ื– ืื™ื– ื•ื•ื™ ื’ื™ื™ื˜:

  • ืคื™ืงืกื™ืจ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทื ื– ืื™ืŸ kube-system;
  • ืคื™ืงืกื™ืจ ื“ื™ ืงื•ื‘ืข-ืงืึธื ื˜ืจืึธืœืœืขืจ-ืคืึทืจื•ื•ืึทืœื˜ืขืจ ื‘ืึทืฉื™ื™ึทืžืคึผืขืจืœืขืš;
  • ื˜ื•ื™ืฉืŸ ืคึผืึธื“ืกื™ื“ืจ ื’ืœื™ื™ึทืš ืื™ืŸ ืขื˜ืง;
  • ืจืขื‘ืึธืึธื˜ ืึทืœืข ืงื ื•ื™ืœ ื ืึธื•ื“ื–.

ืื™ืฆื˜ ืžืขืจ ื•ื•ืขื’ืŸ ื“ื™ ืึทืงืฉืึทื ื–:

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. ืคืึทืจื‘ื™ื™ึทื˜ืŸ ืคึผืึธื“ืกื™ื“ืจ ื“ื•ืจืš ืžืึทื›ืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ื’ืœื™ื™ึทืš ืฆื• ืขื˜ืง:

./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 ื•ื•ืขื˜ ื ื™ืฉื˜ ืงืขื ืขืŸ ืฆื• ืึธื ื”ื™ื™ื‘ืŸ, ืื•ืŸ ืคึผืึธื“ืก ืื™ืŸ ื“ืขื ืงื ื•ื™ืœ ื•ื•ืขื˜ ื ื™ืฉื˜ ื–ื™ื™ืŸ ืกืงืขื“ื–ืฉื•ืœื“.

ืื™ืŸ ืคืึทืงื˜, ื˜ืฉืึทื ื’ื™ื ื’ ืคึผืึธื“ืกื™ื“ืจ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื˜ืืŸ ืืคื™ืœื• ืกื™ืžืคึผืœืขืจ (ืœืžืฉืœ, ืึทื–ื•ื™). ืึธื‘ืขืจ ืžื™ืจ ื’ืขื•ื•ืืœื˜ ืฆื• ืœืขืจื ืขืŸ ื•ื•ื™ ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ืขื˜ืง ื’ืœื™ื™ืš, ื•ื•ื™ื™ึทืœ ืขืก ื–ืขื ืขืŸ ืงืึทืกืขืก ื•ื•ืขืŸ ืขื“ื™ื˜ื™ื ื’ Kubernetes ืึทื‘ื“ื–ืฉืขืงืฅ ืื™ืŸ ืขื˜ืง - ื“ืขืจ ื‘ืœื•ื™ื– ืžืขื’ืœืขืš ื•ื•ืึทืจื™ืึทื ื˜. (ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื™ืจ ืงืขื ืขืŸ ื ื™ืฉื˜ ื ืึธืจ ื˜ื•ื™ืฉืŸ ื“ื™ ืกืขืจื•ื•ื™ืก ืคืขืœื“ ืึธืŸ ื“ืึทื•ื ื˜ื™ื™ื spec.clusterIP.)

ื’ืึทื ืฅ

ื“ืขืจ ืึทืจื˜ื™ืงืœ ื“ื™ืกืงื•ื˜ื™ืจื˜ ื“ื™ ืžืขื’ืœืขื›ืงื™ื™ื˜ ืคื•ืŸ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ืึทื˜ืŸ ืื™ืŸ ืขื˜ืง ื’ืœื™ื™ึทืš, ื“.ื”. ื‘ื™ื™ืคึผืึทืกื™ื ื’ ื“ื™ Kubernetes API. ืžืืœ ื“ืขื ืฆื•ื’ืึทื ื’ ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื˜ืึธืŸ "ื˜ืจื™ืงื™ ื˜ื™ื ื’ื–." ืžื™ืจ ื˜ืขืกื˜ืขื“ ื“ื™ ืึทืคึผืขืจื™ื™ืฉืึทื ื– ื’ืขื’ืขื‘ืŸ ืื™ืŸ ื“ืขื ื˜ืขืงืกื˜ ืื•ื™ืฃ ืคืึทืงื˜ื™ืฉ ืง8ืก ืงืœืึทืกื˜ืขืจื–. ืึธื‘ืขืจ, ื–ื™ื™ืขืจ ืกื˜ืึทื˜ื•ืก ืคื•ืŸ ื’ืจื™ื™ื˜ืงื™ื™ึทื˜ ืคึฟืึทืจ ื•ื•ื™ื™ื“ืกืคึผืจืขื“ ื ื•ืฆืŸ ืื™ื– PoC (ื“ืขืจื•ื•ื™ื™ึทื– ืคื•ืŸ ื‘ืึทื’ืจื™ืฃ). ื“ืขืจื™ื‘ืขืจ, ืื•ื™ื‘ ืื™ืจ ื•ื•ื™ืœืŸ ืฆื• ื ื•ืฆืŸ ืึท ืžืึทื“ืึทืคื™ื™ื“ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืขื˜ืงื“ื”ืขืœืคึผืขืจ ื ื•ืฆืŸ ืื•ื™ืฃ ื“ื™ื™ืŸ ืงืœืึทืกื˜ืขืจื–, ื˜ืึธืŸ ื“ืึธืก ืื•ื™ืฃ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข ืจื™ื–ื™ืงื™ืจืŸ.

ืคึผืก

ืœื™ื™ืขื ืขืŸ ืื•ื™ืš ืื•ื™ืฃ ืื•ื ื“ื–ืขืจ ื‘ืœืึธื’:

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’