āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻāĻŋāĻ° āĻ
āĻ¨ā§āĻŦāĻžāĻĻ āĻā§āĻ°ā§āĻ¸ āĻļā§āĻ°ā§āĻ° āĻĒā§āĻ°āĻžāĻā§āĻāĻžāĻ˛ā§ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻāĻŋ āĻĒāĻĄāĻŧāĻā§āĻ¨, āĻāĻĒāĻ¨āĻŋ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻŋāĻā§ āĻļā§āĻ¨ā§āĻā§āĻ¨ (āĻāĻŦāĻ āĻ¯āĻĻāĻŋ āĻ¨āĻž āĻšāĻ¯āĻŧ āĻ¤āĻŦā§ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻžāĻ¨ā§ āĻā§āĻāĻžāĻŦā§ āĻļā§āĻˇ āĻāĻ°āĻ˛ā§āĻ¨?) āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻāĻ¸āĻ˛ā§ āĻā§? āĻāĻ
āĻ¸āĻ¤ā§āĻ¯āĻŋ āĻŦāĻ˛āĻ¤ā§, āĻāĻŽāĻŋ 100% āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻ¨āĻāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻŋ āĻŽāĻ¨ā§ āĻāĻ°āĻŋ āĻ
āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻ
āĻāĻļā§ āĻāĻ¨āĻ¨ āĻāĻ°āĻž āĻāĻŦāĻ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ā§āĻ° āĻŦāĻŋāĻŽā§āĻ°ā§āĻ¤āĻ¤āĻžāĻ° āĻ
āĻ¨ā§āĻ āĻ¸ā§āĻ¤āĻ°ā§āĻ° āĻ
āĻ§ā§āĻ¨ā§ āĻāĻ¸āĻ˛ā§ āĻā§ āĻāĻāĻā§ āĻ¤āĻž āĻĻā§āĻāĻ¤ā§ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧāĨ¤ āĻ¤āĻžāĻ āĻļā§āĻ§ā§ āĻŽāĻāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻ¸ā§āĻ¨ āĻĻā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻ¯āĻžāĻ āĻāĻāĻāĻŋ āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ "āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°" āĻāĻ¸āĻ˛ā§ āĻā§āĻŽāĻ¨ āĻĻā§āĻāĻžāĻ¯āĻŧāĨ¤ (āĻāĻāĻŋ āĻāĻ° āĻā§āĻ¯āĻŧā§ āĻ
āĻ¨ā§āĻ āĻ¸āĻšāĻ āĻšāĻŦā§
āĻāĻŽāĻŋ āĻ§āĻ°ā§ āĻ¨āĻŋāĻā§āĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸, āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ āĻāĻŦāĻ āĻāĻ¨ā§āĻā§āĻāĻ¨āĻžāĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻā§āĻāĻžāĻ¨ āĻāĻā§āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻāĻžāĻ¨ā§ āĻ¯āĻž āĻāĻŋāĻā§ āĻāĻĨāĻž āĻŦāĻ˛āĻŋ āĻ¤āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻŦā§āĻˇāĻŖāĻž/āĻļāĻŋāĻā§āĻˇāĻžāĻ° āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ā§, āĻāĻ° āĻā§āĻ¨ā§āĻāĻŋ āĻā§āĻĒāĻžāĻĻāĻ¨ā§ āĻ°āĻžāĻāĻŦā§āĻ¨ āĻ¨āĻž!
āĻāĻāĻžāĻ°āĻāĻŋāĻ
āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻā§ āĻ
āĻ¨ā§āĻ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻ
āĻ¨ā§āĻ¸āĻžāĻ°ā§
āĻāĻāĻžāĻ¨ā§ āĻ
āĻ¨ā§āĻ¤āĻ¤ āĻāĻāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻĻā§āĻāĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻ¤āĻžāĻĻā§āĻ° āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻāĻā§ āĻāĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻŦāĨ¤ āĻāĻŽāĻŋ āĻŦāĻ˛āĻ¤ā§ āĻāĻžāĻ āĻ¯ā§ āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ āĻāĻŋāĻ¨āĻŋāĻ¸āĻāĻŋāĻā§ āĻ¯ā§āĻā§āĻ¤āĻŋāĻ¸āĻā§āĻāĻ¤āĻāĻžāĻŦā§ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻŦāĻ˛āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¤āĻŋāĻ¨āĻāĻŋ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ āĻŋāĻ¤:
- āĻā§āĻŦāĻ˛ā§āĻ
- kube-apiserver (āĻ¯āĻž etcd-āĻāĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§ - āĻāĻ° āĻĄāĻžāĻāĻžāĻŦā§āĻ¸)
- āĻāĻ¨ā§āĻā§āĻāĻ¨āĻžāĻ° āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽ (āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻĄāĻāĻžāĻ°)
āĻāĻ¸ā§āĻ¨ āĻĻā§āĻāĻŋ āĻ¤āĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ āĻāĻŋ āĻŦāĻ˛ā§ (
āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¨ā§āĻĄā§ āĻāĻ˛āĻŽāĻžāĻ¨ āĻāĻāĻāĻŋ āĻāĻā§āĻ¨ā§āĻāĨ¤ āĻāĻāĻŋ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°ā§ āĻ¯ā§ āĻāĻ¨ā§āĻā§āĻāĻ¨āĻžāĻ°āĻā§āĻ˛āĻŋ āĻĒāĻĄā§ āĻāĻ˛āĻā§āĨ¤
āĻ¯āĻĨā§āĻˇā§āĻ āĻ¸āĻšāĻ āĻļā§āĻ¨āĻžāĻā§āĻā§. āĻāĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ§āĻžāĻ°āĻ āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽ (āĻ§āĻžāĻ°āĻ āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽ)?
āĻāĻāĻāĻŋ āĻāĻ¨ā§āĻā§āĻāĻ¨āĻžāĻ° āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽ āĻšāĻ˛ āĻāĻāĻāĻŋ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽ āĻ¯āĻž āĻāĻ¨ā§āĻā§āĻāĻ¨āĻžāĻ° āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĄāĻŋāĻāĻžāĻāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻā§āĻŦāĻ āĻ¤āĻĨā§āĻ¯āĻŦāĻšā§āĻ˛. āĻ¤āĻŦā§ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻĄāĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻšāĻ¨ āĻ¤āĻŦā§ āĻāĻāĻŋ āĻā§ āĻāĻ°ā§ āĻ¸ā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ§āĻžāĻ°āĻŖāĻž āĻĨāĻžāĻāĻž āĻāĻāĻŋāĻ¤āĨ¤ (āĻāĻ¨ā§āĻā§āĻāĻ¨āĻžāĻ° āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽ āĻāĻŦāĻ āĻā§āĻŦā§āĻ˛ā§āĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĻāĻžāĻ¯āĻŧāĻŋāĻ¤ā§āĻŦā§āĻ° āĻŦāĻŋāĻā§āĻā§āĻĻā§āĻ° āĻŦāĻŋāĻŦāĻ°āĻŖ āĻāĻ¸āĻ˛ā§ āĻŦā§āĻļ āĻ¸ā§āĻā§āĻˇā§āĻŽ āĻāĻŦāĻ āĻāĻŽāĻŋ āĻāĻāĻžāĻ¨ā§ āĻ¸ā§āĻā§āĻ˛āĻŋāĻ¤ā§ āĻ¯āĻžāĻŦ āĻ¨āĻžāĨ¤)
Đ API āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°?
API āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻšāĻ˛ Kubernetes āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛ āĻĒā§āĻ¯āĻžāĻ¨ā§āĻ˛ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¯āĻž Kubernetes API āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°ā§āĨ¤ API āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻšāĻ˛ Kubernetes āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛ āĻĒā§āĻ¯āĻžāĻ¨ā§āĻ˛ā§āĻ° āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻ¸āĻžāĻāĻĄ
āĻ¯ā§ āĻā§āĻ Kubernetes āĻāĻ° āĻ¸āĻžāĻĨā§ āĻāĻŋāĻā§ āĻāĻ°ā§āĻā§ āĻ¤āĻžāĻā§ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻŦāĻž kubectl āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ API āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻāĻžāĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻā§āĻ¸ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻā§āĻ¸ - āĻāĻ āĻŽāĻ¸ā§āĻ¤āĻŋāĻˇā§āĻ āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻ¸āĻāĻ˛ā§āĻ āĻāĻžāĻ¨āĻŋ āĻāĻŦāĻ āĻāĻžāĻ˛ā§āĻŦāĻžāĻ¸āĻŋ (?) āĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĻŋāĻ āĻāĻ¨āĻĢā§āĻ°āĻžāĻ¸ā§āĻā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻāĻ°ā§āĨ¤ āĻāĻāĻž āĻ¸ā§āĻĒāĻˇā§āĻ āĻŽāĻ¨ā§ āĻšāĻā§āĻā§ āĻ¯ā§ API āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ā§ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤āĨ¤
āĻĒā§āĻ°ā§āĻŦāĻļāĻ°ā§āĻ¤
- āĻ°ā§āĻ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻ¸āĻš āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻŦāĻž āĻļāĻžāĻ°ā§āĻ°āĻŋāĻ āĻŽā§āĻļāĻŋāĻ¨ (āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§āĻļāĻŋāĻ¨ā§ āĻāĻŦā§āĻ¨ā§āĻā§ 18.04 āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻāĻŋ)āĨ¤
- āĻāĻŦāĻ āĻ¸āĻŦ!
āĻŦāĻŋāĻ°āĻā§āĻ¤āĻŋāĻāĻ° āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨
āĻāĻŽāĻ°āĻž āĻ¯ā§ āĻŽā§āĻļāĻŋāĻ¨āĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ āĻ¤āĻžāĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĄāĻāĻžāĻ° āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ (āĻĄāĻāĻžāĻ° āĻāĻŦāĻ āĻāĻ¨ā§āĻā§āĻāĻ¨āĻžāĻ°āĻā§āĻ˛āĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§ āĻ¸ā§ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻŽāĻŋ āĻŦāĻŋāĻļāĻĻā§ āĻ¯ā§āĻ¤ā§ āĻ¯āĻžāĻā§āĻāĻŋ āĻ¨āĻž; āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻā§āĻ°āĻšā§ āĻšāĻ¨ āĻ¤āĻŦā§ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻ°āĻ¯āĻŧā§āĻā§ apt
:
$ sudo apt install docker.io
$ sudo systemctl start docker
āĻāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋāĻā§āĻ˛āĻŋ āĻĒā§āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻ¸āĻ˛ā§, āĻāĻŽāĻžāĻĻā§āĻ° "āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°" āĻāĻ° āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ kubelet
, āĻ¯ā§āĻšā§āĻ¤ā§ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ kubelet
. āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°āĻāĻŋ āĻāĻžāĻ˛ā§ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻĒāĻ°ā§ āĻ¤āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻāĻžāĻ¯ā§āĻ āĻāĻ°āĻ¤ā§, āĻāĻŽāĻ°āĻžāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ kubectl
.
$ curl -L https://dl.k8s.io/v1.18.5/kubernetes-server-linux-amd64.tar.gz > server.tar.gz
$ tar xzvf server.tar.gz
$ cp kubernetes/server/bin/kubelet .
$ cp kubernetes/server/bin/kubectl .
$ ./kubelet --version
Kubernetes v1.18.5
āĻļā§āĻ§ā§ āĻĻā§āĻĄāĻŧāĻžāĻ˛ā§ āĻāĻŋ āĻšāĻŦā§ kubelet
?
$ ./kubelet
F0609 04:03:29.105194 4583 server.go:254] mkdir /var/lib/kubelet: permission denied
kubelet
āĻ°ā§āĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻŦā§āĻļ āĻ¯ā§āĻā§āĻ¤āĻŋāĻ, āĻ¯ā§āĻšā§āĻ¤ā§ āĻ¤āĻžāĻā§ āĻĒā§āĻ°ā§ āĻ¨ā§āĻĄ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤ āĻāĻ¸ā§āĻ¨ āĻāĻ° āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻĻā§āĻāĻŋ:
$ ./kubelet -h
<ŅĐģиŅĐēĐžĐŧ ĐŧĐŊĐžĐŗĐž ŅŅŅĐžĐē, ŅŅОйŅ ŅаСĐŧĐĩŅŅиŅŅ СдĐĩŅŅ>
$ ./kubelet -h | wc -l
284
āĻŦāĻžāĻš, āĻ āĻ¨ā§āĻ āĻ āĻĒāĻļāĻ¨! āĻ¸ā§āĻāĻžāĻā§āĻ¯āĻŦāĻļāĻ¤, āĻāĻŽāĻžāĻĻā§āĻ° āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¤āĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻĻāĻŽā§āĻĒāĻ¤āĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻāĻāĻžāĻ¨ā§ āĻāĻāĻāĻŋ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻ¯āĻž āĻāĻŽāĻ°āĻž āĻāĻā§āĻ°āĻšā§:
--pod-manifest-path string
āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻĒāĻĄā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĢāĻžāĻāĻ˛ āĻ§āĻžāĻ°āĻŖāĻāĻžāĻ°ā§ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĻ° āĻĒāĻžāĻĨ āĻŦāĻž āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻĒāĻĄ āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻāĻžāĻ°ā§ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻĒāĻžāĻĨāĨ¤ āĻĄāĻ āĻĻāĻŋāĻ¯āĻŧā§ āĻļā§āĻ°ā§ āĻšāĻāĻ¯āĻŧāĻž āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋ āĻāĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§ˇ (āĻ
āĻĒā§āĻ°āĻāĻ˛āĻŋāĻ¤: --config āĻŦāĻŋāĻāĻ˛ā§āĻĒā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻā§āĻŦā§āĻ˛ā§āĻā§ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻĢāĻžāĻāĻ˛āĻāĻŋāĻ¤ā§ āĻāĻ āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻŋ āĻ¸ā§āĻ āĻāĻ°āĻž āĻāĻŦāĻļā§āĻ¯āĻāĨ¤ āĻāĻ°āĻ āĻ¤āĻĨā§āĻ¯ā§āĻ° āĻāĻ¨ā§āĻ¯, āĻĻā§āĻā§āĻ¨
āĻāĻ āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻ
āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧ
āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻŽāĻ°āĻž āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻĒāĻĄā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŦ āĻāĻŦāĻ āĻ°āĻžāĻ¨ āĻāĻ°āĻŦ kubelet
:
$ mkdir pods
$ sudo ./kubelet --pod-manifest-path=pods
āĻ¤āĻžāĻ°āĻĒāĻ°, āĻ āĻ¨ā§āĻ¯ āĻāĻžāĻ°ā§āĻŽāĻŋāĻ¨āĻžāĻ˛/tmux āĻāĻāĻ¨ā§āĻĄā§āĻ¤ā§/āĻ¯āĻžāĻ āĻšā§āĻ āĻ¨āĻž āĻā§āĻ¨, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻĒāĻĄ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŦ:
$ cat <<EOF > pods/hello.yaml
apiVersion: v1
kind: Pod
metadata:
name: hello
spec:
containers:
- image: busybox
name: hello
command: ["echo", "hello world!"]
EOF
kubelet
āĻāĻŋāĻā§ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž āĻ˛āĻŋāĻāĻ¤ā§ āĻļā§āĻ°ā§ āĻāĻ°ā§ āĻāĻŦāĻ āĻŽāĻ¨ā§ āĻšāĻ¯āĻŧ āĻāĻŋāĻā§āĻ āĻšāĻā§āĻā§ āĻ¨āĻžāĨ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¤āĻž āĻ¸āĻ¤ā§āĻ¯ āĻ¨āĻ¯āĻŧ! āĻāĻ¸ā§āĻ¨ āĻĄāĻāĻžāĻ°āĻā§ āĻĻā§āĻāĻŋ:
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8c8a35e26663 busybox "echo 'hello world!'" 36 seconds ago Exited (0) 36 seconds ago k8s_hello_hello-mink8s_default_ab61ef0307c6e0dee2ab05dc1ff94812_4
68f670c3c85f k8s.gcr.io/pause:3.2 "/pause" 2 minutes ago Up 2 minutes k8s_POD_hello-mink8s_default_ab61ef0307c6e0dee2ab05dc1ff94812_0
$ sudo docker logs k8s_hello_hello-mink8s_default_ab61ef0307c6e0dee2ab05dc1ff94812_4
hello world!
kubelet
āĻāĻŽāĻŋ āĻĒāĻĄ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻ āĻĒāĻĄāĻŧā§āĻāĻŋ āĻāĻŦāĻ āĻĄāĻāĻžāĻ°āĻā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸ā§āĻĒā§āĻ¸āĻŋāĻĢāĻŋāĻā§āĻļāĻ¨ āĻ
āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻāĻ¨ā§āĻā§āĻāĻ¨āĻžāĻ° āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļ āĻĻāĻŋāĻ¯āĻŧā§āĻāĻŋāĨ¤ (āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ "āĻĒāĻ" āĻāĻ¨ā§āĻā§āĻāĻ¨āĻžāĻ° āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻāĻžāĻŦāĻā§āĻ¨, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻšā§āĻ¯āĻžāĻ - āĻĻā§āĻā§āĻ¨ busybox
āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻĒāĻĄ āĻŽā§āĻā§ āĻ¨āĻž āĻšāĻāĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻāĻŋ āĻ
āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻāĻāĻžāĻ˛ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻŦā§āĨ¤
āĻ¨āĻŋāĻā§āĻā§ āĻ āĻāĻŋāĻ¨āĻ¨ā§āĻĻāĻ¨ āĻāĻžāĻ¨āĻžāĻ¨āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻžāĻ°ā§āĻŽāĻŋāĻ¨āĻžāĻ˛ā§ āĻĒāĻžāĻ ā§āĻ¯ āĻāĻāĻāĻĒā§āĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻŦāĻŋāĻā§āĻ°āĻžāĻ¨ā§āĻ¤āĻŋāĻāĻ° āĻāĻĒāĻžāĻ¯āĻŧāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ¸ā§āĻāĻŋ!
āĻ˛āĻā§āĻ āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ
āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻ˛āĻā§āĻˇā§āĻ¯ āĻšāĻ˛ Kubernetes API āĻāĻžāĻ˛āĻžāĻ¨ā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻšāĻŦā§ pods/etcd.yaml
):
apiVersion: v1
kind: Pod
metadata:
name: etcd
namespace: kube-system
spec:
containers:
- name: etcd
command:
- etcd
- --data-dir=/var/lib/etcd
image: k8s.gcr.io/etcd:3.4.3-0
volumeMounts:
- mountPath: /var/lib/etcd
name: etcd-data
hostNetwork: true
volumes:
- hostPath:
path: /var/lib/etcd
type: DirectoryOrCreate
name: etcd-data
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻāĻ¨āĻ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°ā§ āĻĨāĻžāĻā§āĻ¨ āĻ¤āĻŦā§ āĻāĻ YAML āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻĒāĻ°āĻŋāĻāĻŋāĻ¤ āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻāĻāĻžāĻ¨ā§ āĻāĻ˛ā§āĻ˛ā§āĻā§āĻ¯āĻ¯ā§āĻā§āĻ¯ āĻŽāĻžāĻ¤ā§āĻ° āĻĻā§āĻāĻŋ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻā§:
āĻāĻŽāĻ°āĻž āĻšā§āĻ¸ā§āĻ āĻĢā§āĻ˛ā§āĻĄāĻžāĻ° āĻŽāĻžāĻāĻ¨ā§āĻ āĻāĻ°ā§āĻāĻŋ /var/lib/etcd
āĻĒāĻĄā§ āĻ¯āĻžāĻ¤ā§ etcd āĻĄā§āĻāĻž āĻĒā§āĻ¨āĻāĻ¸ā§āĻāĻ¨āĻž āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŋāĻ¤ āĻĨāĻžāĻā§ (āĻ¯āĻĻāĻŋ āĻāĻāĻŋ āĻāĻ°āĻž āĻ¨āĻž āĻšāĻ¯āĻŧ, āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° āĻĒāĻĄ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻ
āĻŦāĻ¸ā§āĻĨāĻž āĻŽā§āĻā§ āĻ¯āĻžāĻŦā§, āĻ¯āĻž āĻāĻāĻāĻŋ āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯āĻ āĻāĻžāĻ˛ āĻšāĻŦā§ āĻ¨āĻž)āĨ¤
āĻāĻŽāĻ°āĻž āĻāĻ¨āĻ¸ā§āĻāĻ˛ āĻāĻ°ā§āĻāĻŋ hostNetwork: true
. āĻāĻ āĻ¸ā§āĻāĻŋāĻ, āĻāĻļā§āĻāĻ°ā§āĻ¯āĻāĻ¨āĻāĻāĻžāĻŦā§, āĻĒāĻĄā§āĻ° āĻ
āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻšā§āĻ¸ā§āĻ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ etcd āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ° āĻāĻ°ā§ (āĻāĻāĻŋ API āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ etcd āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻā§āĻāĻā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻ¸āĻšāĻ āĻāĻ°ā§ āĻĻā§āĻŦā§)āĨ¤
āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻā§āĻ āĻĻā§āĻāĻžāĻ¯āĻŧ āĻ¯ā§ etcd āĻĒā§āĻ°āĻā§āĻ¤āĻĒāĻā§āĻˇā§ āĻ˛ā§āĻāĻžāĻ˛āĻšā§āĻ¸ā§āĻā§ āĻāĻ˛āĻā§ āĻāĻŦāĻ āĻĄāĻŋāĻ¸ā§āĻā§ āĻĄā§āĻāĻž āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻā§:
$ curl localhost:2379/version
{"etcdserver":"3.4.3","etcdcluster":"3.4.0"}
$ sudo tree /var/lib/etcd/
/var/lib/etcd/
âââ member
âââ snap
â âââ db
âââ wal
âââ 0.tmp
âââ 0000000000000000-0000000000000000.wal
API āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻļā§āĻ°ā§ āĻšāĻā§āĻā§
āĻāĻāĻāĻŋ Kubernetes API āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻāĻ°āĻ āĻ¸āĻšāĻāĨ¤ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¯ā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ āĻšāĻ¯āĻŧ --etcd-servers
, āĻāĻĒāĻ¨āĻŋ āĻ¯āĻž āĻāĻļāĻž āĻāĻ°ā§āĻ¨ āĻ¤āĻž āĻāĻ°ā§:
apiVersion: v1
kind: Pod
metadata:
name: kube-apiserver
namespace: kube-system
spec:
containers:
- name: kube-apiserver
command:
- kube-apiserver
- --etcd-servers=http://127.0.0.1:2379
image: k8s.gcr.io/kube-apiserver:v1.18.5
hostNetwork: true
āĻāĻ YAML āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĻ¤ā§ āĻ°āĻžāĻā§āĻ¨ pods
, āĻāĻŦāĻ API āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻļā§āĻ°ā§ āĻšāĻŦā§āĨ¤ āĻ¸āĻžāĻĨā§ āĻā§āĻ āĻāĻ°āĻž āĻšāĻā§āĻā§ curl
āĻĻā§āĻāĻžāĻ¯āĻŧ āĻ¯ā§ Kubernetes API āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻ°ā§āĻĒā§ āĻā§āĻ˛āĻž āĻ
ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻ¸āĻš āĻĒā§āĻ°ā§āĻ 8080 āĻ āĻļā§āĻ¨āĻā§ - āĻā§āĻ¨ āĻĒā§āĻ°āĻŽāĻžāĻŖā§āĻāĻ°āĻŖā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻ!
$ curl localhost:8080/healthz
ok
$ curl localhost:8080/api/v1/pods
{
"kind": "PodList",
"apiVersion": "v1",
"metadata": {
"selfLink": "/api/v1/pods",
"resourceVersion": "59"
},
"items": []
}
(āĻāĻŦāĻžāĻ°āĻ, āĻāĻāĻŋ āĻā§āĻĒāĻžāĻĻāĻ¨ā§ āĻāĻžāĻ˛āĻžāĻŦā§āĻ¨ āĻ¨āĻž! āĻāĻŽāĻŋ āĻāĻāĻā§ āĻ āĻŦāĻžāĻ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽ āĻ¯ā§ āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻ¸ā§āĻāĻŋāĻāĻāĻŋ āĻāĻ¤āĻāĻžāĻ āĻ āĻ¨āĻŋāĻ°āĻžāĻĒāĻĻā§ˇ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻŋ āĻ āĻ¨ā§āĻŽāĻžāĻ¨ āĻāĻ°āĻāĻŋ āĻāĻāĻŋ āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻā§ āĻ¸āĻšāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ā§ˇ)
āĻāĻŦāĻ, āĻāĻ¨āĻ¨ā§āĻĻāĻĻāĻžāĻ¯āĻŧāĻ āĻāĻļā§āĻāĻ°ā§āĻ¯, kubectl āĻā§āĻ¨ā§ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻ¸ā§āĻāĻŋāĻāĻ¸ āĻāĻžāĻĄāĻŧāĻžāĻ āĻŦāĻžāĻā§āĻ¸ā§āĻ° āĻŦāĻžāĻāĻ°ā§ āĻāĻžāĻ āĻāĻ°ā§!
$ ./kubectl version
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.5", GitCommit:"e6503f8d8f769ace2f338794c914a96fc335df0f", GitTreeState:"clean", BuildDate:"2020-06-26T03:47:41Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.5", GitCommit:"e6503f8d8f769ace2f338794c914a96fc335df0f", GitTreeState:"clean", BuildDate:"2020-06-26T03:39:24Z", GoVersion:"go1.13.9", Compiler:"gc", Platform:"linux/amd64"}
$ ./kubectl get pod
No resources found in default namespace.
āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻāĻā§ āĻāĻā§āĻ° āĻāĻ¨āĻ¨ āĻāĻ°ā§āĻ¨, āĻŽāĻ¨ā§ āĻšāĻ¯āĻŧ āĻāĻŋāĻā§ āĻā§āĻ˛ āĻšāĻā§āĻā§:
$ ./kubectl get pod -n kube-system
No resources found in kube-system namespace.
āĻāĻŽāĻžāĻĻā§āĻ° āĻ¤ā§āĻ°āĻŋ āĻ¸ā§āĻā§āĻ¯āĻžāĻāĻŋāĻ āĻĒāĻĄ āĻāĻ˛ā§ āĻā§āĻā§! āĻāĻ¸āĻ˛ā§, āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻŦā§āĻ˛ā§āĻ āĻ¨ā§āĻĄāĻāĻŋ āĻŽā§āĻā§āĻ āĻāĻŦāĻŋāĻˇā§āĻā§āĻ¤ āĻšāĻ¯āĻŧāĻ¨āĻŋ:
$ ./kubectl get nodes
No resources found in default namespace.
āĻāĻŋ āĻŦā§āĻ¯āĻžāĻĒāĻžāĻ°? āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻŋāĻā§ āĻ āĻ¨ā§āĻā§āĻā§āĻĻ āĻāĻā§ āĻŽāĻ¨ā§ āĻ°āĻžāĻā§āĻ¨, āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻžāĻāĻ¨ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°ā§āĻ° āĻāĻāĻāĻŋ āĻ āĻ¤ā§āĻ¯āĻ¨ā§āĻ¤ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸ā§āĻ āĻĻāĻŋāĻ¯āĻŧā§ āĻā§āĻŦā§āĻ˛ā§āĻ āĻļā§āĻ°ā§ āĻāĻ°ā§āĻāĻŋ, āĻ¤āĻžāĻ āĻā§āĻŦā§āĻ˛ā§āĻ āĻāĻžāĻ¨ā§ āĻ¨āĻž āĻāĻŋāĻāĻžāĻŦā§ API āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻāĻžāĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻāĻŋāĻā§ āĻ¤āĻžāĻ° āĻ āĻŦāĻ¸ā§āĻĨāĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻ āĻŦāĻšāĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧāĨ¤ āĻĄāĻā§āĻŽā§āĻ¨ā§āĻā§āĻļāĻ¨ āĻ āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻ°āĻž āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻĒāĻ¤āĻžāĻāĻž āĻā§āĻāĻā§ āĻĒāĻžāĻ:
--kubeconfig string
āĻĢāĻžāĻāĻ˛ā§āĻ° āĻĒāĻĨ kubeconfig
, āĻ¯āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°ā§ āĻāĻŋāĻāĻžāĻŦā§ API āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧāĨ¤ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ --kubeconfig
API āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻŽā§āĻĄ āĻ¸āĻā§āĻˇāĻŽ āĻāĻ°ā§, āĻ¨āĻž --kubeconfig
āĻ
āĻĢāĻ˛āĻžāĻāĻ¨ āĻŽā§āĻĄ āĻ¸āĻā§āĻˇāĻŽ āĻāĻ°ā§āĨ¤
āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ¸āĻŽāĻ¯āĻŧ, āĻāĻāĻŋ āĻ¨āĻž āĻā§āĻ¨ā§, āĻāĻŽāĻ°āĻž "āĻ āĻĢāĻ˛āĻžāĻāĻ¨ āĻŽā§āĻĄā§" āĻā§āĻŦā§āĻ˛ā§āĻ āĻāĻžāĻ˛āĻžāĻā§āĻāĻŋāĻ˛āĻžāĻŽāĨ¤ (āĻ¯āĻĻāĻŋ āĻāĻŽāĻ°āĻž āĻĒā§āĻĄā§āĻ¨ā§āĻāĻŋāĻ āĻšāĻ¤āĻžāĻŽ, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ¸ā§āĻŦāĻ¤āĻ¨ā§āĻ¤ā§āĻ° āĻā§āĻŦā§āĻ˛ā§āĻāĻā§ "āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸" āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻžāĻŦāĻ¤ā§ āĻĒāĻžāĻ°āĻŋ, āĻ¤āĻŦā§ āĻāĻāĻŋ āĻā§āĻŦ āĻŦāĻŋāĻ°āĻā§āĻ¤āĻŋāĻāĻ° āĻšāĻŦā§)āĨ¤ "āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ" āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻžāĻĻā§āĻ° kubeconfig āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻā§āĻŦā§āĻ˛ā§āĻā§ āĻĒāĻžāĻ¸ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¯āĻžāĻ¤ā§ āĻāĻāĻŋ API āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻā§āĻāĻžāĻŦā§ āĻāĻĨāĻž āĻŦāĻ˛āĻ¤ā§ āĻšāĻ¯āĻŧ āĻ¤āĻž āĻāĻžāĻ¨ā§āĨ¤ āĻāĻžāĻā§āĻ¯āĻā§āĻ°āĻŽā§ āĻāĻāĻŋ āĻŦā§āĻļ āĻ¸āĻšāĻ (āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻŽāĻžāĻŖā§āĻāĻ°āĻŖ āĻŦāĻž āĻļāĻāĻ¸āĻžāĻĒāĻ¤ā§āĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻā§āĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¨ā§āĻ):
apiVersion: v1
kind: Config
clusters:
- cluster:
server: http://127.0.0.1:8080
name: mink8s
contexts:
- context:
cluster: mink8s
name: mink8s
current-context: mink8s
āĻāĻ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§āĻ¨ kubeconfig.yaml
, āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻšāĻ¤ā§āĻ¯āĻž kubelet
āĻāĻŦāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋāĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻāĻ°ā§āĻ¨:
$ sudo ./kubelet --pod-manifest-path=pods --kubeconfig=kubeconfig.yaml
(āĻ¯āĻžāĻāĻšā§āĻ, āĻā§āĻŦā§āĻ˛ā§āĻ āĻ¨āĻž āĻāĻ˛āĻžāĻāĻžāĻ˛ā§āĻ¨ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻžāĻ°ā§āĻ˛ āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻāĻĒāĻŋāĻāĻ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻ¨ āĻ¤āĻŦā§ āĻāĻĒāĻ¨āĻŋ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻŦā§āĻ¨ āĻ¯ā§ āĻāĻāĻŋ āĻāĻāĻ¨āĻ āĻāĻ˛āĻā§! āĻā§āĻŦā§āĻ˛ā§āĻ āĻĄāĻāĻžāĻ°ā§āĻ° āĻŽāĻ¤ā§ āĻāĻ° āĻĒāĻĄāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ "āĻ āĻāĻŋāĻāĻžāĻŦāĻ" āĻ¨āĻ¯āĻŧ, āĻāĻāĻŋ āĻāĻāĻāĻŋ "āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖā§āĻ° āĻŽāĻ¤ā§" āĻĄā§āĻŽāĻ¨āĨ¤" āĻā§āĻŦā§āĻ˛ā§āĻ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻŋāĻ¤ āĻĒāĻžāĻ¤ā§āĻ°āĻā§āĻ˛āĻŋ āĻāĻ˛āĻ¤ā§ āĻĨāĻžāĻāĻŦā§ āĻ¯āĻ¤āĻā§āĻˇāĻŖ āĻ¨āĻž āĻā§āĻŦā§āĻ˛ā§āĻ āĻ¤āĻžāĻĻā§āĻ° āĻĨāĻžāĻŽāĻžāĻ¯āĻŧāĨ¤)
āĻāĻ¯āĻŧā§āĻ āĻŽāĻŋāĻ¨āĻŋāĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ kubectl
āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻž āĻ
āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒāĻĄ āĻāĻŦāĻ āĻ¨ā§āĻĄāĻā§āĻ˛āĻŋ āĻĻā§āĻāĻžāĻ¤ā§ āĻšāĻŦā§:
$ ./kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
default hello-mink8s 0/1 CrashLoopBackOff 261 21h
kube-system etcd-mink8s 1/1 Running 0 21h
kube-system kube-apiserver-mink8s 1/1 Running 0 21h
$ ./kubectl get nodes -owide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
mink8s Ready <none> 21h v1.18.5 10.70.10.228 <none> Ubuntu 18.04.4 LTS 4.15.0-109-generic docker://19.3.6
āĻāĻ¸ā§āĻ¨ āĻāĻŦāĻžāĻ° āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻ¨āĻŋāĻā§āĻĻā§āĻ°āĻā§ āĻ āĻāĻŋāĻ¨āĻ¨ā§āĻĻāĻ¨ āĻāĻžāĻ¨āĻžāĻ (āĻāĻŽāĻŋ āĻāĻžāĻ¨āĻŋ āĻāĻŽāĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻ¨āĻŋāĻā§āĻĻā§āĻ° āĻ āĻāĻŋāĻ¨āĻ¨ā§āĻĻāĻ¨ āĻāĻžāĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ) - āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻāĻāĻāĻŋ āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ Kubernetes "āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°" āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻāĻāĻāĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°ā§ API āĻ¸āĻš āĻāĻ˛āĻā§!
āĻāĻŽāĻ°āĻž āĻ āĻ§ā§āĻ¨ā§ āĻ˛āĻā§āĻ
āĻāĻāĻ¨ āĻĻā§āĻāĻž āĻ¯āĻžāĻ API āĻāĻŋ āĻ¸āĻā§āĻˇāĻŽāĨ¤ nginx āĻĒāĻĄ āĻĻāĻŋāĻ¯āĻŧā§ āĻļā§āĻ°ā§ āĻāĻ°āĻž āĻ¯āĻžāĻ:
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- image: nginx
name: nginx
āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻŦāĻ°āĻ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻĒā§āĻ¤ā§:
$ ./kubectl apply -f nginx.yaml
Error from server (Forbidden): error when creating "nginx.yaml": pods "nginx" is
forbidden: error looking up service account default/default: serviceaccount
"default" not found
$ ./kubectl get serviceaccounts
No resources found in default namespace.
āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻ°āĻž āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ āĻ¯ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻāĻ¤āĻāĻž āĻ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ - āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ¨āĻ āĻ ā§āĻ¯āĻžāĻāĻžāĻāĻ¨ā§āĻ āĻ¨ā§āĻāĨ¤ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ ā§āĻ¯āĻžāĻāĻžāĻāĻ¨ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§ āĻāĻŦāĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻĻā§āĻā§āĻ¨ āĻā§ āĻšāĻ¯āĻŧ:
$ cat <<EOS | ./kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
name: default
namespace: default
EOS
serviceaccount/default created
$ ./kubectl apply -f nginx.yaml
Error from server (ServerTimeout): error when creating "nginx.yaml": No API
token found for service account "default", retry after the token is
automatically created and added to the service account
āĻāĻŽāĻ¨āĻāĻŋ āĻ¯āĻāĻ¨ āĻāĻŽāĻ°āĻž āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ ā§āĻ¯āĻžāĻāĻžāĻāĻ¨ā§āĻ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ, āĻĒā§āĻ°āĻŽāĻžāĻŖā§āĻāĻ°āĻŖ āĻā§āĻā§āĻ¨ āĻ¤ā§āĻ°āĻŋ āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ "āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ°" āĻ¨āĻŋāĻ¯āĻŧā§ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻžāĻ˛āĻŋāĻ¯āĻŧā§ āĻ¯āĻžāĻā§āĻāĻŋ, āĻāĻŽāĻ°āĻž āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻŦ āĻ¯ā§ āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻĻāĻ°āĻāĻžāĻ°ā§ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻ¯āĻž āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻāĻā§ āĻĨāĻžāĻā§ āĻ¤āĻž āĻ āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻĨāĻžāĻāĻŦā§āĨ¤ Kubernetes API āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻāĻŋ āĻŦā§āĻļ āĻ¸āĻāĻā§āĻˇāĻŋāĻĒā§āĻ¤, āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻāĻžāĻ°ā§ āĻāĻ¤ā§āĻ¤ā§āĻ˛āĻ¨ āĻāĻŦāĻ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛āĻžāĻ° āĻāĻŦāĻ āĻŦā§āĻ¯āĻžāĻāĻā§āĻ°āĻžāĻāĻ¨ā§āĻĄ āĻāĻŦāĻā§āĻ˛āĻŋāĻ¤ā§ āĻāĻāĻā§ āĻ¯āĻž āĻāĻāĻ¨āĻ āĻāĻ˛āĻā§ āĻ¨āĻžāĨ¤
āĻāĻŽāĻ°āĻž āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻ¸ā§āĻ āĻāĻ°ā§ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ automountServiceAccountToken
āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ
ā§āĻ¯āĻžāĻāĻžāĻāĻ¨ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ (āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¨āĻž):
$ cat <<EOS | ./kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
name: default
namespace: default
automountServiceAccountToken: false
EOS
serviceaccount/default configured
$ ./kubectl apply -f nginx.yaml
pod/nginx created
$ ./kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx 0/1 Pending 0 13m
āĻ
āĻŦāĻļā§āĻˇā§, āĻĒā§āĻĻ āĻšāĻžāĻāĻŋāĻ°! āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ¸āĻ˛ā§ āĻāĻāĻž āĻļā§āĻ°ā§ āĻšāĻŦā§ āĻ¨āĻž āĻāĻžāĻ°āĻŖ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¨ā§āĻ
āĻāĻ¸āĻ˛ā§, āĻāĻĒāĻ¨āĻžāĻ° āĻāĻāĻāĻŋ āĻĒāĻĄ āĻāĻžāĻ˛āĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻļāĻŋāĻĄāĻŋāĻāĻ˛āĻžāĻ°ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻāĨ¤ āĻāĻĒāĻ¨āĻŋ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°ā§ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĢā§āĻ¸ā§āĻā§ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻāĻāĻāĻŋ āĻ¨ā§āĻĄ āĻ¯ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ nodeName
:
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- image: nginx
name: nginx
nodeName: mink8s
(āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ mink8s
āĻ¨ā§āĻĄā§āĻ° āĻ¨āĻžāĻŽā§āĨ¤) āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻāĻŦāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻžāĻ° āĻĒāĻ°ā§, āĻāĻŽāĻ°āĻž āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻ āĻ¯ā§ nginx āĻļā§āĻ°ā§ āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŦāĻ āĻ
āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻāĻāĻĒāĻŋ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻļā§āĻ¨āĻā§:
$ ./kubectl delete pod nginx
pod "nginx" deleted
$ ./kubectl apply -f nginx.yaml
pod/nginx created
$ ./kubectl get pods -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx 1/1 Running 0 30s 172.17.0.2 mink8s <none> <none>
$ curl -s 172.17.0.2 | head -4
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
āĻĒāĻĄā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°āĻā§ āĻ¤āĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻ¤ā§, āĻāĻŽāĻ°āĻž āĻ āĻ¨ā§āĻ¯ āĻĒāĻĄ āĻĨā§āĻā§ āĻāĻžāĻ°ā§āĻ˛ āĻāĻžāĻ˛āĻžāĻ¤ā§ āĻĒāĻžāĻ°āĻŋ:
$ cat <<EOS | ./kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: curl
spec:
containers:
- image: curlimages/curl
name: curl
command: ["curl", "172.17.0.2"]
nodeName: mink8s
EOS
pod/curl created
$ ./kubectl logs curl | head -6
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
āĻāĻ āĻĒāĻ°āĻŋāĻŦā§āĻļā§ āĻāĻ¨āĻ¨ āĻāĻ°āĻž āĻāĻŦāĻ āĻā§ āĻāĻžāĻ āĻāĻ°ā§ āĻāĻŦāĻ āĻā§ āĻāĻ°ā§ āĻ¨āĻž āĻ¤āĻž āĻĻā§āĻāĻ¤ā§ āĻŦā§āĻļ āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧāĨ¤ āĻāĻŽāĻŋ āĻĻā§āĻā§āĻāĻŋ āĻ¯ā§ āĻāĻ¨āĻĢāĻŋāĻāĻŽā§āĻ¯āĻžāĻĒ āĻāĻŦāĻ āĻ¸āĻŋāĻā§āĻ°ā§āĻ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻŋāĻ¤ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻāĻŦāĻ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž āĻāĻ°ā§ āĻ¨āĻžāĨ¤
āĻ¸āĻĢāĻ˛āĻ¤āĻžāĻ° !
āĻāĻ āĻĒā§āĻ¸ā§āĻāĻāĻŋ āĻĻā§āĻ°ā§āĻ āĻšāĻā§āĻā§, āĻ¤āĻžāĻ āĻāĻŽāĻŋ āĻŦāĻŋāĻāĻ¯āĻŧ āĻā§āĻˇāĻŖāĻž āĻāĻ°āĻ¤ā§ āĻ¯āĻžāĻā§āĻāĻŋ āĻāĻŦāĻ āĻŦāĻ˛āĻŦ āĻ¯ā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ¨āĻĢāĻŋāĻāĻžāĻ°ā§āĻļāĻ¨ āĻ¯āĻžāĻā§ "āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻā§āĻ¸" āĻŦāĻ˛āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ¸āĻāĻā§āĻˇā§āĻĒā§: āĻāĻžāĻ°āĻāĻŋ āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋ, āĻĒāĻžāĻāĻāĻāĻŋ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻžāĻāĻ¨ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻāĻŦāĻ YAML āĻāĻ° "āĻļā§āĻ§ā§" 45 āĻ˛āĻžāĻāĻ¨ (āĻ¨āĻž āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ā§āĻ° āĻŽāĻžāĻ¨ āĻ āĻ¨ā§āĻ¸āĻžāĻ°ā§) āĻāĻŦāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻāĻžāĻ āĻāĻ°āĻā§:
- āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ Kubernetes API āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻĒāĻĄāĻā§āĻ˛āĻŋ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧ (āĻāĻŋāĻā§ āĻšā§āĻ¯āĻžāĻ āĻ¸āĻš)
- āĻāĻĒāĻ¨āĻŋ āĻĒāĻžāĻŦāĻ˛āĻŋāĻ āĻ§āĻžāĻ°āĻ āĻāĻŦāĻŋ āĻāĻĒāĻ˛ā§āĻĄ āĻāĻŦāĻ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
- āĻļā§āĻāĻāĻŋ āĻā§āĻŦāĻŋāĻ¤ āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻāĻžāĻ˛ā§ āĻšāĻ¯āĻŧ
- āĻāĻāĻ āĻ¨ā§āĻĄā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒāĻĄāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĻŋāĻ āĻŦā§āĻļ āĻāĻžāĻ˛ āĻāĻžāĻ āĻāĻ°ā§
- āĻāĻ¨āĻĢāĻŋāĻāĻŽā§āĻ¯āĻžāĻĒ, āĻ¸āĻŋāĻā§āĻ°ā§āĻ āĻāĻŦāĻ āĻ¸āĻšāĻ āĻ¸ā§āĻā§āĻ°ā§āĻ āĻŽāĻžāĻāĻ¨ā§āĻāĻŋāĻ āĻāĻžāĻ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻŋāĻ¤ āĻšāĻŋāĻ¸āĻžāĻŦā§
āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸āĻā§ āĻ¯āĻž āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻĻāĻ°āĻāĻžāĻ°ā§ āĻāĻ°ā§ āĻ¤ā§āĻ˛ā§ āĻ¤āĻžāĻ° āĻ āĻ¨ā§āĻ āĻāĻŋāĻā§āĻ āĻāĻāĻ¨āĻ āĻ āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤, āĻ¯ā§āĻŽāĻ¨:
- āĻĒāĻĄ āĻļāĻŋāĻĄāĻŋāĻāĻ˛āĻžāĻ°
- āĻĒā§āĻ°āĻŽāĻžāĻŖā§āĻāĻ°āĻŖ/āĻ āĻ¨ā§āĻŽā§āĻĻāĻ¨
- āĻāĻāĻžāĻ§āĻŋāĻ āĻ¨ā§āĻĄ
- āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ
- āĻā§āĻ˛āĻžāĻ¸ā§āĻāĻžāĻ° āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ DNS
- āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻ ā§āĻ¯āĻžāĻāĻžāĻāĻ¨ā§āĻ, āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž, āĻā§āĻ˛āĻžāĻāĻĄ āĻĒā§āĻ°āĻĻāĻžāĻ¨āĻāĻžāĻ°ā§āĻĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻā§āĻāĻ°āĻŖ āĻāĻŦāĻ āĻā§āĻŦāĻžāĻ°āĻ¨ā§āĻāĻ¸ āĻ¯ā§ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻāĻŋāĻ¨āĻŋāĻ¸āĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ¸ā§ āĻ¤āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻ
āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŽāĻ°āĻž āĻāĻ¸āĻ˛ā§ āĻāĻŋ āĻĒā§āĻ¯āĻŧā§āĻāĻŋ? Kubernetes API, āĻ¨āĻŋāĻā§ āĻĨā§āĻā§ āĻāĻ˛āĻā§, āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻāĻĢāĻ°ā§āĻŽ āĻ§āĻžāĻ°āĻ āĻ āĻā§āĻŽā§āĻļāĻ¨. āĻāĻāĻŋ āĻ āĻ¨ā§āĻ āĻāĻŋāĻā§ āĻāĻ°ā§ āĻ¨āĻž - āĻāĻāĻŋ API āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻāĻ¨ā§āĻā§āĻ°ā§āĻ˛āĻžāĻ° āĻāĻŦāĻ āĻ āĻĒāĻžāĻ°ā§āĻāĻ°āĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻžāĻ - āĻ¤āĻŦā§ āĻāĻāĻŋ āĻ āĻā§āĻŽā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖ āĻĒāĻ°āĻŋāĻŦā§āĻļ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĨ¤
āĻāĻ°āĻ āĻĒāĻĄāĻŧā§āĻ¨:
āĻā§āĻ¨ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĒā§āĻ°āĻļāĻžāĻ¸āĻ, āĻŦāĻŋāĻāĻžāĻļāĻāĻžāĻ°ā§ āĻāĻŦāĻ āĻĒāĻ°ā§āĻā§āĻˇāĻāĻĻā§āĻ° DevOps āĻ āĻ¨ā§āĻļā§āĻ˛āĻ¨āĻā§āĻ˛āĻŋ āĻļāĻŋāĻāĻ¤ā§ āĻšāĻŦā§? āĻĨāĻžāĻ¨ā§āĻ¸ - āĻĒāĻ°āĻŋāĻŽāĻžāĻĒāĻ¯ā§āĻā§āĻ¯ āĻĒā§āĻ°āĻŽāĻŋāĻĨāĻŋāĻāĻ¸ GitLab QA āĻāĻŋāĻŽ āĻāĻŋāĻāĻžāĻŦā§ GitLab āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¨ā§āĻ¸ āĻā§āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ Loki - āĻĒā§āĻ°āĻŽāĻŋāĻĨāĻŋāĻāĻ¸ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ˛āĻ āĻ¸āĻāĻā§āĻ°āĻš DevOps-āĻāĻ° āĻā§āĻŦāĻ¨ā§āĻ° āĻāĻāĻāĻŋ āĻĻāĻŋāĻ¨
āĻāĻ¤ā§āĻ¸: www.habr.com