แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒ˜แƒกแƒฃแƒœแƒแƒ แƒ˜แƒแƒœแƒ˜ Kubernetes

แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒ˜ แƒ›แƒแƒ›แƒ–แƒแƒ“แƒ“แƒ แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ˜แƒก แƒฌแƒ˜แƒœแƒ แƒ“แƒฆแƒ”แƒก "DevOps แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒ แƒ“แƒ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜".

แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒ˜แƒกแƒฃแƒœแƒแƒ แƒ˜แƒแƒœแƒ˜ Kubernetes

แƒ—แƒฃ แƒแƒ›แƒแƒก แƒ™แƒ˜แƒ—แƒฎแƒฃแƒšแƒแƒ‘แƒ—, แƒแƒšแƒ‘แƒแƒ— แƒ’แƒกแƒ›แƒ”แƒœแƒ˜แƒแƒ— แƒ แƒแƒฆแƒแƒช Kubernetes-แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ (แƒ“แƒ แƒ—แƒฃ แƒแƒ แƒ, แƒ แƒแƒ’แƒแƒ  แƒ›แƒแƒฎแƒ•แƒ“แƒ˜แƒ— แƒแƒฅ?) แƒ›แƒแƒ’แƒ แƒแƒ› แƒ™แƒแƒœแƒ™แƒ แƒ”แƒขแƒฃแƒšแƒแƒ“ แƒ แƒ แƒแƒ แƒ˜แƒก Kubernetes? แƒ”แƒก "แƒกแƒแƒ›แƒ แƒ”แƒฌแƒ•แƒ”แƒšแƒ แƒ™แƒšแƒแƒกแƒ˜แƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒแƒ แƒ™แƒ”แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒ"? แƒแƒœ "Cloud-Native แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ"? แƒ”แƒก แƒกแƒแƒ”แƒ แƒ—แƒแƒ“ แƒ แƒแƒก แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก?

แƒ›แƒแƒ แƒ—แƒแƒšแƒ˜ แƒ’แƒ˜แƒ—แƒฎแƒ แƒแƒ—, 100%-แƒ˜แƒ— แƒแƒ  แƒ•แƒแƒ  แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ•แƒคแƒ˜แƒฅแƒ แƒแƒ‘, แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒแƒ แƒจแƒ˜แƒœแƒแƒ’แƒแƒœแƒจแƒ˜ แƒฉแƒแƒฆแƒ แƒ›แƒแƒ•แƒ”แƒ‘แƒ แƒ“แƒ แƒ˜แƒ›แƒ˜แƒก แƒ“แƒแƒœแƒแƒฎแƒ•แƒ, แƒ—แƒฃ แƒ แƒ แƒฎแƒ“แƒ”แƒ‘แƒ แƒ แƒ”แƒแƒšแƒฃแƒ แƒแƒ“ แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒจแƒ˜ แƒ›แƒ˜แƒกแƒ˜ แƒแƒ‘แƒกแƒขแƒ แƒแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒคแƒ”แƒœแƒ˜แƒก แƒฅแƒ•แƒ”แƒจ. แƒแƒกแƒ” แƒ แƒแƒ›, แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ’แƒแƒกแƒแƒ แƒ—แƒแƒ‘แƒแƒ“, แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒ แƒ”แƒแƒšแƒฃแƒ แƒแƒ“ แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ โ€žแƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜โ€œ. (แƒ”แƒก แƒ‘แƒ”แƒ•แƒ แƒแƒ“ แƒฃแƒคแƒ แƒ แƒแƒ“แƒ•แƒ˜แƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ, แƒ•แƒ˜แƒ“แƒ แƒ” Kubernetes แƒ แƒ—แƒฃแƒšแƒ˜ แƒ’แƒ–แƒ.)

แƒ•แƒคแƒ˜แƒฅแƒ แƒแƒ‘, แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒแƒฅแƒ•แƒ— Kubernetes, Linux แƒ“แƒ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒ‘แƒแƒ–แƒ˜แƒกแƒ แƒชแƒแƒ“แƒœแƒ. แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜, แƒ แƒแƒ–แƒ”แƒช แƒแƒฅ แƒ•แƒกแƒแƒฃแƒ‘แƒ แƒแƒ‘แƒ—, แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ™แƒ•แƒšแƒ”แƒ•แƒ˜แƒ—แƒ˜/แƒกแƒแƒกแƒฌแƒแƒ•แƒšแƒ แƒ›แƒ˜แƒ–แƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒกแƒแƒ, แƒœแƒฃ แƒ’แƒแƒ›แƒแƒ˜แƒขแƒแƒœแƒ— แƒ›แƒแƒ— แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒแƒจแƒ˜!

แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒแƒก

Kubernetes แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ‘แƒ”แƒ•แƒ  แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒก. แฒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ— แƒ•แƒ˜แƒ™แƒ˜แƒžแƒ”แƒ“แƒ˜แƒแƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ:

แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒ˜แƒกแƒฃแƒœแƒแƒ แƒ˜แƒแƒœแƒ˜ Kubernetes

แƒแƒฅ แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ แƒ›แƒ˜แƒœแƒ˜แƒ›แƒฃแƒ› แƒ แƒ•แƒ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒฃแƒ’แƒฃแƒšแƒ”แƒ‘แƒ”แƒšแƒ•แƒงแƒแƒคแƒ— แƒ›แƒแƒ— แƒฃแƒ›แƒ”แƒขแƒ”แƒกแƒแƒ‘แƒแƒก. แƒ›แƒ˜แƒœแƒ“แƒ แƒ’แƒแƒœแƒ•แƒแƒชแƒฎแƒแƒ“แƒ, แƒ แƒแƒ› แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ แƒแƒ›, แƒ แƒแƒกแƒแƒช แƒ’แƒแƒœแƒ˜แƒ•แƒ แƒฃแƒšแƒแƒ“ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ•แƒฃแƒฌแƒแƒ“แƒแƒ— Kubernetes, แƒจแƒ”แƒ“แƒ’แƒ”แƒ‘แƒ แƒกแƒแƒ›แƒ˜ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ˜แƒกแƒ’แƒแƒœ:

  • แƒ™แƒฃแƒ‘แƒ”แƒšแƒ”แƒขแƒ˜
  • kube-apiserver (แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒแƒ›แƒแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ etcd-แƒ–แƒ” - แƒ›แƒ˜แƒกแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ)
  • แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ“แƒ แƒ (แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ Docker)

แƒ•แƒœแƒแƒฎแƒแƒ—, แƒ แƒแƒก แƒแƒ›แƒ‘แƒแƒ‘แƒก แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒ›แƒแƒ—แƒ’แƒแƒœแƒ–แƒ” (แƒ แƒฃแƒกแƒ˜., แƒ˜แƒœแƒ’แƒšแƒ˜แƒกแƒฃแƒ แƒ˜.). แฒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“ แƒ™แƒฃแƒ‘แƒ”แƒšแƒ”แƒขแƒ˜:

แƒแƒ’แƒ”แƒœแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒ™แƒ•แƒแƒœแƒซแƒ–แƒ”. แƒ˜แƒก แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒ› แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒžแƒแƒ“แƒจแƒ˜.

แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒแƒ“ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒแƒ“ แƒŸแƒฆแƒ”แƒ แƒก. แƒ แƒแƒช แƒจแƒ”แƒ”แƒฎแƒ”แƒ‘แƒ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ•แƒแƒ“แƒ”แƒ‘แƒ˜ (แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ“แƒ แƒ)?

แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒ แƒแƒ แƒ˜แƒก แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜แƒ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“.

แƒซแƒแƒšแƒ˜แƒแƒœ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒขแƒ˜แƒฃแƒšแƒ˜. แƒ›แƒแƒ’แƒ แƒแƒ› แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ˜แƒชแƒœแƒแƒ‘แƒ— Docker-แƒก, แƒ›แƒแƒจแƒ˜แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒฅแƒแƒœแƒ“แƒ”แƒ— แƒ–แƒแƒ’แƒแƒ“แƒ˜ แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒ แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒแƒก แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก แƒ˜แƒ’แƒ˜. (แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒกแƒ แƒ“แƒ แƒ™แƒฃแƒ‘แƒšแƒ”แƒขแƒก แƒจแƒแƒ แƒ˜แƒก แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒšแƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ˜แƒฏแƒ•แƒœแƒ˜แƒก แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒ˜, แƒคแƒแƒฅแƒขแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“, แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ“แƒแƒฎแƒ•แƒ”แƒฌแƒ˜แƒšแƒ˜แƒ แƒ“แƒ แƒ›แƒแƒ— แƒแƒฅ แƒแƒ  แƒจแƒ”แƒ•แƒแƒš.)

ะ˜ API แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜?

API แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒแƒ แƒ˜แƒก Kubernetes แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒžแƒแƒœแƒ”แƒšแƒ˜แƒก แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ•แƒšแƒ”แƒœแƒก Kubernetes API-แƒก. API แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒแƒ แƒ˜แƒก Kubernetes แƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒžแƒแƒœแƒ”แƒšแƒ˜แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ”

แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒก, แƒ•แƒ˜แƒกแƒแƒช แƒแƒ“แƒ”แƒกแƒ›แƒ” แƒ แƒแƒ˜แƒ›แƒ” แƒ’แƒแƒฃแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ˜แƒ Kubernetes-แƒ—แƒแƒœ, แƒ›แƒแƒฃแƒฌแƒ˜แƒ แƒ˜แƒœแƒขแƒ”แƒ แƒแƒฅแƒชแƒ˜แƒ API-แƒกแƒ—แƒแƒœ แƒžแƒ˜แƒ แƒ“แƒแƒžแƒ˜แƒ  แƒแƒœ kubectl-แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ˜แƒก แƒ’แƒฃแƒšแƒ˜, แƒ แƒแƒช แƒแƒฅแƒชแƒ”แƒ•แƒก Kubernetes Kubernetes - แƒขแƒ•แƒ˜แƒœแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฅแƒชแƒ”แƒ•แƒก YAML-แƒ˜แƒก แƒ›แƒ—แƒ”แƒ‘แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒงแƒ•แƒ”แƒšแƒแƒ› แƒ•แƒ˜แƒชแƒ˜แƒ— แƒ“แƒ แƒ’แƒ•แƒ˜แƒงแƒ•แƒแƒ แƒก (?) แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ˜แƒœแƒคแƒ แƒแƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒแƒ“. แƒแƒจแƒ™แƒแƒ แƒแƒ, แƒ แƒแƒ› API แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒฌแƒแƒ แƒ›แƒแƒ“แƒ’แƒ”แƒœแƒ˜แƒšแƒ˜ แƒฉแƒ•แƒ”แƒœแƒก แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ  แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒแƒจแƒ˜.

แƒฌแƒ˜แƒœแƒแƒžแƒ˜แƒ แƒแƒ‘แƒ”แƒ‘แƒ˜

  • Linux แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒแƒœ แƒคแƒ˜แƒ–แƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ root แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ— (แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ  แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ–แƒ” แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘ Ubuntu 18.04-แƒก).
  • แƒ“แƒ แƒ”แƒก แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜!

แƒ›แƒแƒกแƒแƒฌแƒงแƒ”แƒœแƒ˜ แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ

แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒแƒ— Docker แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ—. (แƒแƒ  แƒ•แƒแƒžแƒ˜แƒ แƒ”แƒ‘ แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒก แƒ˜แƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก Docker แƒ“แƒ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜; แƒ—แƒฃ แƒ’แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒ—, แƒแƒ แƒ˜แƒก แƒ›แƒจแƒ•แƒ”แƒœแƒ˜แƒ”แƒ แƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒ˜). แƒ›แƒแƒ“แƒ˜แƒ— แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ“แƒแƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒแƒ— แƒ˜แƒ’แƒ˜ apt:

$ sudo apt install docker.io
$ sudo systemctl start docker

แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒแƒ— Kubernetes แƒ‘แƒ˜แƒœแƒแƒ แƒ”แƒ‘แƒ˜. แƒกแƒ˜แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒ”แƒจแƒ˜, แƒฉแƒ•แƒ”แƒœแƒ˜ "แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก" แƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ 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 แƒฃแƒœแƒ“แƒ แƒ˜แƒ›แƒฃแƒจแƒแƒแƒก แƒ แƒแƒ’แƒแƒ แƒช root. แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒšแƒแƒ’แƒ˜แƒ™แƒฃแƒ แƒ˜แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ›แƒแƒก แƒ›แƒ—แƒ”แƒšแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒ›แƒแƒ แƒ—แƒ•แƒ แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ. แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฎแƒ”แƒ“แƒแƒ— แƒ›แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒก:

$ ./kubelet -h
<ัะปะธัˆะบะพะผ ะผะฝะพะณะพ ัั‚ั€ะพะบ, ั‡ั‚ะพะฑั‹ ั€ะฐะทะผะตัั‚ะธั‚ัŒ ะทะดะตััŒ>
$ ./kubelet -h | wc -l
284

Wow, แƒแƒ›แƒ“แƒ”แƒœแƒ˜ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜! แƒกแƒแƒ‘แƒ”แƒ“แƒœแƒ˜แƒ”แƒ แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ›แƒแƒ—แƒ’แƒแƒœแƒ˜ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ. แƒแƒฅ แƒแƒ แƒ˜แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒ•แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒก:

--pod-manifest-path string

แƒ’แƒ–แƒ แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒก แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒžแƒแƒ“แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒแƒœ แƒ’แƒ–แƒ แƒคแƒแƒ˜แƒšแƒ˜แƒกแƒแƒ™แƒ”แƒœ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฆแƒฌแƒ”แƒ แƒก แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒžแƒแƒ“แƒ”แƒ‘แƒก. แƒฌแƒ”แƒ แƒขแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒ˜แƒ’แƒœแƒแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ. (แƒ›แƒแƒซแƒ•แƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ: แƒ”แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ“แƒแƒ”แƒชแƒ”แƒ›แƒ Kubelet-แƒก --config แƒแƒคแƒชแƒ˜แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ”แƒแƒ‘แƒ˜แƒ—. แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ˜แƒฎ. kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file .)

แƒ”แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒ•แƒแƒซแƒšแƒ”แƒ•แƒก แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ‘แƒฃแƒ“แƒ”แƒ”แƒ‘แƒ˜ - แƒžแƒแƒ“แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒแƒ  แƒ˜แƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ Kubernetes API-แƒ˜แƒ—. แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ‘แƒฃแƒ“แƒ”แƒ”แƒ‘แƒ˜ แƒ˜แƒจแƒ•แƒ˜แƒแƒ—แƒแƒ“ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ›แƒขแƒ”แƒ•แƒœแƒ˜แƒก แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒแƒกแƒแƒ›แƒแƒฆแƒšแƒ”แƒ‘แƒšแƒแƒ“ แƒ“แƒ แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ˜แƒก, แƒ แƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ. แƒฉแƒ•แƒ”แƒœ แƒฃแƒ’แƒฃแƒšแƒ”แƒ‘แƒ”แƒšแƒ•แƒงแƒแƒคแƒ— แƒแƒ› แƒ“แƒ˜แƒ“ แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒแƒก (แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒฎแƒ”แƒš, แƒแƒ  แƒ’แƒแƒฃแƒจแƒ•แƒแƒ— แƒ”แƒก แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒแƒจแƒ˜!) แƒ“แƒ แƒ•แƒœแƒแƒฎแƒแƒ—, แƒจแƒ”แƒ•แƒซแƒšแƒ”แƒ‘แƒ— แƒ—แƒฃ แƒแƒ แƒ แƒžแƒแƒ“แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก.

แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒ แƒ˜แƒ’แƒจแƒ˜ แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒก แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒžแƒแƒ“แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒ’แƒแƒ•แƒฃแƒจแƒ•แƒ˜แƒ— kubelet:

$ mkdir pods
$ sudo ./kubelet --pod-manifest-path=pods

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒกแƒฎแƒ•แƒ แƒขแƒ”แƒ แƒ›แƒ˜แƒœแƒแƒšแƒจแƒ˜/tmux แƒคแƒแƒœแƒฏแƒแƒ แƒแƒจแƒ˜/แƒ แƒแƒช แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒœแƒ˜แƒ— pod manifest-แƒก:

$ 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 แƒ›แƒ” แƒฌแƒแƒ•แƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ” แƒžแƒแƒ“ แƒ›แƒแƒœแƒ˜แƒคแƒ”แƒกแƒขแƒ˜ แƒ“แƒ แƒ“แƒแƒ™แƒ”แƒ แƒก แƒ›แƒ˜แƒ•แƒ”แƒชแƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ แƒ’แƒแƒฃแƒจแƒ•แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒžแƒ”แƒชแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—. (แƒ—แƒฃ แƒ’แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒ— "แƒžแƒแƒฃแƒ–แƒ˜แƒก" แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜, แƒ”แƒก แƒแƒ แƒ˜แƒก Kubernetes-แƒ˜แƒก แƒฐแƒแƒ™แƒ˜ - แƒ˜แƒฎ. แƒ”แƒก แƒ‘แƒšแƒแƒ’แƒ˜.) Kubelet แƒ’แƒแƒฃแƒจแƒ•แƒ”แƒ‘แƒก แƒฉแƒ•แƒ”แƒœแƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒก busybox แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒ’แƒแƒ“แƒแƒ˜แƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ‘แƒ แƒ’แƒแƒœแƒฃแƒกแƒแƒ–แƒฆแƒ•แƒ แƒ”แƒšแƒ˜ แƒ•แƒแƒ“แƒ˜แƒ—, แƒกแƒแƒœแƒแƒ› แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒžแƒแƒ“แƒ˜ แƒแƒ  แƒฌแƒแƒ˜แƒจแƒšแƒ”แƒ‘แƒ.

แƒ›แƒ˜แƒฃแƒšแƒแƒชแƒ”แƒ— แƒกแƒแƒ™แƒฃแƒ—แƒแƒ  แƒ—แƒแƒ•แƒก. แƒฉแƒ•แƒ”แƒœ แƒแƒฎแƒšแƒแƒฎแƒแƒœ แƒ›แƒแƒ•แƒ˜แƒคแƒ˜แƒฅแƒ แƒ”แƒ— แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ“แƒแƒ›แƒแƒ‘แƒœแƒ”แƒ•แƒ”แƒšแƒ˜ แƒ’แƒ–แƒ แƒขแƒ”แƒ แƒ›แƒ˜แƒœแƒแƒšแƒจแƒ˜ แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒขแƒแƒœแƒแƒ“!

แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒ“แƒ แƒ.แƒจ

แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒ›แƒ˜แƒ–แƒแƒœแƒ˜แƒ Kubernetes API-แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒฏแƒ”แƒ  แƒฃแƒœแƒ“แƒ แƒ’แƒแƒฃแƒจแƒ•แƒแƒ— แƒ.แƒจ.แƒจ. แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒแƒ— แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ etcd แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜ แƒ›แƒ˜แƒกแƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒ˜แƒ— pods แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒจแƒ˜ (แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, 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

แƒ—แƒฃ แƒแƒ“แƒ”แƒกแƒ›แƒ” แƒ’แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ˜แƒแƒ— Kubernetes-แƒ—แƒแƒœ, แƒ”แƒก YAML แƒคแƒแƒ˜แƒšแƒ”แƒ‘แƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก แƒœแƒแƒชแƒœแƒแƒ‘แƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก. แƒแƒฅ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒแƒ แƒ˜ แƒžแƒฃแƒœแƒฅแƒขแƒ˜แƒ แƒ’แƒแƒกแƒแƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜:

แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒ›แƒแƒœแƒขแƒแƒŸแƒ”แƒ— แƒฐแƒแƒกแƒขแƒ˜แƒก แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ” /var/lib/etcd แƒžแƒแƒ“แƒจแƒ˜ แƒ˜แƒกแƒ”, แƒ แƒแƒ› etcd แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒœแƒแƒฎแƒฃแƒšแƒ˜ แƒ˜แƒงแƒแƒก แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ (แƒ—แƒฃ แƒ”แƒก แƒแƒ  แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒฃแƒšแƒ, แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ แƒฌแƒแƒ˜แƒจแƒšแƒ”แƒ‘แƒ แƒงแƒแƒ•แƒ”แƒš แƒฏแƒ”แƒ แƒ–แƒ”, แƒ แƒแƒ“แƒ”แƒกแƒแƒช pod แƒ’แƒแƒ“แƒแƒ˜แƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ‘แƒ, แƒ แƒแƒช แƒแƒ  แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ™แƒแƒ แƒ’แƒ˜ แƒ—แƒฃแƒœแƒ“แƒแƒช แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ Kubernetes แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก).

แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒแƒงแƒ”แƒœแƒ”แƒ— hostNetwork: true. แƒ”แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜, แƒ’แƒแƒกแƒแƒ™แƒ•แƒ˜แƒ แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก, แƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒก etcd-แƒก, แƒ แƒแƒ—แƒ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒก แƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒ”แƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜ pod-แƒ˜แƒก แƒจแƒ˜แƒ“แƒ แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“ (แƒ”แƒก แƒ’แƒแƒฃแƒแƒ“แƒ•แƒ˜แƒšแƒ”แƒ‘แƒก 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.

แฒ แƒ แƒ›แƒแƒฎแƒ“แƒ? แƒ—แƒฃ แƒ’แƒแƒฎแƒกแƒแƒ•แƒ— แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒแƒ‘แƒ–แƒแƒชแƒ˜แƒก แƒฌแƒ˜แƒœ, แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒ˜แƒฌแƒงแƒ”แƒ— kubelet แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒฎแƒแƒ–แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒฃแƒ™แƒ˜แƒ“แƒฃแƒ แƒ”แƒกแƒแƒ“ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒœแƒแƒ™แƒ แƒ”แƒ‘แƒ˜แƒ—, แƒแƒกแƒ” แƒ แƒแƒ›, kubelet-แƒ›แƒ แƒแƒ  แƒ˜แƒชแƒ˜แƒก แƒ แƒแƒ’แƒแƒ  แƒ“แƒแƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒก API แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก แƒ“แƒ แƒจแƒ”แƒแƒขแƒงแƒแƒ‘แƒ˜แƒœแƒแƒก แƒ›แƒแƒก แƒ›แƒ˜แƒกแƒ˜ แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘. แƒ“แƒแƒ™แƒฃแƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ˜แƒก แƒจแƒ”แƒกแƒฌแƒแƒ•แƒšแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ•แƒžแƒแƒฃแƒšแƒแƒ‘แƒ— แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒก แƒ“แƒ แƒแƒจแƒแƒก:

--kubeconfig string

แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒ’แƒ–แƒ kubeconfig, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒแƒ•แƒก API แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒแƒก. แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒแƒ‘แƒ --kubeconfig แƒฉแƒแƒ แƒ—แƒแƒ•แƒก API แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ แƒ”แƒŸแƒ˜แƒ›แƒก, แƒแƒ แƒ --kubeconfig แƒฉแƒแƒ แƒ—แƒแƒ•แƒก แƒแƒคแƒšแƒแƒ˜แƒœ แƒ แƒ”แƒŸแƒ˜แƒ›แƒก.

แƒ›แƒ—แƒ”แƒšแƒ˜ แƒแƒ› แƒฎแƒœแƒ˜แƒก แƒ’แƒแƒœแƒ›แƒแƒ•แƒšแƒแƒ‘แƒแƒจแƒ˜, แƒแƒ›แƒ˜แƒก แƒชแƒแƒ“แƒœแƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”, แƒฉแƒ•แƒ”แƒœ แƒ•แƒ›แƒแƒ แƒ—แƒแƒ•แƒ“แƒ˜แƒ— kubelet-แƒก โ€žแƒแƒคแƒšแƒแƒ˜แƒœ แƒ แƒ”แƒŸแƒ˜แƒ›แƒจแƒ˜โ€œ. (แƒžแƒ”แƒ“แƒแƒœแƒขแƒฃแƒ แƒ”แƒ‘แƒ˜ แƒ แƒแƒ› แƒ•แƒ˜แƒงแƒแƒ—, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ•แƒ˜แƒคแƒ˜แƒฅแƒ แƒแƒ— แƒ“แƒแƒ›แƒแƒฃแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ™แƒฃแƒ‘แƒšแƒ”แƒขแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ แƒแƒ’แƒแƒ แƒช "แƒ›แƒ˜แƒœแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒ˜แƒกแƒฃแƒœแƒแƒ แƒ˜แƒแƒœแƒ˜ แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ”แƒ‘แƒ˜", แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒซแƒแƒšแƒ˜แƒแƒœ แƒ›แƒแƒกแƒแƒฌแƒงแƒ”แƒœแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒแƒ“แƒ). แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› "แƒ แƒ”แƒแƒšแƒฃแƒ แƒ˜" แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ แƒ˜แƒ›แƒฃแƒจแƒแƒแƒก, แƒฉแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ“แƒแƒ•แƒชแƒ”แƒ— kubeconfig แƒคแƒแƒ˜แƒšแƒ˜ kubelet-แƒก, แƒ แƒแƒ—แƒ แƒ›แƒแƒœ แƒ˜แƒชแƒแƒ“แƒ”แƒก แƒ แƒแƒ’แƒแƒ  แƒ˜แƒกแƒแƒฃแƒ‘แƒ แƒแƒก 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

(แƒกแƒฎแƒ•แƒแƒ—แƒ แƒจแƒแƒ แƒ˜แƒก, แƒ—แƒฃ แƒชแƒ“แƒ˜แƒšแƒแƒ‘แƒ— API-แƒ–แƒ” แƒฌแƒ•แƒ“แƒแƒ›แƒแƒก curl-แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ™แƒฃแƒ‘แƒ”แƒšแƒ”แƒขแƒ˜ แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก, แƒแƒฆแƒ›แƒแƒแƒฉแƒ”แƒœแƒ—, แƒ แƒแƒ› แƒ˜แƒก แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก! Kubelet แƒแƒ  แƒแƒ แƒ˜แƒก แƒ›แƒ˜แƒกแƒ˜ แƒžแƒแƒ“แƒ”แƒ‘แƒ˜แƒก โ€žแƒ›แƒจแƒแƒ‘แƒ”แƒšแƒ˜โ€œ, แƒ แƒแƒ’แƒแƒ แƒช Docker, แƒ˜แƒก แƒฃแƒคแƒ แƒ แƒฐแƒ’แƒแƒ•แƒก โ€žแƒ™แƒแƒœแƒขแƒ แƒแƒšแƒกโ€œ. แƒ“แƒ”แƒ›แƒแƒœแƒ˜.โ€ แƒ™แƒฃแƒ‘แƒ”แƒšแƒ”แƒขแƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒ›แƒแƒ แƒ—แƒฃแƒšแƒ˜ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒ’แƒแƒแƒ’แƒ แƒซแƒ”แƒšแƒ”แƒ‘แƒ”แƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒก แƒ›แƒแƒœแƒแƒ›, แƒกแƒแƒœแƒแƒ› แƒ™แƒฃแƒ‘แƒšแƒ”แƒขแƒ˜ แƒแƒ  แƒจแƒ”แƒแƒฉแƒ”แƒ แƒ”แƒ‘แƒก แƒ›แƒแƒ—.)

แฒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒฌแƒฃแƒ—แƒจแƒ˜ 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 pod-แƒ˜แƒ—:

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.

แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒ แƒแƒ›แƒ“แƒ”แƒœแƒแƒ“ แƒกแƒแƒ•แƒแƒšแƒแƒšแƒแƒ“ แƒแƒ แƒแƒกแƒ แƒฃแƒšแƒ˜แƒ แƒฉแƒ•แƒ”แƒœแƒ˜ Kubernetes แƒ’แƒแƒ แƒ”แƒ›แƒ - แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ˜. แƒ›แƒแƒ“แƒ˜แƒ—, แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒ•แƒชแƒแƒ“แƒแƒ— แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ˜แƒก แƒฎแƒ”แƒšแƒ˜แƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒ— แƒ“แƒ แƒ•แƒœแƒแƒฎแƒแƒ—, แƒ แƒ แƒ›แƒแƒฎแƒ“แƒ”แƒ‘แƒ:

$ 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

แƒ‘แƒแƒšแƒแƒก แƒ“แƒ แƒ‘แƒแƒšแƒแƒก, แƒ‘แƒฃแƒ“แƒ” แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ! แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒ˜แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒ”แƒจแƒ˜ แƒ”แƒก แƒแƒ  แƒ“แƒแƒ˜แƒฌแƒงแƒ”แƒ‘แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ“แƒแƒ›แƒ’แƒ”แƒ’แƒ›แƒแƒ•แƒ˜ (แƒ’แƒแƒœแƒ แƒ˜แƒ’แƒ˜) Kubernetes-แƒ˜แƒก แƒ™แƒ˜แƒ“แƒ”แƒ• แƒ”แƒ แƒ—แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜ แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ˜แƒ. แƒ˜แƒกแƒ”แƒ• แƒ“แƒ แƒ˜แƒกแƒ”แƒ•, แƒฉแƒ•แƒ”แƒœ แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒ แƒแƒ› Kubernetes API แƒแƒ แƒ˜แƒก แƒกแƒแƒแƒชแƒ แƒแƒ“ โ€žแƒ›แƒฃแƒœแƒฏแƒ˜โ€œ - แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ—แƒฅแƒ•แƒ”แƒœ แƒฅแƒ›แƒœแƒ˜แƒ— Pod-แƒก API-แƒจแƒ˜, แƒ˜แƒก แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒก แƒ›แƒแƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ  แƒชแƒ“แƒ˜แƒšแƒแƒ‘แƒก แƒ’แƒแƒแƒ แƒ™แƒ•แƒ˜แƒแƒก, แƒ แƒแƒ›แƒ”แƒš แƒ™แƒ•แƒแƒœแƒซแƒ–แƒ” แƒ’แƒแƒฃแƒจแƒ•แƒแƒก แƒ˜แƒ’แƒ˜.

แƒคแƒแƒฅแƒขแƒแƒ‘แƒ แƒ˜แƒ•แƒแƒ“, แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒ  แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒ“แƒแƒ›แƒ’แƒ”แƒ’แƒ›แƒแƒ•แƒ˜ แƒžแƒแƒ“แƒ˜แƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“. แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒฎแƒ”แƒšแƒ˜แƒ— แƒ“แƒแƒแƒ›แƒแƒขแƒแƒ— แƒ™แƒ•แƒแƒœแƒซแƒ˜ แƒ›แƒแƒœแƒ˜แƒคแƒ”แƒกแƒขแƒจแƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒจแƒ˜ nodeName:

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - image: nginx
    name: nginx
  nodeName: mink8s

(แƒจแƒ”แƒชแƒ•แƒแƒšแƒ”แƒ— mink8s แƒ™แƒ•แƒแƒœแƒซแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ–แƒ”.) แƒฌแƒแƒจแƒšแƒ˜แƒกแƒ แƒ“แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒฉแƒ•แƒ”แƒœ แƒ•แƒฎแƒ”แƒ“แƒแƒ•แƒ—, แƒ แƒแƒ› nginx แƒ“แƒแƒ˜แƒฌแƒงแƒ แƒ“แƒ แƒฃแƒกแƒ›แƒ”แƒœแƒก แƒจแƒ˜แƒ“แƒ IP แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒก:

$ ./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>

แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒ“แƒแƒ•แƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ”แƒ—, แƒ แƒแƒ› แƒฅแƒกแƒ”แƒšแƒ˜ แƒžแƒแƒ“แƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒกแƒฌแƒแƒ แƒแƒ“, แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ•แƒแƒขแƒแƒ แƒแƒ— curl แƒกแƒฎแƒ•แƒ แƒžแƒแƒ“แƒ˜แƒ“แƒแƒœ:

$ 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>

แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒแƒ แƒแƒ› แƒ’แƒแƒ แƒ”แƒ›แƒแƒจแƒ˜ แƒฉแƒแƒซแƒ˜แƒ แƒ•แƒ แƒ“แƒ แƒ“แƒแƒœแƒแƒฎแƒ•แƒ แƒ แƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ“แƒ แƒ แƒ แƒแƒ แƒ. แƒแƒฆแƒ›แƒแƒ•แƒแƒฉแƒ˜แƒœแƒ”, แƒ แƒแƒ› ConfigMap แƒ“แƒ Secret แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ˜แƒกแƒ”, แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒแƒกแƒแƒšแƒแƒ“แƒœแƒ”แƒšแƒ˜ แƒ˜แƒงแƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜ แƒ“แƒ แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒแƒ แƒ.

แƒฌแƒแƒ แƒ›แƒแƒขแƒ”แƒ‘แƒ”แƒ‘แƒ˜!

แƒ”แƒก แƒžแƒแƒกแƒขแƒ˜ แƒ’แƒ แƒซแƒ”แƒšแƒ˜ แƒฎแƒ“แƒ”แƒ‘แƒ, แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ•แƒแƒžแƒ˜แƒ แƒ”แƒ‘ แƒ’แƒแƒ›แƒแƒ แƒฏแƒ•แƒ”แƒ‘แƒแƒก แƒ’แƒแƒ›แƒแƒ•แƒแƒชแƒฎแƒแƒ“แƒ แƒ“แƒ แƒ•แƒ˜แƒขแƒงแƒ•แƒ˜, แƒ แƒแƒ› แƒ”แƒก แƒแƒ แƒ˜แƒก แƒกแƒ˜แƒชแƒแƒชแƒฎแƒšแƒ˜แƒกแƒฃแƒœแƒแƒ แƒ˜แƒแƒœแƒ˜ แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒแƒชแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ•แƒฃแƒฌแƒแƒ“แƒแƒ— "Kubernetes". แƒจแƒ”แƒฏแƒแƒ›แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก: แƒแƒ—แƒฎแƒ˜ แƒ‘แƒ˜แƒœแƒแƒ แƒ˜, แƒฎแƒฃแƒ—แƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒฎแƒแƒ–แƒ˜ แƒ“แƒ "แƒ›แƒฎแƒแƒšแƒแƒ“" YAML-แƒ˜แƒก 45 แƒฎแƒแƒ–แƒ˜ (แƒแƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜ Kubernetes-แƒ˜แƒก แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒ”แƒ‘แƒ˜แƒ—) แƒ“แƒ แƒฉแƒ•แƒ”แƒœ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒ แƒแƒ› แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก:

  • Pods แƒ˜แƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ Kubernetes API-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— (แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒฐแƒแƒ™แƒ˜แƒ—)
  • แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ— แƒ“แƒ แƒ›แƒแƒ แƒ—แƒแƒ— แƒกแƒแƒฏแƒแƒ แƒ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜
  • Pods แƒ แƒฉแƒ”แƒ‘แƒ แƒชแƒแƒชแƒฎแƒแƒšแƒ˜ แƒ“แƒ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒ’แƒแƒ“แƒแƒ˜แƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ‘แƒ
  • แƒ”แƒ แƒ—แƒกแƒ แƒ“แƒ แƒ˜แƒ›แƒแƒ•แƒ” แƒ™แƒ•แƒแƒœแƒซแƒจแƒ˜ แƒžแƒแƒ“แƒ”แƒ‘แƒก แƒจแƒแƒ แƒ˜แƒก แƒฅแƒกแƒ”แƒšแƒ˜ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ™แƒแƒ แƒ’แƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก
  • ConfigMap, แƒกแƒแƒ˜แƒ“แƒฃแƒ›แƒšแƒ แƒ“แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒœแƒขแƒแƒŸแƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒแƒกแƒแƒšแƒแƒ“แƒœแƒ”แƒšแƒ˜ แƒ˜แƒงแƒ

แƒ›แƒแƒ’แƒ แƒแƒ› แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒ แƒแƒ›, แƒ แƒแƒช Kubernetes-แƒก แƒ›แƒแƒ แƒ—แƒšแƒแƒช แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒ แƒฎแƒ“แƒ˜แƒก, แƒฏแƒ”แƒ  แƒ™แƒ˜แƒ“แƒ”แƒ• แƒแƒ™แƒšแƒ˜แƒ, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“:

  • Pod Scheduler
  • แƒแƒ•แƒ—แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒชแƒ˜แƒ/แƒแƒ•แƒขแƒแƒ แƒ˜แƒ–แƒแƒชแƒ˜แƒ
  • แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒ™แƒ•แƒแƒœแƒซแƒ˜
  • แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ”แƒ‘แƒ˜แƒก แƒฅแƒกแƒ”แƒšแƒ˜
  • แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒจแƒ˜แƒ“แƒ DNS
  • แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒแƒœแƒ’แƒแƒ แƒ˜แƒจแƒ”แƒ‘แƒ˜แƒก, แƒ’แƒแƒœแƒšแƒแƒ’แƒ”แƒ‘แƒ˜แƒก, แƒฆแƒ แƒฃแƒ‘แƒšแƒแƒ•แƒแƒœ แƒžแƒ แƒแƒ•แƒแƒ˜แƒ“แƒ”แƒ แƒ”แƒ‘แƒ—แƒแƒœ แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒแƒชแƒ˜แƒ˜แƒก แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ™แƒฃแƒ‘แƒ”แƒ แƒœแƒ”แƒขแƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒ›แƒแƒขแƒแƒœแƒ˜แƒšแƒ˜ แƒกแƒฎแƒ•แƒ แƒกแƒ˜แƒ™แƒ”แƒ—แƒ”แƒ”แƒ‘แƒ˜แƒก แƒฃแƒ›แƒ”แƒขแƒ”แƒกแƒแƒ‘แƒ

แƒ แƒ แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ”แƒ— แƒกแƒ˜แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒ”แƒจแƒ˜? Kubernetes API, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ—แƒแƒ•แƒ˜แƒกแƒ—แƒแƒ•แƒแƒ“, แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒแƒ“ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒžแƒšแƒแƒขแƒคแƒแƒ แƒ›แƒแƒ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ. แƒ”แƒก แƒ‘แƒ”แƒ•แƒ แƒก แƒแƒ  แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒก - แƒ”แƒก แƒแƒ แƒ˜แƒก แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ”แƒ แƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒแƒžแƒ”แƒ แƒแƒขแƒแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ”แƒœ API - แƒ›แƒแƒ’แƒ แƒแƒ› แƒ˜แƒก แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก แƒ—แƒแƒœแƒ›แƒ˜แƒ›แƒ“แƒ”แƒ•แƒ แƒฃแƒš แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒจแƒ”แƒ˜แƒขแƒงแƒ•แƒ”แƒ— แƒ›แƒ”แƒขแƒ˜ แƒ™แƒฃแƒ แƒกแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒฃแƒคแƒแƒกแƒ แƒ•แƒ”แƒ‘แƒ˜แƒœแƒแƒ แƒ–แƒ”.

แƒ“แƒแƒฌแƒ•แƒ แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ—:

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ