āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ āĻĒāĻžāχāϤ⧇ āĻ¸ā§āĻ•ā§āĻ°ā§āϝāĻžāϚ āĻĨ⧇āϕ⧇ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ

āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ āĻĒāĻžāχāϤ⧇ āĻ¸ā§āĻ•ā§āĻ°ā§āϝāĻžāϚ āĻĨ⧇āϕ⧇ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ

āĻ…āϤāĻŋ āϏāĻŽā§āĻĒā§āϰāϤāĻŋ, āĻāĻ•āϟāĻŋ āϏ⧁āĻĒāϰāĻŋāϚāĻŋāϤ āϕ⧋āĻŽā§āĻĒāĻžāύāĻŋ āĻ˜ā§‹āώāĻŖāĻž āĻ•āϰ⧇āϛ⧇ āϝ⧇ āĻāϟāĻŋ āϤāĻžāϰ āĻ˛ā§āϝāĻžāĻĒāϟāĻĒ⧇āϰ āϞāĻžāχāύ āĻāφāϰāĻāĻŽ āφāĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āϚāĻžāϰ⧇ āĻ¸ā§āĻĨāĻžāύāĻžāĻ¨ā§āϤāϰ āĻ•āϰāϛ⧇āĨ¤ āϝāĻ–āύ āφāĻŽāĻŋ āĻāχ āĻ–āĻŦāϰāϟāĻŋ āĻļ⧁āύāϞāĻžāĻŽ, āφāĻŽāĻžāϰ āĻŽāύ⧇ āĻĒāĻĄāĻŧāϞ: AWS-āĻ EC2-āĻāϰ āĻĻāĻžāĻŽā§‡āϰ āĻĻāĻŋāϕ⧇ āĻāĻ•āĻŦāĻžāϰ āϤāĻžāĻ•āĻŋāϝāĻŧ⧇, āφāĻŽāĻŋ āϖ⧁āĻŦ āϏ⧁āĻ¸ā§āĻŦāĻžāĻĻ⧁ āĻĻāĻžāĻŽā§‡āϰ Gravitons āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰ⧇āĻ›āĻŋāĨ¤ āĻ•ā§āϝāĻžāϚ, āĻ…āĻŦāĻļā§āϝāχ, āĻāϟāĻž āĻ›āĻŋāϞ ARM. āϤāĻžāϰāĻĒāϰ⧇ āĻāϟāĻŋ āφāĻŽāĻžāϰ āĻ•āĻžāϛ⧇ āĻ•āĻ–āύāχ āφāϏ⧇āύāĻŋ āϝ⧇ ARM āĻŦ⧇āĻļ āϗ⧁āϰ⧁āϤāϰ ...

āφāĻŽāĻžāϰ āϜāĻ¨ā§āϝ, āĻāχ āφāĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āϚāĻžāϰāϟāĻŋ āϏāĻ°ā§āĻŦāĻĻāĻž āĻŽā§‹āĻŦāĻžāχāϞ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āφāχāĻ“āϟāĻŋ āϜāĻŋāύāĻŋāϏ⧇āϰ āĻ…āύ⧇āĻ• āĻ•āĻŋāϛ⧁ āĻ›āĻŋāϞāĨ¤ āĻāφāϰāĻāĻŽ-āĻāϰ "āĻŦāĻžāĻ¸ā§āϤāĻŦ" āϏāĻžāĻ°ā§āĻ­āĻžāϰāϗ⧁āϞāĻŋ āĻāĻ•āϰāĻ•āĻŽ āĻ…āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ•, āĻ•āĻŋāϛ⧁ āωāĻĒāĻžāϝāĻŧ⧇ āĻāĻŽāύāĻ•āĻŋ āĻŦāĻ¨ā§āϝ ... āϝāĻžāχāĻšā§‹āĻ•, āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϚāĻŋāĻ¨ā§āϤāĻž āφāĻŽāĻžāϰ āĻŽāĻžāĻĨāĻžāϝāĻŧ āφāϟāϕ⧇ āϗ⧇āϛ⧇, āϤāĻžāχ āϏāĻĒā§āϤāĻžāĻšāĻžāĻ¨ā§āϤ⧇ āφāĻŽāĻŋ āφāϜ āĻāφāϰāĻāĻŽ-āĻ āϏāĻžāϧāĻžāϰāĻŖāϤ āϕ⧀ āϚāĻžāϞ⧁ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āϤāĻž āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻžāϰ āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ āύāĻŋāϝāĻŧ⧇āĻ›āĻŋāĨ¤ āĻāĻŦāĻ‚ āĻāχ āϜāĻ¨ā§āϝ, āφāĻŽāĻŋ āĻāĻ•āϟāĻŋ āϘāύāĻŋāĻˇā§āĻ  āĻāĻŦāĻ‚ āĻĒā§āϰāĻŋāϝāĻŧ āĻāĻ• āϏāĻ™ā§āϗ⧇ āĻļ⧁āϰ⧁ āĻ•āϰāĻžāϰ āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ āύāĻŋāϝāĻŧ⧇āϛ⧇ - āĻāĻ•āϟāĻŋ Kubernetes āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ. āĻāĻŦāĻ‚ āϕ⧇āĻŦāϞāĻŽāĻžāĻ¤ā§āϰ āĻ•āĻŋāϛ⧁ āĻļāĻ°ā§āϤāϝ⧁āĻ•ā§āϤ "āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ" āύāϝāĻŧ, āϤāĻŦ⧇ āϏāĻŦāĻ•āĻŋāϛ⧁āχ "āĻĒā§āϰāĻžāĻĒā§āϤāĻŦāϝāĻŧāĻ¸ā§āĻ• āωāĻĒāĻžāϝāĻŧ⧇", āϝāĻžāϤ⧇ āĻāϟāĻŋ āϝāϤāϟāĻž āϏāĻŽā§āĻ­āĻŦ āĻāĻ•āχ āϰāĻ•āĻŽ āĻšāϝāĻŧ āϝāĻž āφāĻŽāĻŋ āĻāϟāĻŋāϕ⧇ āωāĻ¤ā§āĻĒāĻžāĻĻāύ⧇ āĻĻ⧇āϖ⧇āĻ›āĻŋāϞāĻžāĻŽāĨ¤

āφāĻŽāĻžāϰ āϧāĻžāϰāĻŖāĻž āĻ…āύ⧁āϏāĻžāϰ⧇, āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰāϟāĻŋ āχāĻ¨ā§āϟāĻžāϰāύ⧇āϟ āĻĨ⧇āϕ⧇ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāϝ⧋āĻ—ā§āϝ āĻšāĻ“āϝāĻŧāĻž āωāϚāĻŋāϤ, āĻāϤ⧇ āĻ•āĻŋāϛ⧁ āĻ“āϝāĻŧ⧇āĻŦ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϚāϞāĻŽāĻžāύ āĻĨāĻžāĻ•āĻž āωāϚāĻŋāϤ āĻāĻŦāĻ‚ āĻ•āĻŽāĻĒāĻ•ā§āώ⧇ āĻĒāĻ°ā§āϝāĻŦ⧇āĻ•ā§āώāĻŖ āĻ•āϰāĻž āωāϚāĻŋāϤāĨ¤ āĻāχ āϧāĻžāϰāĻŖāĻžāϟāĻŋ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻĒāύāĻžāϕ⧇ āĻ•āĻŽāĻĒāĻ•ā§āώ⧇ āĻŽāĻĄā§‡āϞ 3B+ āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ āĻĒāĻžāχ āĻāϰ āĻāĻ• āĻœā§‹āĻĄāĻŧāĻž (āĻŦāĻž āϤāĻžāϰ āĻŦ⧇āĻļāĻŋ) āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāĻŦ⧇āĨ¤ AWS āĻĒāϰ⧀āĻ•ā§āώāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽāĻ“ āĻšāϝāĻŧ⧇ āωāĻ āϤ⧇ āĻĒāĻžāϰ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻāϟāĻŋ āĻ›āĻŋāϞ "āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ" āϝāĻž āφāĻŽāĻžāϰ āĻ•āĻžāϛ⧇ āφāĻ—ā§āϰāĻšā§‡āϰ āĻŦāĻŋāώāϝāĻŧ āĻ›āĻŋāϞ (āϝāĻž āĻāĻ–āύāĻ“ āύāĻŋāĻˇā§āĻ•ā§āϰāĻŋāϝāĻŧ āĻ›āĻŋāϞ)āĨ¤ āϏ⧁āϤāϰāĻžāĻ‚, āφāĻŽāϰāĻž āϤāĻžāĻĻ⧇āϰ āωāĻĒāϰ Ingress, Prometheus āĻāĻŦāĻ‚ Grafana āϏāĻš āĻāĻ•āϟāĻŋ Kubernetes āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻŦāĨ¤

"āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ" āĻĒā§āϰāĻ¸ā§āϤ⧁āϤāĻŋ

OS āĻāĻŦāĻ‚ SSH āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āĻ“āĻāϏ⧇āϰ āĻĒāĻ›āĻ¨ā§āĻĻ āύāĻŋāϝāĻŧ⧇ āφāĻŽāĻŋ āϖ⧁āĻŦ āĻŦ⧇āĻļāĻŋ āĻŽāĻžāĻĨāĻž āϘāĻžāĻŽāĻžāχāύāĻŋ: āφāĻŽāĻŋ āϏāĻŦ⧇āĻŽāĻžāĻ¤ā§āϰ āϏāĻ°ā§āĻŦāĻļ⧇āώ āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ āĻĒāĻžāχ āĻ“āĻāϏ āϞāĻžāχāϟ āύāĻŋāϝāĻŧ⧇āĻ›āĻŋ āĻ…āĻĢāĻŋāϏāĻŋāϝāĻŧāĻžāϞ āϏāĻžāχāϟ. āϏ⧇āĻ–āĻžāύ⧇ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāϝāĻŧ āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ, āϏāĻŽāĻ¸ā§āϤ āĻ•ā§āϰāĻŋāϝāĻŧāĻž āϝāĻž āĻĨ⧇āϕ⧇ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇āϰ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇āϰ āϏāĻŽāĻ¸ā§āϤ āύ⧋āĻĄā§‡ āϏāĻžā§āϚāĻžāϞāĻŋāϤ āĻšāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻāϰ āĻĒāϰ⧇, āφāĻĒāύāĻžāϕ⧇ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻŽā§āϝāĻžāύāĻŋāĻĒ⧁āϞ⧇āĻļāύāϗ⧁āϞāĻŋ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ (āϏāĻŦ āύ⧋āĻĄāϗ⧁āϞāĻŋāϤ⧇āĻ“)āĨ¤

āĻŽāύāĻŋāϟāϰ āĻāĻŦāĻ‚ āϕ⧀āĻŦā§‹āĻ°ā§āĻĄ āϏāĻ‚āϝ⧋āĻ— āĻ•āϰāĻžāϰ āĻĒāϰ⧇, āφāĻĒāύāĻžāϕ⧇ āĻĒā§āϰāĻĨāĻŽā§‡ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻāĻŦāĻ‚ SSH āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇:

  1. āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰāϟāĻŋ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āĻŽāĻžāĻ¸ā§āϟāĻžāϰ⧇āϰ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āφāχāĻĒāĻŋ āĻ āĻŋāĻ•āĻžāύāĻž āĻĨāĻžāĻ•āϤ⧇ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āĻ•āĻžāϜ āύ⧋āĻĄāϗ⧁āϞāĻŋāϰ āĻŦāĻŋāĻŦ⧇āϚāύāĻžāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋāϤ⧇ āĻāϟāĻŋ āĻĨāĻžāĻ•āϤ⧇ āĻšāĻŦ⧇āĨ¤ āϏ⧇āϟāφāĻĒ⧇āϰ āϏāĻšāϜāϤāĻžāϰ āĻ•āĻžāϰāϪ⧇ āφāĻŽāĻŋ āϏāĻ°ā§āĻŦāĻ¤ā§āϰ āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āĻ āĻŋāĻ•āĻžāύāĻž āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āϰ⧇āĻ›āĻŋāĨ¤
  2. āĻ¸ā§āĻŸā§āϝāĻžāϟāĻŋāĻ• āĻ āĻŋāĻ•āĻžāύāĻžāϟāĻŋ OS āĻ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ (āĻĢāĻžāχāϞ⧇ /etc/dhcpcd.conf āĻāĻ•āϟāĻŋ āωāĻĒāϝ⧁āĻ•ā§āϤ āωāĻĻāĻžāĻšāϰāĻŖ āφāϛ⧇) āĻ…āĻĨāĻŦāĻž āĻŦā§āϝāĻŦāĻšā§ƒāϤ (āφāĻŽāĻžāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āĻšā§‹āĻŽ) āϰāĻžāωāϟāĻžāϰ⧇āϰ DHCP āϏāĻžāĻ°ā§āĻ­āĻžāϰ⧇ āĻāĻ•āϟāĻŋ āϞāĻŋāϜ āĻ āĻŋāĻ• āĻ•āϰ⧇āĨ¤
  3. ssh-āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻšāϜāĻ­āĻžāĻŦ⧇ raspi-config āĻ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ (āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏāĻŋāĻ‚ āĻ…āĻĒāĻļāύ → ssh).

āĻāϰ āĻĒāϰ⧇, āφāĻĒāύāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇āχ SSH āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϞāĻ— āχāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ (āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇, āϞāĻ—āχāύ āĻšāϞ piāĻāĻŦāĻ‚ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻšāϞ raspberry āĻ…āĻĨāĻŦāĻž āφāĻĒāύāĻŋ āϝ⧇āϟāĻŋāϤ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇āϛ⧇āύ) āĻāĻŦāĻ‚ āϏ⧇āϟāĻŋāĻ‚āϏ āϚāĻžāϞāĻŋāϝāĻŧ⧇ āϝāĻžāύāĨ¤

āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āϏ⧇āϟāĻŋāĻ‚āĻ¸ā§

  1. āĻšā§‹āĻ¸ā§āϟāύ⧇āĻŽ āϏ⧇āϟ āĻ•āϰ⧁āύāĨ¤ āφāĻŽāĻžāϰ āωāĻĻāĻžāĻšāϰāϪ⧇, āφāĻŽāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ pi-control и pi-worker.
  2. āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύ āϝ⧇ āĻĢāĻžāχāϞ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽāϟāĻŋ āĻĒ⧁āϰ⧋ āĻĄāĻŋāĻ¸ā§āϕ⧇ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇ (df -h /) āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāϞ⧇, āĻāϟāĻŋ raspi-config āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤
  3. raspi-config āĻ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύāĨ¤
  4. āĻ…āĻĻāϞāĻŦāĻĻāϞ āĻĢāĻžāχāϞāϟāĻŋ āĻŦāĻ¨ā§āϧ āĻ•āϰ⧁āύ (āĻāϟāĻŋ āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ⧇āϰ āĻāĻ•āϟāĻŋ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧāϤāĻž; āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāχ āĻŦāĻŋāώāϝāĻŧ⧇ āĻŦāĻŋāĻļāĻĻ āϜāĻžāύāϤ⧇ āφāĻ—ā§āϰāĻšā§€ āĻšāύ āϤāĻŦ⧇ āĻĻ⧇āϖ⧁āύāĨ¤ āχāĻ¸ā§āϝ⧁ #53533):
    dphys-swapfile swapoff
    systemctl disable dphys-swapfile
  5. āϏāĻ°ā§āĻŦāĻļ⧇āώ āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻĒā§āϝāĻžāϕ⧇āϜ āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧁āύ:
    apt-get update && apt-get dist-upgrade -y
  6. āĻĄāĻ•āĻžāϰ āĻāĻŦāĻ‚ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻĒā§āϝāĻžāϕ⧇āϜ āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧁āύ:
    apt-get install -y docker docker.io apt-transport-https curl bridge-utils iptables-persistent

    āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ iptables-persistent āφāĻĒāύāĻžāϕ⧇ ipv4 āĻāĻŦāĻ‚ āĻĢāĻžāχāϞ⧇āϰ āϜāĻ¨ā§āϝ iptables āϏ⧇āϟāĻŋāĻ‚āϏ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ /etc/iptables/rules.v4 - āĻšā§‡āχāύ⧇ āύāĻŋāϝāĻŧāĻŽ āϝ⧋āĻ— āĻ•āϰ⧁āύ FORWARD, āĻāχ āĻŽāϤ:

    # Generated by xtables-save v1.8.2 on Sun Jul 19 00:27:43 2020
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    -A FORWARD -s 10.1.0.0/16  -j ACCEPT
    -A FORWARD -d 10.1.0.0/16  -j ACCEPT
    COMMIT
  7. āϝāĻž āĻ…āĻŦāĻļāĻŋāĻˇā§āϟ āĻĨāĻžāϕ⧇ āϤāĻž āĻšāϞ āϰāĻŋāĻŦ⧁āϟ āĻ•āϰāĻžāĨ¤

āφāĻĒāύāĻŋ āĻāĻ–āύ Kubernetes āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤāĨ¤

āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āĻāχ āĻĒāĻ°ā§āϝāĻžāϝāĻŧ⧇, āφāĻŽāĻŋ āχāĻšā§āĻ›āĻžāĻ•ā§ƒāϤāĻ­āĻžāĻŦ⧇ K8s āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇āϰ āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ āĻāĻŦāĻ‚ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāĻŽāĻžāϰ āĻāĻŦāĻ‚ āφāĻŽāĻžāĻĻ⧇āϰ āϏāĻŽāĻ¸ā§āϤ āĻ•āĻ°ā§āĻĒā§‹āϰ⧇āϟ āωāĻ¨ā§āύāϝāĻŧāύāϗ⧁āϞāĻŋāϕ⧇ āĻāĻ•āĻĒāĻžāĻļ⧇ āϏāϰāĻŋāϝāĻŧ⧇ āϰ⧇āϖ⧇āĻ›āĻŋāĨ¤ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇, āĻāϰ āϏāĻžāĻĨ⧇ āĻ…āĻĢāĻŋāϏāĻŋāϝāĻŧāĻžāϞ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžāĻ• kubernetes.io (āĻŽāĻ¨ā§āϤāĻŦā§āϝ āĻāĻŦāĻ‚ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤ āϰ⧂āĻĒ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻžāĻŽāĻžāĻ¨ā§āϝ āĻĒāϰāĻŋāĻĒā§‚āϰāĻ•)āĨ¤

āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ āϝ⧋āĻ— āĻ•āϰāĻž āϝāĻžāĻ•:

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
sudo apt-get update

āφāϰāĻ“, āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āϏāĻŋāφāϰāφāχ (āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āϰāĻžāύāϟāĻžāχāĻŽ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ) āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āĻĒāϰāĻžāĻŽāĻ°ā§āĻļ āĻĻ⧇āϝāĻŧāĨ¤ āϝ⧇āĻšā§‡āϤ⧁ āĻĄāĻ•āĻžāϰ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇āχ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āφāϛ⧇, āϚāϞ⧁āύ āϚāϞ⧁āύ āĻāĻŦāĻ‚ āĻĒā§āϰāϧāĻžāύ āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻŋ:

sudo apt-get install -y kubelet kubeadm kubectl kubernetes-cni

āĻĒā§āϰāϧāĻžāύ āωāĻĒāĻžāĻĻāĻžāύ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āϧāĻžāĻĒ⧇, āφāĻŽāĻŋ āĻ…āĻŦāĻŋāϞāĻŽā§āĻŦ⧇ āϝ⧋āĻ— kubernetes-cni, āϝāĻž āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇āϰ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧāĨ¤ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟ āφāϛ⧇: āĻĒā§āϝāĻžāϕ⧇āϜ kubernetes-cni āĻ•āĻŋāϛ⧁ āĻ•āĻžāϰāϪ⧇ CNI āϏ⧇āϟāĻŋāĻ‚āϏ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āύāĻž, āϤāĻžāχ āφāĻŽāĻžāϕ⧇ āĻāϟāĻŋ āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ:

mkdir -p /etc/cni/net.d

āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āϝāĻž āύ⧀āĻšā§‡ āφāϞ⧋āϚāύāĻž āĻ•āϰāĻž āĻšāĻŦ⧇, āφāĻĒāύāĻžāϕ⧇ CNI-āĻāϰ āϜāĻ¨ā§āϝ āĻĒā§āϞāĻžāĻ—āχāύ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āφāĻŽāĻŋ āĻĒāϰāĻŋāϚāĻŋāϤ āĻāĻŦāĻ‚ āĻŦā§‹āϧāĻ—āĻŽā§āϝ āĻĒā§‹āĻ°ā§āϟāĻŽā§āϝāĻžāĻĒ āĻĒā§āϞāĻžāĻ—āχāύ āĻŦ⧇āϛ⧇ āύāĻŋāϝāĻŧ⧇āĻ›āĻŋ (āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āϤāĻžāϞāĻŋāĻ•āĻžāϰ āϜāĻ¨ā§āϝ, āĻĻ⧇āϖ⧁āύ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ):

curl -sL https://github.com/containernetworking/plugins/releases/download/v0.7.5/cni-plugins-arm-v0.7.5.tgz | tar zxvf - -C /opt/cni/bin/ ./portmap

āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āϏāĻŽāϤāϞ āϏāĻ™ā§āϗ⧇ āύ⧋āĻĄ

āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āύāĻŋāĻœā§‡āχ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻŦ⧇āĻļ āϏāĻšāϜāĨ¤ āĻāĻŦāĻ‚ āĻāχ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϰ āĻ—āϤāĻŋ āĻŦāĻžāĻĄāĻŧāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āĻāĻŦāĻ‚ āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ āχāĻŽā§‡āϜāϗ⧁āϞāĻŋ āωāĻĒāϞāĻŦā§āϧ āφāϛ⧇ āĻ•āĻŋāύāĻž āϤāĻž āϝāĻžāϚāĻžāχ āĻ•āϰāϤ⧇, āφāĻĒāύāĻŋ āĻĒā§āϰāĻžāĻ•-āϚāĻžāϞāύāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ:

kubeadm config images pull

āĻāĻ–āύ āφāĻŽāϰāĻž āύāĻŋāĻœā§‡āχ āχāύāĻ¸ā§āϟāϞ⧇āĻļāύāϟāĻŋ āϚāĻžāϞāĻžāχ - āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇āϰ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āϏāĻŽāϤāϞ āĻļ⧁āϰ⧁ āĻ•āϰ⧁āύ:

kubeadm init --pod-network-cidr=10.1.0.0/16 --service-cidr=10.2.0.0/16 --upload-certs

āĻĻāϝāĻŧāĻž āĻ•āϰ⧇ āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇āύ āϝ⧇ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻāĻŦāĻ‚ āĻĒāĻĄāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āϏāĻžāĻŦāύ⧇āϟāϗ⧁āϞāĻŋ āĻāϕ⧇ āĻ…āĻĒāϰ⧇āϰ āϏāĻžāĻĨ⧇ āĻāĻŦāĻ‚ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āĻ“āĻ­āĻžāϰāĻ˛ā§āϝāĻžāĻĒ āĻ•āϰāĻž āωāϚāĻŋāϤ āύāϝāĻŧ⧎

āĻļ⧇āώ⧇, āφāĻŽāĻžāĻĻ⧇āϰ āĻāĻ•āϟāĻŋ āĻŦāĻžāĻ°ā§āϤāĻž āĻĻ⧇āĻ–āĻžāύ⧋ āĻšāĻŦ⧇ āϝ⧇ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻ āĻŋāĻ• āφāϛ⧇, āĻāĻŦāĻ‚ āĻāĻ•āχ āϏāĻžāĻĨ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āĻŦāϞ⧁āύ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āĻ°ā§āĻŽā§€ āύ⧋āĻĄāϗ⧁āϞāĻŋ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āϏāĻŽāϤāϞ⧇ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻŦ⧇āύ:

Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
 mkdir -p $HOME/.kube
 sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
 sudo chown $(id -u):$(id -g) $HOME/.kube/config
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
 https://kubernetes.io/docs/concepts/cluster-administration/addons/
You can now join any number of the control-plane node running the following command on each as root:
 kubeadm join 192.168.88.30:6443 --token a485vl.xjgvzzr2g0xbtbs4 
   --discovery-token-ca-cert-hash sha256:9da6b05aaa5364a9ec59adcc67b3988b9c1b94c15e81300560220acb1779b050 
   --contrl-plane --certificate-key 72a3c0a14c627d6d7fdade1f4c8d7a41b0fac31b1faf0d8fdf9678d74d7d2403
Please note that the certificate-key gives access to cluster sensitive data, keep it secret!
As a safeguard, uploaded-certs will be deleted in two hours; If necessary, you can use
"kubeadm init phase upload-certs --upload-certs" to reload certs afterward.
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.88.30:6443 --token a485vl.xjgvzzr2g0xbtbs4 
   --discovery-token-ca-cert-hash sha256:9da6b05aaa5364a9ec59adcc67b3988b9c1b94c15e81300560220acb1779b050

āφāϏ⧁āύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϏ⧁āĻĒāĻžāϰāĻŋāĻļāϗ⧁āϞāĻŋ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāĻŋāĨ¤ āĻāĻŦāĻ‚ āĻāĻ•āχ āϏāĻŽāϝāĻŧ⧇ āφāĻŽāĻŋ āĻ…āĻŦāĻŋāϞāĻŽā§āĻŦ⧇ kubectl-āĻāϰ āϜāĻ¨ā§āϝ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧ-āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϤāĻž āϝ⧋āĻ— āĻ•āϰāĻžāϰ āĻĒāϰāĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāχ:

 kubectl completion bash > ~/.kube/completion.bash.inc
 printf "
 # Kubectl shell completion
 source '$HOME/.kube/completion.bash.inc'
 " >> $HOME/.bash_profile
 source $HOME/.bash_profile

āĻāχ āĻĒāĻ°ā§āϝāĻžāϝāĻŧ⧇, āφāĻĒāύāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇ āĻĒā§āϰāĻĨāĻŽ āύ⧋āĻĄ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰ⧇āύ (āϤāĻŦ⧇, āĻāϟāĻŋ āĻāĻ–āύāĻ“ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ āύāϝāĻŧ):

root@pi-control:~# kubectl get no
NAME         STATUS     ROLES    AGE   VERSION
pi-control   NotReady   master   29s   v1.18.6

āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ

āφāϰāĻ“, āϝ⧇āĻŽāύāϟāĻŋ āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ⧇āϰ āĻĒāϰ⧇ āĻŦāĻžāĻ°ā§āϤāĻžāϝāĻŧ āĻŦāϞāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ, āφāĻĒāύāĻžāϕ⧇ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύāϟāĻŋ āĻ•ā§āϝāĻžāϞāĻŋāϕ⧋, āϏāĻŋāϞāĻŋāϝāĻŧāĻžāĻŽ, āĻ•āύāϟāĻŋāĻ­-āĻ­āĻŋāĻĒāĻŋāĻĒāĻŋ, āϕ⧁āĻŦ⧇-āϰāĻžāωāϟāĻžāϰ āĻāĻŦāĻ‚ āĻ“āϝāĻŧ⧇āĻ­ āύ⧇āϟ-āĻāϰ āĻāĻ•āϟāĻŋ āĻĒāĻ›āĻ¨ā§āĻĻ āĻĒā§āϰāĻ¸ā§āϤāĻžāĻŦ āĻ•āϰ⧇... āĻāĻ–āĻžāύ⧇ āφāĻŽāĻŋ āĻ…āĻĢāĻŋāϏāĻŋāϝāĻŧāĻžāϞ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāύāĻž āĻĨ⧇āϕ⧇ āĻŦāĻŋāĻšā§āϝ⧁āϤ āĻšāϝāĻŧ⧇āĻ›āĻŋ āĻāĻŦāĻ‚ āφāĻŽāĻžāϰ āϜāĻ¨ā§āϝ āφāϰāĻ“ āĻĒāϰāĻŋāϚāĻŋāϤ āĻāĻŦāĻ‚ āĻŦā§‹āϧāĻ—āĻŽā§āϝ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻŦ⧇āϛ⧇ āύāĻŋāϝāĻŧ⧇āĻ›āĻŋ: āĻĒāĻļāĻŽā§€ āĻ•āĻžāĻĒāĻĄāĻŧ āĻšā§‹āĻ¸ā§āϟ-āϜāĻŋāĻĄāĻŦā§āϞāĻŋāω āĻŽā§‹āĻĄā§‡ (āωāĻĒāϞāĻŦā§āϧ āĻŦā§āϝāĻžāĻ•āĻāĻ¨ā§āĻĄā§‡āϰ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āϜāĻžāύāĻžāϰ āϜāĻ¨ā§āϝ, āĻĻ⧇āϖ⧁āύ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ).

āĻāĻ•āϟāĻŋ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇ āĻāϟāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻŦ⧇āĻļ āϏāĻšāϜāĨ¤ āĻĒā§āϰāĻĨāĻŽā§‡, āφāϏ⧁āύ āĻŽā§āϝāĻžāύāĻŋāĻĢ⧇āĻ¸ā§āϟāϗ⧁āϞāĻŋ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰāĻŋ:

wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

āϤāĻžāϰāĻĒāϰ⧇ āφāĻŽāϰāĻž āϏ⧇āϟāĻŋāĻ‚āϏ āĻĨ⧇āϕ⧇ āϟāĻžāχāĻĒ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻŋ vxlan āωāĻĒāϰ host-gw:

sed -i 's/vxlan/host-gw/' kube-flannel.yml

... āĻāĻŦāĻ‚ āĻĒāĻĄā§‡āϰ āϏāĻžāĻŦāύ⧇āϟ - āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻŽāĻžāύ āĻĨ⧇āϕ⧇ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āχāύāĻŋāĻļāĻŋāϝāĻŧāĻžāϞāĻžāχāĻœā§‡āĻļāύ⧇āϰ āϏāĻŽāϝāĻŧ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ:

sed -i 's#10.244.0.0/16#10.1.0.0/16#' kube-flannel.yml

āĻāϰ āĻĒāϰ⧇, āφāĻŽāϰāĻž āϏāĻ‚āĻ¸ā§āĻĨāĻžāύ āϤ⧈āϰāĻŋ āĻ•āϰāĻŋ:

kubectl create -f kube-flannel.yml

āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ! āĻ•āĻŋāϛ⧁ āϏāĻŽāϝāĻŧ āĻĒāϰ⧇, āĻĒā§āϰāĻĨāĻŽ K8s āύ⧋āĻĄāϟāĻŋ āĻ¸ā§āĻĨāĻŋāϤāĻŋāϤ⧇ āĻ¸ā§āϝ⧁āχāϚ āĻ•āϰāĻŦ⧇ Ready:

NAME         STATUS   ROLES    AGE   VERSION
pi-control   Ready    master   2m    v1.18.6

āĻāĻ•āϟāĻŋ āĻ•āĻ°ā§āĻŽā§€ āύ⧋āĻĄ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāĻšā§āϛ⧇

āĻāĻ–āύ āφāĻĒāύāĻŋ āĻāĻ•āϜāύ āĻ•āĻ°ā§āĻŽā§€ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āĻāϟāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āĻāϟāĻŋāϤ⧇ - āωāĻĒāϰ⧇ āĻŦāĻ°ā§āĻŖāĻŋāϤ āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋ āĻ…āύ⧁āϏāĻžāϰ⧇ āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ āύāĻŋāĻœā§‡āχ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ - āφāĻĒāύāĻžāϕ⧇ āϕ⧇āĻŦāϞ āĻĒā§‚āĻ°ā§āĻŦ⧇ āĻĒā§āϰāĻžāĻĒā§āϤ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϟāĻŋ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇:

kubeadm join 192.168.88.30:6443 --token a485vl.xjgvzzr2g0xbtbs4 
    --discovery-token-ca-cert-hash sha256:9da6b05aaa5364a9ec59adcc67b3988b9c1b94c15e81300560220acb1779b050

āĻāϟāĻŋāϤ⧇, āφāĻŽāϰāĻž āĻ…āύ⧁āĻŽāĻžāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋ āϝ⧇ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ:

root@pi-control:~# kubectl get no
NAME         STATUS   ROLES    AGE    VERSION
pi-control   Ready    master   28m    v1.18.6
pi-worker    Ready    <none>   2m8s   v1.18.6

āφāĻŽāĻžāϰ āĻšāĻžāϤ⧇ āĻŽāĻžāĻ¤ā§āϰ āĻĻ⧁āϟāĻŋ āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ āĻĒāĻŋāϏ āĻ›āĻŋāϞ, āϤāĻžāχ āϤāĻžāĻĻ⧇āϰ āĻāĻ•āϟāĻŋ āĻĻāĻŋāϝāĻŧ⧇ āĻĻāĻŋāϞāĻžāĻŽ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āφāĻŽāĻŋ āĻāϟāĻŋ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āϏāĻŽāϤāϞ⧇āϰ āĻ…āϧ⧀āύ⧇ āϚāĻžāχāύāĻŋāĨ¤ āϤāĻžāχ āφāĻŽāĻŋ āϚāĻžāϞāĻžāύ⧋āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻĒāĻžāχ-āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞ āύ⧋āĻĄ āĻĨ⧇āϕ⧇ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻ•āϞāĻ™ā§āĻ•āϟāĻŋ āϏāϰāĻŋāϝāĻŧ⧇āĻ›āĻŋ:

root@pi-control:~# kubectl edit node pi-control

āĻāĻŦāĻ‚ āϞāĻžāχāύāϗ⧁āϞāĻŋ āĻ…āĻĒāϏāĻžāϰāĻŖ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇:

 - effect: NoSchedule
   key: node-role.kubernetes.io/master

āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻ¨ā§āϝ⧂āύāϤāĻŽ āϏāĻ™ā§āϗ⧇ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻĒā§‚āϰāĻŖ

āĻĒā§āϰāĻĨāĻŽāϤ, āφāĻŽāĻžāĻĻ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāĻŦ⧇ āĻšāĻžāϞ. āĻ…āĻŦāĻļā§āϝāχ, āφāĻĒāύāĻŋ āĻāϟāĻŋ āĻ›āĻžāĻĄāĻŧāĻžāχ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āϤāĻŦ⧇ āĻšā§‡āϞāĻŽ āφāĻĒāύāĻžāϕ⧇ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋ āϏāĻŽā§āĻĒāĻžāĻĻāύāĻž āύāĻž āĻ•āϰ⧇āχ āφāĻĒāύāĻžāϰ āĻŦāĻŋāĻŦ⧇āϚāύāĻžāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋāϤ⧇ āĻ•āĻŋāϛ⧁ āωāĻĒāĻžāĻĻāĻžāύ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧāĨ¤ āĻāĻŦāĻ‚ āĻĒā§āϰāĻ•ā§ƒāϤāĻĒāĻ•ā§āώ⧇ āĻāϟāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟāĻŋ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻĢāĻžāχāϞ āϝāĻž "āϰ⧁āϟāĻŋāϰ āϜāĻ¨ā§āϝ āϜāĻŋāĻœā§āĻžāĻžāϏāĻž āĻ•āϰ⧇ āύāĻžāĨ¤"

āϤāĻžāχ āĻāϰ āϝāĻžāĻ“ helm.sh āĻĄāĻ•ā§āϏ/āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ āĻŦāĻŋāĻ­āĻžāϗ⧇ āϝāĻžāύ āĻāĻŦāĻ‚ āϏ⧇āĻ–āĻžāύ āĻĨ⧇āϕ⧇ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϟāĻŋ āϚāĻžāϞāĻžāύ:

curl -s https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash

āĻāϰ āĻĒāϰ⧇, āϚāĻžāĻ°ā§āϟ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ āϝ⧋āĻ— āĻ•āϰ⧁āύ:

helm repo add stable https://kubernetes-charts.storage.googleapis.com/

āĻāĻ–āύ āϧāĻžāϰāĻŖāĻž āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ āĻ…āĻŦāĻ•āĻžāĻ āĻžāĻŽā§‹ āωāĻĒāĻžāĻĻāĻžāύ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āϝāĻžāĻ•:

  • āĻĒā§āϰāĻŦ⧇āĻļ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻ•;
  • āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ;
  • āĻ—ā§āϰāĻžāĻĢāĻžāύāĻž;
  • āĻļāĻ‚āϏāĻžāĻĒāĻ¤ā§āϰ-āĻŦā§āϝāĻŦāĻ¸ā§āĻĨāĻžāĻĒāĻ•

āĻĒā§āϰāĻŦ⧇āĻļ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻ•

āĻĒā§āϰāĻĨāĻŽ āωāĻĒāĻžāĻĻāĻžāύ āĻšāϞ āĻĒā§āϰāĻŦ⧇āĻļ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻ• - āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āϏāĻšāϜ āĻāĻŦāĻ‚ āĻŦāĻžāĻ•ā§āϏ⧇āϰ āĻŦāĻžāχāϰ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤāĨ¤ āĻāϟāĻŋ āĻ•āϰāϤ⧇, āĻļ⧁āϧ⧁ āϝāĻžāύ āϏāĻžāχāĻŸā§‡ āĻŦ⧇āϝāĻŧāĻžāϰ āĻŽā§‡āϟāĻžāϞ āĻŦāĻŋāĻ­āĻžāĻ— āĻāĻŦāĻ‚ āϏ⧇āĻ–āĻžāύ āĻĨ⧇āϕ⧇ āχāύāĻ¸ā§āϟāϞ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϟāĻŋ āϚāĻžāϞāĻžāύ:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.34.1/deploy/static/provider/baremetal/deploy.yaml

āϝāĻžāχāĻšā§‹āĻ•, āĻāχ āĻŽā§āĻšā§āĻ°ā§āϤ⧇ "āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ" āϚāĻžāĻĒāϤ⧇ āĻļ⧁āϰ⧁ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻĄāĻŋāĻ¸ā§āĻ• āφāχāĻ“āĻĒāĻŋāĻāϏ⧇ āϚāϞ⧇ āϝāĻžāϝāĻŧāĨ¤ āφāϏāϞ āĻŦāĻŋāώāϝāĻŧāϟāĻŋ āĻš'āϞ āχāύāĻ—ā§āϰ⧇āϏ āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞāĻžāϰ⧇āϰ āϏāĻžāĻĨ⧇, āĻĒā§āϰāϚ⧁āϰ āϏāĻ‚āĻ–ā§āϝāĻ• āϏāĻ‚āĻ¸ā§āĻĨāĻžāύ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻšāϝāĻŧ, āĻ…āύ⧇āĻ•āϗ⧁āϞāĻŋ API āĻ…āύ⧁āϰ⧋āϧ āĻ•āϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ‚ āϏ⧇āχ āĻ…āύ⧁āϏāĻžāϰ⧇, āχāĻ¤ā§āϝāĻžāĻĻāĻŋāϤ⧇ āĻĒā§āϰāϚ⧁āϰ āĻĄā§‡āϟāĻž āϞ⧇āĻ–āĻž āĻšāϝāĻŧāĨ¤ āϏāĻžāϧāĻžāϰāĻŖāĻ­āĻžāĻŦ⧇, āĻšāϝāĻŧ āĻāĻ•āϟāĻŋ āĻ•ā§āϞāĻžāϏ 10 āĻŽā§‡āĻŽāϰāĻŋ āĻ•āĻžāĻ°ā§āĻĄ āϖ⧁āĻŦ āωāĻ¤ā§āĻĒāĻžāĻĻāύāĻļā§€āϞ āύāϝāĻŧ, āĻŦāĻž āĻāĻ•āϟāĻŋ āĻāϏāĻĄāĻŋ āĻ•āĻžāĻ°ā§āĻĄ, āύ⧀āϤāĻŋāĻ—āϤāĻ­āĻžāĻŦ⧇, āĻāχ āϧāϰāύ⧇āϰ āϞ⧋āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āϝāĻĨ⧇āĻˇā§āϟ āύāϝāĻŧāĨ¤ āϝāĻžāχāĻšā§‹āĻ•, āĻĒā§āϰāĻžāϝāĻŧ 5 āĻŽāĻŋāύāĻŋāϟ āĻĒāϰ⧇ āϏāĻŦāĻ•āĻŋāϛ⧁ āĻļ⧁āϰ⧁ āĻšāϝāĻŧāĨ¤

āĻāĻ•āϟāĻŋ āύāĻžāĻŽāĻ¸ā§āĻĨāĻžāύ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āύāĻŋāϝāĻŧāĻžāĻŽāĻ• āĻāĻŦāĻ‚ āϤāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āϏāĻŽāĻ¸ā§āϤ āĻ•āĻŋāϛ⧁ āĻāϤ⧇ āωāĻĒāĻ¸ā§āĻĨāĻŋāϤ āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ:

root@pi-control:~# kubectl -n ingress-nginx get pod
NAME                                        READY   STATUS      RESTARTS   AGE
ingress-nginx-admission-create-2hwdx        0/1     Completed   0          31s
ingress-nginx-admission-patch-cp55c         0/1     Completed   0          31s
ingress-nginx-controller-7fd7d8df56-68qp5   1/1     Running     0          48s

āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ

āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻĻ⧁āϟāĻŋ āωāĻĒāĻžāĻĻāĻžāύ āϚāĻžāĻ°ā§āϟ āϰ⧇āĻĒā§‹ āĻĨ⧇āϕ⧇ āĻšā§‡āϞāĻŽā§‡āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻŽā§‹āϟāĻžāĻŽā§āϟāĻŋ āϏāĻšāϜāĨ¤

āĻ…āύ⧁āϏāĻ¨ā§āϧāĻžāύ āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ, āĻāĻ•āϟāĻŋ āύāĻžāĻŽāĻ¸ā§āĻĨāĻžāύ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻāϟāĻŋ āϏ⧇āϟ āĻ•āϰ⧁āύ:

helm search repo stable | grep prometheus
kubectl create ns monitoring
helm install prometheus --namespace monitoring stable/prometheus --set server.ingress.enabled=True --set server.ingress.hosts={"prometheus.home.pi"}

āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇, āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ 2āϟāĻŋ āĻĄāĻŋāĻ¸ā§āĻ• āĻ…āĻ°ā§āĻĄāĻžāϰ āĻ•āϰ⧇: āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ⧇āϰ āύāĻŋāĻœā§‡āϰ āĻĄā§‡āϟāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻŦāĻ‚ AlertManager-āĻāϰ āĻĄā§‡āϟāĻžāϰ āϜāĻ¨ā§āϝāĨ¤ āϝ⧇āĻšā§‡āϤ⧁ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇ āϕ⧋āύ⧋ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āĻ•ā§āϞāĻžāϏ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧāύāĻŋ, āϤāĻžāχ āĻĄāĻŋāĻ¸ā§āĻ• āĻ…āĻ°ā§āĻĄāĻžāϰ āĻ•āϰāĻž āĻšāĻŦ⧇ āύāĻž āĻāĻŦāĻ‚ āĻĒāĻĄ āĻļ⧁āϰ⧁ āĻšāĻŦ⧇ āύāĻžāĨ¤ āĻŦ⧇āϝāĻŧāĻžāϰ āĻŽā§‡āϟāĻžāϞ Kubernetes āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ, āφāĻŽāϰāĻž āϏāĻžāϧāĻžāϰāĻŖāϤ Ceph rbd āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ āĻĒāĻžāχ-āĻāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āĻāϟāĻŋ āĻ…āϤāĻŋāĻŽāĻžāĻ¤ā§āϰāĻžāϝāĻŧāĨ¤

āĻ…āϤāĻāĻŦ, āφāϏ⧁āύ āĻšā§‹āĻ¸ā§āϟāĻĒāĻĨ⧇ āĻāĻ•āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻ¸ā§āĻŸā§‹āϰ⧇āϜ āϤ⧈āϰāĻŋ āĻ•āϰāĻŋāĨ¤ āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ-āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻāĻŦāĻ‚ āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ-āϏāϤāĻ°ā§āĻ• āĻŦā§āϝāĻŦāĻ¸ā§āĻĨāĻžāĻĒāϕ⧇āϰ āϜāĻ¨ā§āϝ PV (āĻ¸ā§āĻĨāĻŋāϰ āĻ­āϞāĻŋāωāĻŽ) āĻāĻ•āϟāĻŋ āĻĢāĻžāχāϞ⧇ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻšāϝāĻŧ prometheus-pv.yaml в āύāĻŋāĻŦāĻ¨ā§āϧ⧇āϰ āωāĻĻāĻžāĻšāϰāĻŖ āϏāĻš āĻ—āĻŋāϟ āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ. PV āϜāĻ¨ā§āϝ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āφāĻ—āĻžāĻŽ āύ⧋āĻĄā§‡āϰ āĻĄāĻŋāĻ¸ā§āϕ⧇ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ āϝāĻžāϰ āϏāĻžāĻĨ⧇ āφāĻŽāϰāĻž āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏāϕ⧇ āφāĻŦāĻĻā§āϧ āĻ•āϰāϤ⧇ āϚāĻžāχ: āωāĻĻāĻžāĻšāϰāϪ⧇ āĻāϟāĻŋ āϞ⧇āĻ–āĻž āφāϛ⧇ nodeAffinity āĻšā§‹āĻ¸ā§āϟāύāĻžāĻŽ āĻĻā§āĻŦāĻžāϰāĻž pi-worker āĻāĻŦāĻ‚ āĻāϟāĻŋāϤ⧇ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ /data/localstorage/prometheus-server и /data/localstorage/prometheus-alertmanager.

āĻŽā§āϝāĻžāύāĻŋāĻĢ⧇āĻ¸ā§āϟāϟāĻŋ āĻĄāĻžāωāύāϞ⧋āĻĄ (āĻ•ā§āϞ⧋āύ) āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻāϟāĻŋ āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ⧇ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύ:

kubectl create -f prometheus-pv.yaml

āĻāχ āĻĒāĻ°ā§āϝāĻžāϝāĻŧ⧇, āφāĻŽāĻŋ āĻĒā§āϰāĻĨāĻŽ āĻāφāϰāĻāĻŽ āφāĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āϚāĻžāϰ⧇āϰ āϏāĻŽāĻ¸ā§āϝāĻžāϰ āϏāĻŽā§āĻŽā§āĻ–ā§€āύ āĻšāχāĨ¤ āϕ⧁āĻŦ⧇-āĻ¸ā§āĻŸā§‡āϟ-āĻŽā§‡āĻŸā§āϰāĻŋāĻ•ā§āϏ, āϝāĻž āĻĒā§āϰāĻŽāĻŋāĻĨāĻŋāωāϏ āϚāĻžāĻ°ā§āĻŸā§‡ āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āφāϛ⧇, āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āĻ…āĻ¸ā§āĻŦā§€āĻ•āĻžāϰ āĻ•āϰ⧇āϛ⧇āĨ¤ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ¤ā§āϰ⧁āϟāĻŋ āĻĻāĻŋāϝāĻŧ⧇āϛ⧇:

root@pi-control:~# kubectl -n monitoring logs prometheus-kube-state-metrics-c65b87574-l66d8
standard_init_linux.go:207: exec user process caused "exec format error"

āφāϏāϞ āĻŦāĻŋāώāϝāĻŧāϟāĻŋ āĻšāϞ āϝ⧇ kube-state-metrics CoreOS āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇āϰ āĻāĻ•āϟāĻŋ āϚāĻŋāĻ¤ā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āϝāĻž ARM-āĻāϰ āϜāĻ¨ā§āϝ āϏāĻ‚āĻ•āϞāĻŋāϤ āύāϝāĻŧ:

kubectl -n monitoring get deployments.apps prometheus-kube-state-metrics -o=jsonpath={.spec.template.spec.containers[].image}
quay.io/coreos/kube-state-metrics:v1.9.7

āφāĻŽāĻžāϕ⧇ āĻāĻ•āϟ⧁ āϗ⧁āĻ—āϞ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ āĻāĻŦāĻ‚ āϖ⧁āρāĻœā§‡ āĻĒ⧇āϝāĻŧ⧇āĻ›āĻŋ, āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻāĻ–āĻžāύ⧇ āχāĻŽā§‡āϜ. āĻāϟāĻŋāϰ āϏ⧁āĻŦāĻŋāϧāĻž āύāĻŋāϤ⧇, āϕ⧁āĻŦ⧇-āĻ¸ā§āĻŸā§‡āϟ-āĻŽā§‡āĻŸā§āϰāĻŋāĻ•ā§āϏ⧇āϰ āϜāĻ¨ā§āϝ āϕ⧋āύ āϚāĻŋāĻ¤ā§āϰāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϤāĻžāϰ āϏāĻžāĻĨ⧇ āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰāĻž āϝāĻžāĻ•:

helm upgrade prometheus --namespace monitoring stable/prometheus --set server.ingress.enabled=True --set server.ingress.hosts={"prometheus.home.pi"} --set kube-state-metrics.image.repository=carlosedp/kube-state-metrics --set kube-state-metrics.image.tag=v1.9.6

āϏāĻŦāĻ•āĻŋāϛ⧁ āϚāϞāϛ⧇ āĻ•āĻŋāύāĻž āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύ:

root@pi-control:~# kubectl -n monitoring get po
NAME                                             READY   STATUS              RESTARTS   AGE
prometheus-alertmanager-df65d99d4-6d27g          2/2     Running             0          5m56s
prometheus-kube-state-metrics-5dc5fd89c6-ztmqr   1/1     Running             0          5m56s
prometheus-node-exporter-49zll                   1/1     Running             0          5m51s
prometheus-node-exporter-vwl44                   1/1     Running             0          4m20s
prometheus-pushgateway-c547cfc87-k28qx           1/1     Running             0          5m56s
prometheus-server-85666fd794-z9qnc               2/2     Running             0          4m52s

āĻ—ā§āϰāĻžāĻĢāĻžāύāĻž āĻāĻŦāĻ‚ āϏāĻžāĻ°ā§āϟāĻŋāĻĢāĻŋāϕ⧇āϟ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰ

āϚāĻžāĻ°ā§āϟ āĻāĻŦāĻ‚ āĻĄā§āϝāĻžāĻļāĻŦā§‹āĻ°ā§āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āφāĻŽāϰāĻž āϏ⧇āϟ āĻ•āϰāĻŋ āĻ—ā§āϰāĻžāĻĢāĻžāύāĻž:

helm install grafana --namespace monitoring stable/grafana  --set ingress.enabled=true --set ingress.hosts={"grafana.home.pi"}

āφāωāϟāĻĒ⧁āϟ āĻļ⧇āώ⧇ āφāĻŽāϰāĻž āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻĒ⧇āϤ⧇ āĻĒāĻžāϰāĻŋ āϤāĻž āĻĻ⧇āĻ–āĻžāύ⧋ āĻšāĻŦ⧇:

kubectl get secret --namespace monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

āϏāĻžāĻ°ā§āϟāĻŋāĻĢāĻŋāϕ⧇āϟ āĻ…āĻ°ā§āĻĄāĻžāϰ āĻ•āϰāϤ⧇, āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧁āύ āϝāĻž āύāĻŋāĻļā§āϚāĻŋāϤāĻ­āĻžāĻŦ⧇ āϘāϟāĻŦ⧇-āĻŦā§āϝāĻŦāĻ¸ā§āĻĨāĻžāĻĒāĻ•. āĻāϟāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϤ⧇, āĻ…āύ⧁āĻ—ā§āϰāĻš āĻ•āϰ⧇ āĻĒāĻĄāĻŧ⧁āύ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ, āϝāĻž āĻšā§‡āϞāĻŽā§‡āϰ āϜāĻ¨ā§āϝ āωāĻĒāϝ⧁āĻ•ā§āϤ āφāĻĻ⧇āĻļ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇:

helm repo add jetstack https://charts.jetstack.io

helm install 
  cert-manager jetstack/cert-manager 
  --namespace cert-manager 
  --version v0.16.0 
  --set installCRDs=true

āĻŦāĻžāĻĄāĻŧāĻŋāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ¸ā§āĻŦ-āĻ¸ā§āĻŦāĻžāĻ•ā§āώāϰāĻŋāϤ āĻļāĻ‚āϏāĻžāĻĒāĻ¤ā§āϰ⧇āϰ āϜāĻ¨ā§āϝ, āĻāϟāĻŋ āϝāĻĨ⧇āĻˇā§āϟāĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻ•āχ āĻĒ⧇āϤ⧇ āϚāĻžāύ āĻāϰ āĻāύāĻ•ā§āϰāĻŋāĻĒā§āϟ āϝāĻžāĻ•, āϤāĻžāϰāĻĒāϰ āφāĻĒāύāĻžāϕ⧇ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āχāĻ¸ā§āϝ⧁āĻ•āĻžāϰ⧀ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻāχ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āφāĻŽāĻžāĻĻ⧇āϰ āύāĻŋāĻŦāĻ¨ā§āϧ⧇ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāĻŦ⧇ “Kubernetes-āĻ āϏāĻžāĻ°ā§āϟāĻŋ-āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰ⧇āϰ āϏāĻžāĻĨ⧇ Let's Encrypt āĻĨ⧇āϕ⧇ SSL āϏāĻžāĻ°ā§āϟāĻŋāĻĢāĻŋāϕ⧇āϟÂģ.

āφāĻŽāĻŋ āύāĻŋāĻœā§‡āχ āĻāϰ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ⧇ āĻŦāϏāϤāĻŋ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧇āĻ›āĻŋ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ⧇ āωāĻĻāĻžāĻšāϰāĻŖ, āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ āύāĻŋāĻšā§āϛ⧇ āϝ⧇ āĻ¸ā§āĻŸā§‡āϜāĻŋāĻ‚ LE āϝāĻĨ⧇āĻˇā§āϟ āĻšāĻŦ⧇⧎ āφāĻŽāϰāĻž āωāĻĻāĻžāĻšāϰāϪ⧇ āχ-āĻŽā§‡āχāϞ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻŋ, āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻĢāĻžāχāϞ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻŋ āĻāĻŦāĻ‚ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻŋ (cert-manager-cluster-issuer.yaml):

kubectl create -f cert-manager-cluster-issuer.yaml

āĻāĻ–āύ āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ āĻļāĻ‚āϏāĻžāĻĒāĻ¤ā§āϰ āĻ…āĻ°ā§āĻĄāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻ—ā§āϰāĻžāĻĢāύāĻžāϰ āϜāĻ¨ā§āϝāĨ¤ āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĄā§‹āĻŽā§‡āχāύ āĻāĻŦāĻ‚ āĻŦāĻžāχāϰ⧇ āĻĨ⧇āϕ⧇ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻšāĻŦ⧇āĨ¤ āφāĻŽāĻžāϰ āĻāĻ•āϟāĻŋ āĻĄā§‹āĻŽā§‡āύ āφāϛ⧇, āĻāĻŦāĻ‚ āφāĻŽāĻŋ āϤ⧈āϰāĻŋ āχāύāĻ—ā§āϰ⧇āϏ-āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞāĻžāϰ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻ…āύ⧁āϏāĻžāϰ⧇ āĻšā§‹āĻŽ āϰāĻžāωāϟāĻžāϰ⧇ āĻĒā§‹āĻ°ā§āϟ 80 āĻāĻŦāĻ‚ 443 āĻĢāϰāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻ•āϰ⧇ āĻŸā§āĻ°ā§āϝāĻžāĻĢāĻŋāĻ• āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰ⧇āĻ›āĻŋ:

kubectl -n ingress-nginx get svc
NAME                                 TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
ingress-nginx-controller             NodePort    10.2.206.61    <none>        80:31303/TCP,443:30498/TCP   23d

āĻāχ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻĒā§‹āĻ°ā§āϟ 80 31303 āĻ āĻ…āύ⧁āĻŦāĻžāĻĻ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āĻĒā§‹āĻ°ā§āϟ 443 āĻĨ⧇āϕ⧇ 30498āĨ¤ (āĻŦāĻ¨ā§āĻĻāϰāϗ⧁āϞāĻŋ āĻāϞ⧋āĻŽā§‡āϞ⧋āĻ­āĻžāĻŦ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ, āϤāĻžāχ āφāĻĒāύāĻžāϰ āφāϞāĻžāĻĻāĻž āĻšāĻŦ⧇āĨ¤)

āĻāĻ–āĻžāύ⧇ āĻāĻ•āϟāĻŋ āĻļāĻ‚āϏāĻžāĻĒāĻ¤ā§āϰ⧇āϰ āĻāĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖ (cert-manager-grafana-certificate.yaml):

apiVersion: cert-manager.io/v1alpha2
kind: Certificate
metadata:
  name: grafana
  namespace: monitoring
spec:
  dnsNames:
    - grafana.home.pi
  secretName: grafana-tls
  issuerRef:
    kind: ClusterIssuer
    name: letsencrypt-staging

āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇ āĻāϟāĻŋ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύ:

kubectl create -f cert-manager-grafana-certificate.yaml

āĻāϰ āĻĒāϰ⧇, āχāύāĻ—ā§āϰ⧇āϏ āϰāĻŋāϏ⧋āĻ°ā§āϏ āωāĻĒāĻ¸ā§āĻĨāĻŋāϤ āĻšāĻŦ⧇, āϝāĻžāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āφāϏ⧁āύ āĻāύāĻ•ā§āϰāĻŋāĻĒā§āϟ āϝāĻžāϚāĻžāχ āĻ•āϰāĻŦ⧇:

root@pi-control:~# kubectl -n monitoring get ing
NAME                        CLASS    HOSTS                        ADDRESS         PORTS   AGE
cm-acme-http-solver-rkf8l   <none>   grafana.home.pi      192.168.88.31   80      72s
grafana                     <none>   grafana.home.pi      192.168.88.31   80      6d17h
prometheus-server           <none>   prometheus.home.pi   192.168.88.31   80      8d

āϝāĻžāϚāĻžāχāĻ•āϰāĻŖ āĻĒāĻžāϏ āĻ•āϰāĻžāϰ āĻĒāϰ⧇, āφāĻŽāϰāĻž āϏ⧇āχ āϏāĻ‚āĻ¸ā§āĻĨāĻžāύāϟāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻŦ certificate āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ, āĻāĻŦāĻ‚ āωāĻĒāϰ⧇āϰ āĻ—ā§‹āĻĒāύ⧇ grafana-tls - āϏāĻžāĻ°ā§āϟāĻŋāĻĢāĻŋāϕ⧇āϟ āĻāĻŦāĻ‚ āϕ⧀āĨ¤ āφāĻĒāύāĻŋ āĻ…āĻŦāĻŋāϞāĻŽā§āĻŦ⧇ āϝāĻžāϚāĻžāχ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āϕ⧇ āĻļāĻ‚āϏāĻžāĻĒāĻ¤ā§āϰ āϜāĻžāϰāĻŋ āĻ•āϰ⧇āϛ⧇:

root@pi-control:~# kubectl -n monitoring get certificate
NAME      READY   SECRET        AGE
grafana   True    grafana-tls   13m

root@pi-control:~# kubectl -n monitoring get secrets grafana-tls -ojsonpath="{.data['tls.crt']}" | base64 -d | openssl x509 -issuer -noout
issuer=CN = Fake LE Intermediate X1

āĻ—ā§āϰāĻžāĻĢāύāĻžāϝāĻŧ āĻĢāĻŋāϰ⧇ āϝāĻžāĻ“āϝāĻŧāĻž āϝāĻžāĻ•āĨ¤ āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰāĻž āĻļāĻ‚āϏāĻžāĻĒāĻ¤ā§āϰ āĻ…āύ⧁āϏāĻžāϰ⧇ TLS-āĻāϰ āϏ⧇āϟāĻŋāĻ‚āϏ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āϤāĻžāϰ āĻšā§‡āϞāĻŽ āϰāĻŋāϞāĻŋāϜāϕ⧇ āĻ•āĻŋāϛ⧁āϟāĻž āĻ āĻŋāĻ• āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤

āĻāϟāĻŋ āĻ•āϰāϤ⧇, āϚāĻžāĻ°ā§āϟāϟāĻŋ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰ⧁āύ, āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ āĻĨ⧇āϕ⧇ āĻāϟāĻŋ āϏāĻŽā§āĻĒāĻžāĻĻāύāĻž āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧁āύ:

helm pull --untar stable/grafana

āĻāĻ•āϟāĻŋ āĻĢāĻžāχāϞ⧇ āϏāĻŽā§āĻĒāĻžāĻĻāύāĻž āĻ•āϰāĻž āĻšāĻšā§āϛ⧇ grafana/values.yaml TLS āĻĒāϰāĻžāĻŽāĻŋāϤāĻŋ:

  tls:
    - secretName: grafana-tls
      hosts:
        - grafana.home.pi

āĻāĻ–āĻžāύ⧇ āφāĻĒāύāĻŋ āĻ…āĻŦāĻŋāϞāĻŽā§āĻŦ⧇ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž Prometheus āĻšāĻŋāϏāĻžāĻŦ⧇ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ datasource:

datasources:
  datasources.yaml:
    apiVersion: 1
    datasources:
    - name: Prometheus
      type: prometheus
      url: http://prometheus-server:80
      access: proxy
      isDefault: true

āĻāĻ–āύ āφāĻŽāϰāĻž āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ āĻĨ⧇āϕ⧇ Grafana āϚāĻžāĻ°ā§āϟ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻŋ:

helm upgrade grafana --namespace monitoring ./grafana  --set ingress.enabled=true --set ingress.hosts={"grafana.home.pi"}

āφāĻŽāϰāĻž āχāύāĻ—ā§āϰ⧇āϏ āϝ⧇ āĻšā§‡āĻ• grafana āĻĒā§‹āĻ°ā§āϟ 443 āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ HTTPS āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āφāϛ⧇:

root@pi-control:~# kubectl -n monitoring get ing grafana
NAME      CLASS    HOSTS                     ADDRESS         PORTS     AGE
grafana   <none>   grafana.home.pi           192.168.88.31   80, 443   63m

root@pi-control:~# curl -kI https://grafana.home.pi
HTTP/2 302
server: nginx/1.19.1
date: Tue, 28 Jul 2020 19:01:31 GMT
content-type: text/html; charset=utf-8
cache-control: no-cache
expires: -1
location: /login
pragma: no-cache
set-cookie: redirect_to=%2F; Path=/; HttpOnly; SameSite=Lax
x-frame-options: deny
strict-transport-security: max-age=15724800; includeSubDomains

āĻ•āĻ°ā§āĻŽā§‡ Grafana āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āĻ•āϰāϤ⧇, āφāĻĒāύāĻŋ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻāĻŦāĻ‚ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āϕ⧁āĻŦ⧇-āĻ¸ā§āĻŸā§‡āϟ-āĻŽā§‡āĻŸā§āϰāĻŋāĻ•ā§āϏ⧇āϰ āϜāĻ¨ā§āϝ āĻĄā§āϝāĻžāĻļāĻŦā§‹āĻ°ā§āĻĄ. āĻāϟāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻāϟāĻŋāϰ āĻŽāϤ⧋:

āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ āĻĒāĻžāχāϤ⧇ āĻ¸ā§āĻ•ā§āĻ°ā§āϝāĻžāϚ āĻĨ⧇āϕ⧇ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ

āφāĻŽāĻŋ āύ⧋āĻĄ āϰāĻĒā§āϤāĻžāύāĻŋāĻ•āĻžāϰāϕ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĄā§āϝāĻžāĻļāĻŦā§‹āĻ°ā§āĻĄ āϝ⧋āĻ— āĻ•āϰāĻžāϰ āĻĒāϰāĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāĻšā§āĻ›āĻŋ: āĻāϟāĻŋ "āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ" (āϏāĻŋāĻĒāĻŋāχāω āϞ⧋āĻĄ, āĻŽā§‡āĻŽāϰāĻŋ, āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ•, āĻĄāĻŋāĻ¸ā§āĻ• āĻŦā§āϝāĻŦāĻšāĻžāϰ āχāĻ¤ā§āϝāĻžāĻĻāĻŋ) āĻāϰ āϏāĻžāĻĨ⧇ āϕ⧀ āϘāϟāϛ⧇ āϤāĻž āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤāĻ­āĻžāĻŦ⧇ āĻĻ⧇āĻ–āĻžāĻŦ⧇āĨ¤

āĻāϰ āĻĒāϰ⧇, āφāĻŽāĻŋ āĻŽāύ⧇ āĻ•āϰāĻŋ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻ—ā§āϰāĻšāĻŖ āĻāĻŦāĻ‚ āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ!

āϏāĻŽāĻžāĻŦ⧇āĻļ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āύ⧋āϟ

āĻāφāϰāĻāĻŽ āφāĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āϚāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϤ⧈āϰāĻŋāϰ āϜāĻ¨ā§āϝ āĻ•āĻŽāĻĒāĻ•ā§āώ⧇ āĻĻ⧁āϟāĻŋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āĻĒā§āϰāĻĨāĻŽāϤ, āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ ARM āĻĄāĻŋāĻ­āĻžāχāϏ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āϝāĻžāχāĻšā§‹āĻ•, āĻĻ⧁āϟāĻŋ āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ āĻĒāĻŋāϏ⧇āϰ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻĒ⧁āύāĻ°ā§āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āĻĒāϰ⧇, āφāĻŽāĻŋ āĻŦ⧁āĻāϤ⧇ āĻĒ⧇āϰ⧇āĻ›āĻŋāϞāĻžāĻŽ āϝ⧇ āϤāĻžāϰāĻž āϏāĻŽāĻžāĻŦ⧇āĻļ⧇āĻ“ āϟāĻŋāϕ⧇ āĻĨāĻžāĻ•āĻŦ⧇ āύāĻžāĨ¤ āĻ…āϤāĻāĻŦ, āφāĻŽāĻŋ āύāĻŋāĻœā§‡āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ āĻĒāĻžāχ 4 āĻ…āĻ°ā§āĻĄāĻžāϰ āĻ•āϰ⧇āĻ›āĻŋ (āĻāϟāĻŋ āφāϰāĻ“ āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀ āĻāĻŦāĻ‚ āĻāϤ⧇ 4 āϜāĻŋāĻŦāĻŋ āĻŽā§‡āĻŽāϰāĻŋ āϰāϝāĻŧ⧇āϛ⧇) - āφāĻŽāĻŋ āĻāϟāĻŋāϤ⧇ āĻāϟāĻŋ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻ•āϰāĻžāϰ āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāύāĻž āĻ•āϰāĻ›āĻŋāĨ¤

āĻĻā§āĻŦāĻŋāϤ⧀āϝāĻŧ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāϟāĻŋ āφāϰāĻ“ āĻļāĻ•ā§āϤāĻŋāĻļāĻžāϞ⧀ āĻŽā§‡āĻļāĻŋāύ⧇ āĻāĻ•āϟāĻŋ āĻŽāĻžāĻ˛ā§āϟāĻŋāφāĻ°ā§āĻ• āĻĄāĻ•āĻžāϰ āχāĻŽā§‡āϜ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāĨ¤ āĻāχ āϜāĻ¨ā§āϝ āφāϛ⧇ āĻĄāĻ•āĻžāϰ āĻŦāĻŋāĻ˛ā§āĻĄāĻāĻ•ā§āϏ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ. āϝāĻĻāĻŋ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋ āĻāĻ•āϟāĻŋ āϏāĻ‚āĻ•āϞāĻŋāϤ āĻ­āĻžāώāĻžāϝāĻŧ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ ARM-āĻāϰ āϜāĻ¨ā§āϝ āĻ•ā§āϰāϏ-āϏāĻ‚āĻ•āϞāύ āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤ āφāĻŽāĻŋ āĻāχ āĻĒāĻĨ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ¸ā§āϤ āϏ⧇āϟāĻŋāĻ‚āϏ āĻŦāĻ°ā§āĻŖāύāĻž āĻ•āϰāĻŦ āύāĻž, āĻ•āĻžāϰāĻŖ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻĒ⧃āĻĨāĻ• āύāĻŋāĻŦāĻ¨ā§āϧ⧇ āύ⧇āϤ⧃āĻ¤ā§āĻŦ āĻĻ⧇āĻŦ⧇āĨ¤ āĻāχ āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧇, āφāĻĒāύāĻŋ "āϏāĻ°ā§āĻŦāϜāύ⧀āύ" āϚāĻŋāĻ¤ā§āϰāϗ⧁āϞāĻŋ āĻ…āĻ°ā§āϜāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ: āĻāĻ•āϟāĻŋ ARM āĻŽā§‡āĻļāĻŋāύ⧇ āϚāϞāĻŽāĻžāύ āĻĄāĻ•āĻžāϰ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āφāĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āϚāĻžāϰ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āϚāĻŋāĻ¤ā§āϰāϟāĻŋ āϞ⧋āĻĄ āĻ•āϰāĻŦ⧇āĨ¤

āωāĻĒāϏāĻ‚āĻšāĻžāϰ

āϏāĻŽā§āĻĒāĻžāĻĻāĻŋāϤ āĻĒāϰ⧀āĻ•ā§āώāĻžāϟāĻŋ āφāĻŽāĻžāϰ āϏāĻŽāĻ¸ā§āϤ āĻĒā§āϰāĻ¤ā§āϝāĻžāĻļāĻžāϕ⧇ āĻ…āϤāĻŋāĻ•ā§āϰāĻŽ āĻ•āϰ⧇āϛ⧇: [āĻ…āĻ¨ā§āϤāϤ] āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻŦ⧇āϏ āϏāĻš "āĻ­ā§āϝāĻžāύāĻŋāϞāĻž" āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ āĻāφāϰāĻāĻŽ-āĻ āĻ­āĻžāϞ āĻŦā§‹āϧ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻāϟāĻŋāϰ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ⧇āϰ āϏāĻŽāϝāĻŧ āϕ⧇āĻŦāϞ āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āϏ⧂āĻ•ā§āĻˇā§āĻŽāϤāĻž āĻĻ⧇āĻ–āĻž āĻĻ⧇āϝāĻŧāĨ¤

āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ āĻĒāĻžāχ 3B+ āύāĻŋāĻœā§‡āϰāĻžāχ CPU-āϤ⧇ āϞ⧋āĻĄ āϰāĻžāϖ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āϤāĻžāĻĻ⧇āϰ SD āĻ•āĻžāĻ°ā§āĻĄāϗ⧁āϞāĻŋ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻĒāĻˇā§āϟ āĻŦāĻžāϧāĻžāĨ¤ āϏāĻšāĻ•āĻ°ā§āĻŽā§€āϰāĻž āĻĒāϰāĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāϝāĻŧ⧇āϛ⧇āύ āϝ⧇ āĻ•āĻŋāϛ⧁ āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ USB āĻĨ⧇āϕ⧇ āĻŦ⧁āϟ āĻ•āϰāĻž āϏāĻŽā§āĻ­āĻŦ, āϝ⧇āĻ–āĻžāύ⧇ āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ SSD āϏāĻ‚āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ: āϤāĻžāĻšāϞ⧇ āϏāĻŽā§āĻ­āĻŦāϤ āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋ āφāϰāĻ“ āĻ­āĻžāϞ āĻšāϝāĻŧ⧇ āϝāĻžāĻŦ⧇āĨ¤

Grafana āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāĻ–āĻžāύ⧇ CPU āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻāĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖ āϰāϝāĻŧ⧇āϛ⧇:

āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ āĻĒāĻžāχāϤ⧇ āĻ¸ā§āĻ•ā§āĻ°ā§āϝāĻžāϚ āĻĨ⧇āϕ⧇ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ

āĻĒāϰ⧀āĻ•ā§āώāĻž-āύāĻŋāϰ⧀āĻ•ā§āώāĻž āĻāĻŦāĻ‚ "āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻžāϰ" āϜāĻ¨ā§āϝ, āφāĻŽāĻžāϰ āĻŽāϤ⧇, "āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ" āĻāϰ āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āĻāĻ•āχ āĻŽāĻŋāύāĻŋāϕ⧁āĻŦ⧇āϰ āĻšā§‡āϝāĻŧ⧇ āĻ…āύ⧇āĻ• āĻ­āĻžāϞ⧋ āĻ…āĻĒāĻžāϰ⧇āĻļāύ⧇āϰ āĻ…āύ⧁āĻ­ā§‚āϤāĻŋ āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰ⧇, āĻ•āĻžāϰāĻŖ āϏāĻŽāĻ¸ā§āϤ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ āωāĻĒāĻžāĻĻāĻžāύ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āφāϛ⧇ āĻāĻŦāĻ‚ "āĻĒā§āϰāĻžāĻĒā§āϤāĻŦāϝāĻŧāĻ¸ā§āĻ•āĻĻ⧇āϰ āĻŽāϤ⧋" āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤

āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇, āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ āĻĒāĻžāχ-āϤ⧇ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϰ⧂āĻĒ⧇ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāĻŋāϤ āϏāĻŽāĻ—ā§āϰ CI/CD āϚāĻ•ā§āϰāϕ⧇ āĻ•ā§āϞāĻžāĻ¸ā§āϟāĻžāϰ⧇ āϝ⧋āĻ— āĻ•āϰāĻžāϰ āĻāĻ•āϟāĻŋ āϧāĻžāϰāĻŖāĻž āϰāϝāĻŧ⧇āϛ⧇āĨ¤ AWS Gravitons-āĻ K8 āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻžāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āϕ⧇āω āϤāĻžāĻĻ⧇āϰ āĻ…āĻ­āĻŋāĻœā§āĻžāϤāĻž āĻļ⧇āϝāĻŧāĻžāϰ āĻ•āϰāϞ⧇āĻ“ āφāĻŽāĻŋ āϖ⧁āĻļāĻŋ āĻšāĻŦāĨ¤

PS āĻšā§āϝāĻžāρ, "āĻ‰ā§ŽāĻĒāĻžāĻĻāύ" āφāĻŽāĻžāϰ āϧāĻžāϰāĻŖāĻžāϰ āĻšā§‡āϝāĻŧ⧇ āĻ•āĻžāĻ›āĻžāĻ•āĻžāĻ›āĻŋ āĻšāϤ⧇ āĻĒāĻžāϰ⧇:

āϰāĻžāĻ¸ā§āĻĒāĻŦ⧇āϰāĻŋ āĻĒāĻžāχāϤ⧇ āĻ¸ā§āĻ•ā§āĻ°ā§āϝāĻžāϚ āĻĨ⧇āϕ⧇ āĻĒā§‚āĻ°ā§āĻŖāĻžāĻ™ā§āĻ— āϕ⧁āĻŦāĻžāϰāύ⧇āϟāϏ

PPS

āφāĻŽāĻžāĻĻ⧇āϰ āĻŦā§āϞāϗ⧇āĻ“ āĻĒāĻĄāĻŧ⧁āύ:

āωāĻ¤ā§āϏ: www.habr.com

DDoS āϏ⧁āϰāĻ•ā§āώāĻž, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻš āϏāĻžāχāϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ đŸ”Ĩ DDoS āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻš āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ | ProHoster