ΠΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Ρ Kubernetes, ΡΠΎΠ³Π°Π²Π° kubectl Π²Π΅ΡΠΎΡΡΠ½ΠΎ Π΅ Π΅Π΄Π½Π° ΠΎΡ ΠΏΠΎΠΌΠΎΡΠ½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π½Π°ΠΉ-ΠΌΠ½ΠΎΠ³ΠΎ. Π Π²ΠΈΠ½Π°Π³ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΡΠ΅ΠΊΠ°ΡΠ²Π°ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π² ΡΠ°Π±ΠΎΡΠ° Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΡΠΈ ΡΡΡΡΠ²Π° Π΄Π° Π³ΠΎ ΠΏΡΠΎΡΡΠΈΡΠ΅ Π΄ΠΎΠ±ΡΠ΅ ΠΈ Π΄Π° ΡΠ΅ Π½Π°ΡΡΠΈΡΠ΅ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ.
ΠΡΠ±ΠΎΡ
Π‘ΠΏΠΎΡΠ΅Π΄ Π°Π²ΡΠΎΡΠ°, ΡΠ΅Π»ΡΠ° Π½Π° ΡΡΠ°ΡΠΈΡΡΠ° Π΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½Π°ΡΠ° Π²ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ Kubernetes Π½Π΅ ΡΠ°ΠΌΠΎ ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½Π°, Π½ΠΎ ΠΈ ΠΏΠΎ-ΠΏΡΠΈΡΡΠ½Π°!
ΠΡΠ²Π΅Π΄Π΅Π½ΠΈΠ΅: ΠΠ°ΠΊΠ²ΠΎ Π΅ kubectl
ΠΡΠ΅Π΄ΠΈ Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΡΡΠΈΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ kubectl ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ, ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΈΠ΄ΠΎΠ±ΠΈΠ΅ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΠΈ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ.
ΠΡ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ kubectl Π΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΠΏΠ°Π½Π΅Π», ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° Kubernetes.
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π°ΡΠΎ, kubectl Π΅ API ΠΊΠ»ΠΈΠ΅Π½Ρ Π½Π° Kubernetes.
Kubernetes API Π΅ HTTP REST API. Π’ΠΎΠ·ΠΈ API Π΅ ΠΈΡΡΠΈΠ½ΡΠΊΠΈΡΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° Kubernetes, ΡΡΠ΅Π· ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ° Π½Π°ΠΏΡΠ»Π½ΠΎ. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π²ΡΡΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π½Π° Kubernetes Π΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π° ΠΊΠ°ΡΠΎ ΠΊΡΠ°ΠΉΠ½Π° ΡΠΎΡΠΊΠ° Π½Π° API ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½Π° Ρ HTTP Π·Π°ΡΠ²ΠΊΠ° ΠΊΡΠΌ ΡΠ°Π·ΠΈ ΠΊΡΠ°ΠΉΠ½Π° ΡΠΎΡΠΊΠ°.
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Π½Π° kubectl Π΅ Π΄Π° ΠΏΡΠ°Π²ΠΈ HTTP Π·Π°ΡΠ²ΠΊΠΈ ΠΊΡΠΌ Kubernetes API:
Kubernetes Π΅ ΠΈΠ·ΡΡΠ»ΠΎ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½Π° ΠΊΡΠΌ ΡΠ΅ΡΡΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΡΠΎΠΉ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° Π²ΡΡΡΠ΅ΡΠ½ΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ ΠΈ Π²ΡΠΈΡΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° Kubernetes ΡΠ° CRUD ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΡΠ΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Kubernetes, ΠΊΠ°ΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ ΡΠ΅Π·ΠΈ ΡΠ΅ΡΡΡΡΠΈ, Π° Kubernetes Π½Π°ΠΌΠΈΡΠ° ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° ΠΏΡΠ°Π²ΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠ΅ΠΊΡΡΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅. ΠΠΎΡΠ°Π΄ΠΈ ΡΠ°Π·ΠΈ ΠΏΡΠΈΡΠΈΠ½Π° ΠΏΡΠ΅ΠΏΡΠ°ΡΠΊΠ°ΡΠ° ΠΊΡΠΌ API Π½Π° Kubernetes Π΅ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΊΠ°ΡΠΎ ΡΠΏΠΈΡΡΠΊ Ρ ΡΠΈΠΏΠΎΠ²Π΅ ΡΠ΅ΡΡΡΡΠΈ ΡΡΡ ΡΠ²ΡΡΠ·Π°Π½ΠΈΡΠ΅ Ρ ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΠ΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ.
ΠΠ° ΠΏΡΠΈΠ΅ΠΌΠ΅ΠΌ, ΡΠ΅ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΡΠ΅ΡΡΡΡ ReplicaSet. ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π°, Π²ΠΈΠ΅ ΠΎΠΏΠΈΡΠ²Π°ΡΠ΅ ReplicaSet Π²ΡΠ² ΡΠ°ΠΉΠ» ΠΏΠΎ ΠΈΠΌΠ΅ replicaset.yaml
, ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°:
$ kubectl create -f replicaset.yaml
Π’ΠΎΠ²Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ ΡΠ΅ΡΡΡΡ ReplicaSet. ΠΠΎ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π·Π°Π΄ ΠΊΡΠ»ΠΈΡΠΈΡΠ΅?
Kubernetes ΠΈΠΌΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ReplicaSet. ΠΠ°ΠΊΡΠΎ Π²ΡΡΠΊΠ° Π΄ΡΡΠ³Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΡΡ Π΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π° ΠΊΠ°ΡΠΎ ΠΊΡΠ°ΠΉΠ½Π° ΡΠΎΡΠΊΠ° Π½Π° API. ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°ΡΠ° ΠΊΡΠ°ΠΉΠ½Π° ΡΠΎΡΠΊΠ° Π½Π° API Π·Π° ΡΠ°Π·ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ°:
POST /apis/apps/v1/namespaces/{namespace}/replicasets
ΠΡΠ°ΠΉΠ½ΠΈΡΠ΅ ΡΠΎΡΠΊΠΈ Π½Π° API Π·Π° Π²ΡΠΈΡΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° Kubernetes ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ Π½Π°
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ Π³ΠΎΡΠ½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°, kubectl ΠΈΠ·ΠΏΡΠ°ΡΠ° HTTP POST Π·Π°ΡΠ²ΠΊΠ° Π΄ΠΎ Π³ΠΎΡΠ½Π°ΡΠ° ΠΊΡΠ°ΠΉΠ½Π° ΡΠΎΡΠΊΠ° Π½Π° API. ΠΠ΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° ReplicaSet, ΠΊΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡ
ΡΠ΅ Π²ΡΠ² ΡΠ°ΠΉΠ»Π° replicaset.yaml
, ΡΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ° Π² ΡΡΠ»ΠΎΡΠΎ Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ°.
ΠΡΠΎ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ kubectl Π·Π° Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΠΊΠΎΠΈΡΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π°Ρ Ρ ΠΊΠ»ΡΡΡΠ΅ΡΠ° Kubernetes. ΠΡΠ² Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΡΠ»ΡΡΠ°ΠΈ kubectl ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ°Π²ΠΈ HTTP Π·Π°ΡΠ²ΠΊΠΈ ΠΊΡΠΌ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡΠ΅ ΠΊΡΠ°ΠΉΠ½ΠΈ ΡΠΎΡΠΊΠΈ Π½Π° Kubernetes API.
ΠΠΎΠ»Ρ, ΠΈΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π΄Π° ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠ΅ Kubernetes Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΏΠΎΠΌΠΎΡΠ½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΠΊΠ°ΡΠΎ curl
ΡΡΠ΅Π· ΡΡΡΠ½ΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° HTTP Π·Π°ΡΠ²ΠΊΠΈ ΠΊΡΠΌ Kubernetes API. Kubectl ΠΏΡΠΎΡΡΠΎ ΡΠ»Π΅ΡΠ½ΡΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Kubernetes API.
Π’ΠΎΠ²Π° ΡΠ° ΠΎΡΠ½ΠΎΠ²ΠΈΡΠ΅ Π½Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ Π΅ kubectl ΠΈ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ. ΠΠΎ ΠΈΠΌΠ° ΠΎΡΠ΅ Π½Π΅ΡΠΎ Π·Π° Kubernetes API, ΠΊΠΎΠ΅ΡΠΎ Π²ΡΠ΅ΠΊΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» Π½Π° kubectl ΡΡΡΠ±Π²Π° Π΄Π° Π·Π½Π°Π΅. ΠΠ΅ΠΊΠ° Π΄Π° Π½Π°Π΄Π½ΠΈΠΊΠ½Π΅ΠΌ Π½Π°Π±ΡΡΠ·ΠΎ Π²ΡΠ² Π²ΡΡΡΠ΅ΡΠ½ΠΈΡ ΡΠ²ΡΡ Π½Π° Kubernetes.
ΠΡΡΡΠ΅ΡΠ½ΠΈΡΡ ΡΠ²ΡΡ Π½Π° Kubernetes
Kubernetes ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ Π½Π°Π±ΠΎΡ ΠΎΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΊΠ°ΡΠΎ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ½ΠΈ Π²ΡΠ·Π»ΠΈ. ΠΡΠΊΠΎΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΡΠ°Π±ΠΎΡΡΡ Π½Π° Π³Π»Π°Π²Π½ΠΈ Π²ΡΠ·Π»ΠΈ, Π΄ΡΡΠ³ΠΈ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈ Π²ΡΠ·Π»ΠΈ, ΠΊΠ°ΡΠΎ Π²ΡΠ΅ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΡΠ²ΠΎΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Π° Π·Π°Π΄Π°ΡΠ°.
ΠΡΠΎ Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ Π²ΡΠ·Π»ΠΈ:
- Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ - ΡΡΡ
ΡΠ°Π½ΡΠ²Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ Π½Π° ΡΠ΅ΡΡΡΡΠΈ (
ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ etcd ). - API ΡΡΡΠ²ΡΡ β ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ API ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅.
- ΠΠ΅Π½ΠΈΠ΄ΠΆΡΡ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠ° β ΠΠ°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ ΡΡΠ°ΡΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ ΠΎΡΠ³ΠΎΠ²Π°ΡΡΡ Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅.
- ΠΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ β ΠΏΠ»Π°Π½ΠΈΡΠ° ΠΏΠΎΠ΄ΠΎΠ²Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈ Π²ΡΠ·Π»ΠΈ.
Π Π΅ΡΠΎ Π΅Π΄ΠΈΠ½ Π½Π°ΠΉ-Π²Π°ΠΆΠ΅Π½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡΠ΅ Π²ΡΠ·Π»ΠΈ:
- ΠΡΠ±Π΅Π»Π΅Ρ β ΡΠΏΡΠ°Π²Π»ΡΠ²Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡ Π²ΡΠ·Π΅Π».
ΠΠ° Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΡΠ°Π±ΠΎΡΡΡ Π·Π°Π΅Π΄Π½ΠΎ, Π½Π΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ.
ΠΠ° ΠΏΡΠΈΠ΅ΠΌΠ΅ΠΌ, ΡΠ΅ ΡΠΎΠΊΡ-ΡΠΎ ΡΡΠ΅ Π·Π°Π²ΡΡΡΠΈΠ»ΠΈ kubectl create -f replicaset.yaml
, ΡΠ»Π΅Π΄ ΠΊΠΎΠ΅ΡΠΎ kubectl Π½Π°ΠΏΡΠ°Π²ΠΈ HTTP POST Π·Π°ΡΠ²ΠΊΠ° ΠΊΡΠΌ
ΠΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°?
- Π‘Π»Π΅Π΄ ΠΏΡΠ°Π²Π΅Π½Π΅
kubectl create -f replicaset.yaml
API ΡΡΡΠ²ΡΡΡΡ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π²Π°ΡΠ°ΡΠ° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡ Π½Π° ΡΠ΅ΡΡΡΡ ReplicaSet Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅: - Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΡΡ ReplicaSet ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° Π² Π΄ΠΈΡΠΏΠ΅ΡΠ΅ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠ°, ΠΊΠΎΠΉΡΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ²Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ, ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΡΡΠΈ Π½Π° ReplicaSet:
- ΠΠΎΠ½ΡΡΠΎΠ»Π΅ΡΡΡ ReplicaSet ΡΡΠ·Π΄Π°Π²Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡ Π½Π° pod Π·Π° Π²ΡΡΠΊΠ° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ° Π½Π° ReplicaSet (ΡΠΏΠΎΡΠ΅Π΄ ΡΠ°Π±Π»ΠΎΠ½Π° Π½Π° pod Π² Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° ReplicaSet) ΠΈ Π³ΠΈ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅:
- ΠΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΡΡ ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°, ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°ΠΉΠΊΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠ° ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈ Π²ΡΠ·Π»ΠΈ:
- ΠΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΡΡ ΠΈΠ·Π±ΠΈΡΠ° ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ΅Π½ Π²ΡΠ·Π΅Π» Π·Π° Π²ΡΠ΅ΠΊΠΈ pod ΠΈ Π΄ΠΎΠ±Π°Π²Ρ ΡΠ°Π·ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΊΡΠΌ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° pod Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°:
- ΠΠ° ΡΠ°Π±ΠΎΡΠ½ΠΈΡ Π²ΡΠ·Π΅Π», ΠΊΡΠΌ ΠΊΠΎΠΉΡΠΎ Π΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ ΠΏΠΎΠ΄ΡΡ, Kubelet ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°, ΡΠΎΠΉ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅, ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈ Π½Π° ΡΠΎΠ·ΠΈ Π²ΡΠ·Π΅Π»:
- Kubelet ΡΠ΅ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° pod ΠΎΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠ° ΡΡΠ΅Π΄Π° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, ΠΊΠ°ΡΠΎ Docker, Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π½Π° Π²ΡΠ·Π΅Π»Π°:
ΠΠΎ-Π΄ΠΎΠ»Ρ Π΅ ΡΠ΅ΠΊΡΡΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠΎΠ²Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅.
API Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΠΊΡΠΌ ΠΊΡΠ°ΠΉΠ½Π°ΡΠ° ΡΠΎΡΠΊΠ° Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ReplicaSet ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΠΎΡ API ΡΡΡΠ²ΡΡΠ°. API ΡΡΡΠ²ΡΡΡΡ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ° ΠΈ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° ΡΠ΅ΡΡΡΡΠ° ReplicaSet Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ.
Π’ΠΎΠ²Π° ΡΡΠ±ΠΈΡΠΈΠ΅ ΡΡΠ°ΡΡΠΈΡΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠ° ReplicaSet, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΏΠΎΠ΄ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠ°. ΠΠΎΠ½ΡΡΠΎΠ»Π΅ΡΡΡ ReplicaSet ΡΠ»Π΅Π΄ΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ, Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΡΡΠΈ Π½Π° ReplicaSet Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΠΈΠ·Π²Π΅ΡΡΠΈΠ΅ Π·Π° ΡΡΠ±ΠΈΡΠΈΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠΎΠ²Π° ΡΠ΅ ΡΠ»ΡΡΠΈ.
ΠΠ°Π΄Π°ΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠ° ReplicaSet Π΅ Π΄Π° Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡ Π±ΡΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»ΠΈ ReplicaSet. Π Π½Π°ΡΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΠΏΠΎΠ΄ΠΎΠ²Π΅, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΡΡ Π½Π° ReplicaSet ΡΡΠ·Π΄Π°Π²Π° ΡΠ΅Π·ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ Π½Π° ΠΏΠΎΠ΄ (ΡΠΏΠΎΡΠ΅Π΄ ΡΠ°Π±Π»ΠΎΠ½Π° Π½Π° ΠΏΠΎΠ΄ Π² Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° ReplicaSet) ΠΈ Π³ΠΈ ΡΡΡ ΡΠ°Π½ΡΠ²Π° Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅.
Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ ΠΏΠΎΠ΄ΠΎΠ²Π΅ ΡΠ΅ Π·Π°Π΄Π΅ΠΉΡΡΠ²Π° ΠΎΡ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ, ΠΊΠΎΠΉΡΠΎ ΡΠ»Π΅Π΄ΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠ° ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ½ΠΈ Π²ΡΠ·Π»ΠΈ. ΠΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΡΡ ΠΈΠ·Π±ΠΈΡΠ° ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ΅Π½ Π²ΡΠ·Π΅Π» Π·Π° Π²ΡΠ΅ΠΊΠΈ pod ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈΡΠ΅ Π½Π° pod Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ.
ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ Π΄ΠΎ ΡΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ Π½ΠΈΠΊΡΠ΄Π΅ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ° Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ΄ Π·Π° ΡΠ°Π±ΠΎΡΠ½ΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅. ΠΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΎ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° - ΡΠΎΠ²Π° Π΅ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΡΡΠΈ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° Π³Π»Π°Π²Π½ΠΈΡ Π²ΡΠ·Π΅Π».
ΠΠΎΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΡΡΠ±ΠΈΡΠΈΠ΅ Π·Π°Π΄Π΅ΠΉΡΡΠ²Π° Kubelets, ΠΊΠΎΠΈΡΠΎ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°Ρ ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅, ΠΏΠ»Π°Π½ΠΈΡΠ°Π½ΠΈ Π·Π° ΡΠ΅Ρ Π½ΠΈΡΠ΅ ΡΠ°Π±ΠΎΡΠ½ΠΈ Π²ΡΠ·Π»ΠΈ. Kubelet Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡ Π²ΡΠ·Π΅Π», Π½Π° ΠΊΠΎΠΉΡΠΎ ΡΠ° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ Π²Π°ΡΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ReplicaSet, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠ° ΡΡΠ΅Π΄Π°ΡΠ° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΠΊΠ°ΡΠΎ Docker, Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ Π΄Π° Π³ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°.
Π ΡΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ Π²Π°ΡΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ReplicaSet Π½Π°ΠΉ-Π½Π°ΠΊΡΠ°Ρ ΡΠ°Π±ΠΎΡΠΈ!
Π ΠΎΠ»Ρ Π½Π° Kubernetes API
ΠΠ°ΠΊΡΠΎ Π²ΠΈΠ΄ΡΡ ΡΠ΅ Π² ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅ Π½Π° Kubernetes (Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° API ΡΡΡΠ²ΡΡΠ° ΠΈ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ) ΡΠ»Π΅Π΄ΡΡ Π·Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ° Π·Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π² Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ.
Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΡΡΡ ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΡΠΎ, Π° ΡΠ°ΠΌΠΎ ΡΡΠ΅Π· Kubernetes API.
Π Π°Π·Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈ:
- ΠΠΎΠ½ΡΡΠΎΠ»Π΅ΡΡΡ ReplicaSet ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΡΠ°ΠΉΠ½Π°ΡΠ° ΡΠΎΡΠΊΠ° Π½Π° API
ΡΠΏΠΈΡΡΠΊ ReplicaSets Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡwatch
Π·Π° Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° ReplicaSet. - ΠΠΎΠ½ΡΡΠΎΠ»Π΅ΡΡΡ ReplicaSet ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΡΠ°ΠΉΠ½Π°ΡΠ° ΡΠΎΡΠΊΠ° Π½Π° API
ΡΡΠ·Π΄Π°ΠΉΡΠ΅ Pod (ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄), Π·Π° Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΏΠΎΠ΄. - ΠΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΡΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΡΠ°ΠΉΠ½Π° ΡΠΎΡΠΊΠ° Π½Π° API
ΠΊΡΡΠΏΠΊΠ° ΠΏΠΎΠ΄ (edit pod), Π·Π° Π΄Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ pods Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΈΠ·Π±ΡΠ°Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ΅Π½ Π²ΡΠ·Π΅Π».
ΠΠ°ΠΊΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠΎΠ²Π° Π΅ ΡΡΡΠΈΡΡ API, Π΄ΠΎ ΠΊΠΎΠΉΡΠΎ ΠΈΠΌΠ° Π΄ΠΎΡΡΡΠΏ kubectl. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ API Π·Π° Π²ΡΡΡΠ΅ΡΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΠΈ Π²ΡΠ½ΡΠ½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π΅ ΠΎΡΠ½ΠΎΠ²Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π² Π΄ΠΈΠ·Π°ΠΉΠ½Π° Π½Π° Kubernetes.
Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΠ±ΠΎΠ±ΡΠΈΠΌ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ Kubernetes:
- Π‘ΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΡΠ° Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅, ΡΠΎΠ΅ΡΡ ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° Kubernetes.
- API ΡΡΡΠ²ΡΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΊΡΠΌ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° Kubernetes API.
- ΠΡΠΈΡΠΊΠΈ Π΄ΡΡΠ³ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π½Π° Kubernetes ΡΠ΅ΡΠ°Ρ, Π½Π°Π±Π»ΡΠ΄Π°Π²Π°Ρ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Ρ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ (ΡΠ΅ΡΡΡΡΠΈ) Π½Π° Kubernetes ΡΡΠ΅Π· API.
ΠΠΎΠ·Π½Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π·ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΡΠ΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΡΠ΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ kubectl ΠΈ Π΄Π° ΠΈΠ·Π²Π»Π΅ΡΠ΅ΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠ° ΠΎΡ Π½Π΅Π³ΠΎ.
Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π½ΡΠΊΠΎΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΈ ΡΡΠ²Π΅ΡΠΈ ΠΈ ΡΡΠΈΠΊΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° ΡΠΈ Ρ kubectl.
1. Π£ΡΠΊΠΎΡΠ΅ΡΠ΅ Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ ΡΡΠ΅Π· Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°
ΠΠ΄Π½Π° ΠΎΡ Π½Π°ΠΉ-ΠΏΠΎΠ»Π΅Π·Π½ΠΈΡΠ΅, Π½ΠΎ ΡΠ΅ΡΡΠΎ ΠΏΡΠ΅Π½Π΅Π±ΡΠ΅Π³Π²Π°Π½ΠΈ ΡΠ΅Ρ Π½ΠΈΠΊΠΈ Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Ρ kubectl Π΅ Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°.
ΠΠ°Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠ΅ ΡΠ°ΡΡΠΈ ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ kubectl Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠ»Π°Π²ΠΈΡΠ° Tab. Π’ΠΎΠ²Π° ΡΠ°Π±ΠΎΡΠΈ Π·Π° ΠΏΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΠΎΠΏΡΠΈΠΈ ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π΅ΡΠΎ ΡΠΎΠ»ΠΊΠΎΠ²Π° ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΊΠ°ΡΠΎ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅.
ΠΠΈΠΆΡΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° kubectl:
ΠΠ°Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΡΠ°Π±ΠΎΡΠΈ Π·Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠΈ Bash ΠΈ Zsh.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°
ΠΠ°Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π΅ ΡΡΠ½ΠΊΡΠΈΡ Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ°, ΠΊΠΎΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΊΡΠΈΠΏΡ Π·Π° Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅. Π‘ΠΊΡΠΈΠΏΡΡΡ Π·Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ Π΅ ΡΠΊΡΠΈΠΏΡ Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ°, ΠΊΠΎΠΉΡΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°.
Kubectl Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΈ ΠΈΠ·Π²Π΅ΠΆΠ΄Π° ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π·Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ Π·Π° Bash ΠΈ Zsh, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ:
$ kubectl completion bash
ΠΠ»ΠΈ:
$ kubectl completion zsh
ΠΠ° ΡΠ΅ΠΎΡΠΈΡ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ ΠΈΠ·Ρ ΠΎΠ΄Π° Π½Π° ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΊΡΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°, ΡΠ°ΠΊΠ° ΡΠ΅ kubectl Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠΏΡΠ»Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅.
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° ΠΌΠ΅ΡΠΎΠ΄ΡΡ Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π΅ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ Π·Π° Bash (Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ°Π·Π»ΠΈΠΊΠΈΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Linux ΠΈ MacOS) ΠΈ Zsh. ΠΠΎ-Π΄ΠΎΠ»Ρ ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΠΎΠΏΡΠΈΠΈ.
Bash Π½Π° Linux
Π‘ΠΊΡΠΈΠΏΡΡΡ Π·Π° Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° Bash Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΠ° Π·Π° Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° bash, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΡΡΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π³ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅:
$ sudo apt-get install bash-completion
ΠΠ»ΠΈ:
$ yum install bash-completion
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π΄Π°Π»ΠΈ ΠΏΠ°ΠΊΠ΅ΡΡΡ Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°:
$ type _init_completion
ΠΠΊΠΎ ΡΠΎΠ²Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π° ΠΊΠΎΠ΄ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ°, ΡΠΎΠ³Π°Π²Π° bash-Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ. ΠΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π΄Π°Π²Π° Π³ΡΠ΅ΡΠΊΠ° βΠΠ΅ Π΅ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΎβ, ΡΡΡΠ±Π²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡ ΡΠ΅Π΄ ΠΊΡΠΌ Π²Π°ΡΠΈΡ ΡΠ°ΠΉΠ» ~ / .bashrc
:
$ source /usr/share/bash-completion/bash_completion
ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π»ΠΈ Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΡΠΎΠ·ΠΈ ΡΠ΅Π΄ ΠΊΡΠΌ ΡΠ°ΠΉΠ»Π° ~ / .bashrc
ΠΈΠ»ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡΠ° Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΊΠΎΠΉΡΠΎ ΡΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° bash-completion. Π’ΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° APT, Π½ΠΎ Π½Π΅ ΠΈ Π·Π° YUM.
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ bash-completion, ΡΡΡΠ±Π²Π° Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ ΡΠ°ΠΊΠ°, ΡΠ΅ ΡΠΊΡΠΈΠΏΡΡΡ Π·Π° Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ kubectl Π΄Π° Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ Π²ΡΠ² Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΠΈΠΈ Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ°.
ΠΠ΄ΠΈΠ½ ΠΎΡ Π½Π°ΡΠΈΠ½ΠΈΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π° Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡ ΡΠ΅Π΄ ΠΊΡΠΌ ΡΠ°ΠΉΠ»Π° ~ / .bashrc
:
source <(kubectl completion bash)
ΠΡΡΠ³ Π½Π°ΡΠΈΠ½ Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡΠ° Π·Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ kubectl ΠΊΡΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° /etc/bash_completion.d
(ΡΡΠ·Π΄Π°ΠΉΡΠ΅ Π³ΠΎ, Π°ΠΊΠΎ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°):
$ kubectl completion bash >/etc/bash_completion.d/kubectl
ΠΡΠΈΡΠΊΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π·Π° Π΄ΠΎΠ±Π°Π²ΠΊΠΈ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° /etc/bash_completion.d
ΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π² bash-completion.
Π Π΄Π²Π°ΡΠ° Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΠ° Π΅Π΄Π½Π°ΠΊΠ²ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌΠΈ.
Π‘Π»Π΅Π΄ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ°, Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° kubectl ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ.
Bash Π½Π° MacOS
Π MacOS Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΡΠ° Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½Π°. Π€Π°ΠΊΡ Π΅, ΡΠ΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ MacOS ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Bash Π²Π΅ΡΡΠΈΡ 3.2, Π° ΡΠΊΡΠΈΠΏΡΡΡ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ kubectl ΠΈΠ·ΠΈΡΠΊΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° Bash ΠΏΠΎΠ½Π΅ 4.1 ΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ Π² Bash 3.2.
ΠΠΌΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠ°Π½Π΅ΡΠΎ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΡΡΠ°ΡΡΠ»Π° Π²Π΅ΡΡΠΈΡ Π½Π° Bash Π½Π° MacOS. Bash Π²Π΅ΡΡΠΈΡ 4 Π΅ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄ GPLv3, ΠΊΠΎΠΉΡΠΎ Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΎΡ Apple.
ΠΠ° Π΄Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ Π½Π° kubectl Π½Π° MacOS, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΏΠΎ-Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° Bash. ΠΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈΡ Bash ΠΊΠ°ΡΠΎ ΡΠ΅ΡΡΠΏΠΊΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ Π²ΠΈ ΡΠΏΠ΅ΡΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π² Π±ΡΠ΄Π΅ΡΠ΅. ΠΠ΅ Π΅ ΡΡΡΠ΄Π½ΠΎ, ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈΡΠ΅ ΡΠ° Π΄Π°Π΄Π΅Π½ΠΈ Π² ΡΡΠ°ΡΠΈΡΡΠ° "
ΠΡΠ΅Π΄ΠΈ Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΡΠ΅, ΡΠ²Π΅ΡΠ΅ΡΠ΅ ΡΠ΅, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π½Π°ΠΉ-Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Bash (ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΠΈΠ·Ρ
ΠΎΠ΄Π° bash --version
).
Π‘ΠΊΡΠΈΠΏΡΡΡ Π·Π° Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° Bash Π²Π°ΡΠΈΡΠ° ΡΠΏΠΎΡΠ΅Π΄ ΠΏΡΠΎΠ΅ΠΊΡΠ°
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ bash-completion Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π°
$ brew install bash-completion@2
Π’ΡΠΊ @2
ΠΎΠ·Π½Π°ΡΠ°Π²Π° bash-completion Π²Π΅ΡΡΠΈΡ 2. kubectl autocompletion ΠΈΠ·ΠΈΡΠΊΠ²Π° bash-completion v2, Π° bash-completion v2 ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Bash Π²Π΅ΡΡΠΈΡ 4.1.
ΠΠΎΠΌΠ°Π½Π΄Π΅Π½ ΠΈΠ·Ρ
ΠΎΠ΄ brew-install
ΡΡΠ΄ΡΡΠΆΠ° ΡΠ°Π·Π΄Π΅Π» ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, ΠΊΠΎΠΉΡΠΎ ΡΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈ ΠΊΡΠΌ ΡΠ°ΠΉΠ»Π° ~/.bash_profile
:
export BASH_COMPLETION_COMPAT_DIR=/usr/local/etc/bash_completion.d
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && .
"/usr/local/etc/profile.d/bash_completion.sh"
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π° ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π°ΠΌ Π΄Π° Π½Π΅ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ΅Π·ΠΈ ΡΠ΅Π΄ΠΎΠ²Π΅ ΠΊΡΠΌ ~/.bash_profile
Π Π² ~/.bashrc
. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ ΡΠ΅ Π±ΡΠ΄Π΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π½Π΅ ΡΠ°ΠΌΠΎ Π² Π³Π»Π°Π²Π½ΠΈΡΠ΅, Π½ΠΎ ΠΈ Π² Π΄ΡΡΠ΅ΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈ ΡΠ΅ΡΡΠΏΠΊΠΈ.
Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°ΡΠ° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Π΄Π°Π»ΠΈ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡΠ° Π΅ ΠΏΡΠ°Π²ΠΈΠ»Π½Π°, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°:
$ type _init_completion
ΠΠΊΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ° Π² ΠΈΠ·Ρ ΠΎΠ΄Π°, ΡΠΎΠ³Π°Π²Π° Π²ΡΠΈΡΠΊΠΎ Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ.
Π‘Π΅Π³Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΠ²Π΅ΡΠΈΠΌ, ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ Π½Π° kubectl Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΎ Π²ΡΠ² Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΠΈΠΈ.
ΠΠ΄ΠΈΠ½ ΠΎΡ Π½Π°ΡΠΈΠ½ΠΈΡΠ΅ Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΡ ΡΠ΅Π΄ ΠΊΡΠΌ Π²Π°ΡΠΈΡ ~/.bashrc
:
source <(kubectl completion bash)
ΠΡΠΎΡΠΈΡΡ Π½Π°ΡΠΈΠ½ Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ ΠΊΡΠΌ ΠΏΠ°ΠΏΠΊΠ°ΡΠ° /usr/local/etc/bash_completion.d
:
$ kubectl completion bash
>/usr/local/etc/bash_completion.d/kubectl
Π’ΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ ΡΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π»ΠΈ bash-completion Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Homebrew. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ bash-completion Π·Π°ΡΠ΅ΠΆΠ΄Π° Π²ΡΠΈΡΠΊΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΠΎΡ ΡΠ°Π·ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ.
ΠΠΊΠΎ ΡΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π»ΠΈ /usr/local/etc/bash_completion.d
ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΌΠΎΠ½ΡΠ°ΠΆΠ°. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ Π½Π° kubectl ΡΠ΅ Π·Π°ΠΏΠΎΡΠ½Π΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π²Π΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ bash-completion.
Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ²Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΠΎΠΏΡΠΈΠΈ ΡΠ° Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΈ.
Zsh
Π‘ΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ Π·Π° Zsh Π½Π΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. ΠΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅, Π΅ Π΄Π° Π³ΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ Π·Π°ΡΠ΅Π΄ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°ΡΠ° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π°, ΠΊΠ°ΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΡΠ΅Π΄ ΠΊΡΠΌ Π²Π°ΡΠΈΡ ~/.zshrc
ΡΠ°ΠΉΠ»:
source <(kubectl completion zsh)
ΠΠΊΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠ° not found: compdef
ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π²Π°ΡΠ°ΡΠ° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°, ΡΡΡΠ±Π²Π° Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ Π²Π³ΡΠ°Π΄Π΅Π½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ compdef
. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅, ΠΊΠ°ΡΠΎ Π³ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° Π²Π°ΡΠΈΡ ΡΠ°ΠΉΠ» ~/.zshrc
ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ:
autoload -Uz compinit
compinit
2. ΠΡΡΠ· ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅
ΠΠΎΠ³Π°ΡΠΎ ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ Π½Π° YAML ΡΠ΅ΡΡΡΡΠΈ, ΡΡΡΠ±Π²Π° Π΄Π° Π·Π½Π°Π΅ΡΠ΅ ΠΏΠΎΠ»Π΅ΡΠ°ΡΠ° ΠΈ ΡΡΡ Π½ΠΎΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΡΠ΅Π·ΠΈ ΡΠ΅ΡΡΡΡΠΈ. ΠΠ΄Π½ΠΎ ΠΌΡΡΡΠΎ Π·Π° ΡΡΡΡΠ΅Π½Π΅ Π½Π° ΡΠ°Π·ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΅ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΡΡ API, ΠΊΠΎΠΉΡΠΎ ΡΡΠ΄ΡΡΠΆΠ° ΠΏΡΠ»Π½ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΡΡΡΠΈ.
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π° ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ ΠΊΡΠΌ ΡΠ΅Π± Π±ΡΠ°ΡΠ·ΡΡΠ° Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΡΡΠΈΡΠ΅ Π½Π΅ΡΠΎ, Π΅ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ kubectl ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° kubectl explain
, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΠ΅ΡΡΡΡΠΈ Π½Π°ΠΏΡΠ°Π²ΠΎ Π²ΡΠ² Π²Π°ΡΠΈΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π».
Π€ΠΎΡΠΌΠ°ΡΡΡ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π΅ ΠΊΠ°ΠΊΡΠΎ ΡΠ»Π΅Π΄Π²Π°:
$ kubectl explain resource[.field]...
ΠΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΡΠ΅ ΠΈΠ·Π²Π΅Π΄Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° ΠΈΡΠΊΠ°Π½ΠΈΡ ΡΠ΅ΡΡΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅. ΠΠΎΠΊΠ°Π·Π°Π½Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Π° Ρ ΡΠ°Π·ΠΈ, ΡΡΠ΄ΡΡΠΆΠ°ΡΠ° ΡΠ΅ Π² ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΡΠΎ Π·Π° API.
ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ kubectl explain
ΠΏΠΎΠΊΠ°Π·Π²Π° ΡΠ°ΠΌΠΎ ΠΏΡΡΠ²ΠΎΡΠΎ Π½ΠΈΠ²ΠΎ Π½Π° Π²Π»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΠΎΠ»Π΅ΡΠ°.
ΠΠΈΠΆΡΠ΅ ΠΊΠ°ΠΊ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΡΠ΅ ΡΡΠ»ΠΎΡΠΎ Π΄ΡΡΠ²ΠΎ, Π°ΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΠΎΠΏΡΠΈΡΡΠ° --recursive
:
$ kubectl explain deployment.spec --recursive
ΠΠΊΠΎ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅ ΡΠΎΡΠ½ΠΎ ΠΊΠΎΠΈ ΡΠ΅ΡΡΡΡΠΈ ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΡΡΡ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°:
$ kubectl api-resources
Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½ΠΎ ΡΠΈΡΠ»ΠΎ, Π½Π°ΠΏΡ. deployments
Π²ΠΌΠ΅ΡΡΠΎ deployment
. Π’ΠΎΠΉ ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΡΠ°ΡΠΊΠΎΡΠΎ ΠΈΠΌΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ deploy
, Π·Π° ΠΎΠ½Π΅Π·ΠΈ ΡΠ΅ΡΡΡΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π³ΠΎ ΠΈΠΌΠ°Ρ. ΠΠ΅ ΡΠ΅ ΡΡΠ΅Π²ΠΎΠΆΠ΅ΡΠ΅ Π·Π° ΡΠ΅Π·ΠΈ ΡΠ°Π·Π»ΠΈΠΊΠΈ. ΠΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΠΎΠΏΡΠΈΠΈ Π·Π° ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½Π΅ ΡΠ° Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΈ Π·Π° kubectl. Π’ΠΎΠ΅ΡΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΡΡΡ
Π·Π° kubectl explain
.
ΠΡΠΈΡΠΊΠΈ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΡΠ° Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΈ:
$ kubectl explain deployments.spec
# ΠΈΠ»ΠΈ
$ kubectl explain deployment.spec
# ΠΈΠ»ΠΈ
$ kubectl explain deploy.spec
3. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ·Ρ ΠΎΠ΄Π΅Π½ ΡΠΎΡΠΌΠ°Ρ Π½Π° ΠΊΠΎΠ»ΠΎΠ½Π°
ΠΠ·Ρ
ΠΎΠ΄Π΅Π½ ΡΠΎΡΠΌΠ°Ρ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ kubectl get
:
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
engine-544b6b6467-22qr6 1/1 Running 0 78d
engine-544b6b6467-lw5t8 1/1 Running 0 78d
engine-544b6b6467-tvgmg 1/1 Running 0 78d
web-ui-6db964458-8pdw4 1/1 Running 0 78d
Π’ΠΎΠ·ΠΈ ΡΠΎΡΠΌΠ°Ρ Π΅ ΡΠ΄ΠΎΠ±Π΅Π½, Π½ΠΎ ΡΡΠ΄ΡΡΠΆΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. Π ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ ΡΠΎΡΠΌΠ°ΡΠ° Π·Π° ΠΏΡΠ»Π½Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡ Π½Π° ΡΠ΅ΡΡΡΡ, ΡΡΠΊ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ ΡΠ°ΠΌΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΠΎΠ»Π΅ΡΠ°.
Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ·Ρ ΠΎΠ΄Π΅Π½ ΡΠΎΡΠΌΠ°Ρ Π½Π° ΠΊΠΎΠ»ΠΎΠ½Π°. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π²ΠΈ Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΊΠ°ΠΊΠ²ΠΈ Π΄Π°Π½Π½ΠΈ Π΄Π° ΠΈΠ·Π²Π΅Π΄Π΅ΡΠ΅. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΡΠ΅ Π²ΡΡΠΊΠΎ ΠΏΠΎΠ»Π΅ Π·Π° ΡΠ΅ΡΡΡΡ ΠΊΠ°ΡΠΎ ΠΎΡΠ΄Π΅Π»Π½Π° ΠΊΠΎΠ»ΠΎΠ½Π°.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΡΠΎΡΠΌΠ°Ρ ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΎΠΏΡΠΈΠΈΡΠ΅:
-o custom-columns=<header>:<jsonpath>[,<header>:<jsonpath>]...
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π²ΡΡΠΊΠ° ΠΈΠ·Ρ
ΠΎΠ΄Π½Π° ΠΊΠΎΠ»ΠΎΠ½Π° ΠΊΠ°ΡΠΎ Π΄Π²ΠΎΠΉΠΊΠ° <header>:<jsonpath>
ΠΡΠ΄Π΅ΡΠΎ <header>
Π΅ ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ»ΠΎΠ½Π°ΡΠ° ΠΈ <jsonpath>
β ΠΈΠ·ΡΠ°Π·, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΡΠ΅ΡΡΡΡΠ½ΠΎ ΠΏΠΎΠ»Π΅.
ΠΠ΅ΠΊΠ° Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ ΠΏΡΠΎΡΡ ΠΏΡΠΈΠΌΠ΅Ρ:
$ kubectl get pods -o custom-columns='NAME:metadata.name'
NAME
engine-544b6b6467-22qr6
engine-544b6b6467-lw5t8
engine-544b6b6467-tvgmg
web-ui-6db964458-8pdw4
ΠΠ·Ρ ΠΎΠ΄ΡΡ ΡΡΠ΄ΡΡΠΆΠ° Π΅Π΄Π½Π° ΠΊΠΎΠ»ΠΎΠ½Π° Ρ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Ρ.
ΠΠ·ΡΠ°Π·ΡΡ Π½Π° ΠΎΠΏΡΠΈΡΡΠ° ΠΈΠ·Π±ΠΈΡΠ° ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄ΠΎΠ²Π΅ΡΠ΅ ΠΎΡ ΠΏΠΎΠ»Π΅ΡΠΎ metadata.name
. Π’ΠΎΠ²Π° Π΅ ΡΠ°ΠΊΠ°, Π·Π°ΡΠΎΡΠΎ ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π³ΡΡΠΏΠ°ΡΠ° Π΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΎ Π² ΠΏΠΎΠ»Π΅ΡΠΎ Π·Π° ΠΈΠΌΠ΅ Π½Π° Π΄Π΅ΡΠ΅ metadata
Π² ΡΠ΅ΡΡΡΡΠ½ΠΎΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ΄Ρ. ΠΠΎΠ²Π΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π² kubectl explain pod.metadata.name
.
Π‘Π΅Π³Π° Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ, ΡΠ΅ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΊΠΎΠ»ΠΎΠ½Π° ΠΊΡΠΌ ΠΈΠ·Ρ ΠΎΠ΄Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΊΠ°Π·Π²Π°ΡΠ° Π²ΡΠ·Π΅Π»Π°, Π½Π° ΠΊΠΎΠΉΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Π²ΡΠ΅ΠΊΠΈ pod. ΠΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ°ΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΊΠΎΠ»ΠΎΠ½Π° ΠΊΡΠΌ ΠΎΠΏΡΠΈΡΡΠ° Π·Π° ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈ:
$ kubectl get pods
-o custom-columns='NAME:metadata.name,NODE:spec.nodeName'
NAME NODE
engine-544b6b6467-22qr6 ip-10-0-80-67.ec2.internal
engine-544b6b6467-lw5t8 ip-10-0-36-80.ec2.internal
engine-544b6b6467-tvgmg ip-10-0-118-34.ec2.internal
web-ui-6db964458-8pdw4 ip-10-0-118-34.ec2.internal
ΠΠ·ΡΠ°Π·ΡΡ ΠΈΠ·Π±ΠΈΡΠ° ΠΈΠΌΠ΅ΡΠΎ Π½Π° Π²ΡΠ·Π΅Π»Π° ΠΎΡ spec.nodeName
β ΠΊΠΎΠ³Π°ΡΠΎ ΠΏΠΎΠ΄ Π΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ Π½Π° Π²ΡΠ·Π΅Π», ΠΈΠΌΠ΅ΡΠΎ ΠΌΡ ΡΠ΅ ΠΈΠ·ΠΏΠΈΡΠ²Π° Π² ΠΏΠΎΠ»Π΅ΡΠΎ spec.nodeName
ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΡΠ΅ΡΡΡΡΠ° Π½Π° pod. ΠΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π² ΠΈΠ·Ρ
ΠΎΠ΄Π° kubectl explain pod.spec.nodeName
.
ΠΠΎΠ»Ρ, ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΠΏΠΎΠ»Π΅ΡΠ°ΡΠ° Π·Π° ΡΠ΅ΡΡΡΡΠΈ Π½Π° Kubernetes ΡΠ° ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΈ ΠΊΡΠΌ Π³Π»Π°Π²Π½ΠΈ ΠΈ ΠΌΠ°Π»ΠΊΠΈ Π±ΡΠΊΠ²ΠΈ.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ Π²ΡΡΠΊΠΎ ΠΏΠΎΠ»Π΅ Π·Π° ΡΠ΅ΡΡΡΡ ΠΊΠ°ΡΠΎ ΠΊΠΎΠ»ΠΎΠ½Π°. ΠΡΠΎΡΡΠΎ ΠΏΡΠ΅Π³Π»Π΅Π΄Π°ΠΉΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° ΡΠ΅ΡΡΡΡΠ° ΠΈ Ρ ΠΈΠ·ΠΏΡΠΎΠ±Π²Π°ΠΉΡΠ΅ Ρ Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΠ»Π΅ΡΠ°, ΠΊΠΎΠΈΡΠΎ Ρ Π°ΡΠ΅ΡΠ²Π°ΡΠ΅.
ΠΠΎ ΠΏΡΡΠ²ΠΎ, Π½Π΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎ-ΠΎΡΠ±Π»ΠΈΠ·ΠΎ ΠΈΠ·ΡΠ°Π·ΠΈΡΠ΅ Π·Π° ΠΈΠ·Π±ΠΎΡ Π½Π° ΠΏΠΎΠ»Π΅.
JSONPath ΠΈΠ·ΡΠ°Π·ΠΈ
ΠΠ·ΡΠ°Π·ΠΈΡΠ΅ Π·Π° ΠΈΠ·Π±ΠΎΡ Π½Π° ΡΠ΅ΡΡΡΡΠ½ΠΈ ΠΏΠΎΠ»Π΅ΡΠ° ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π°Ρ Π½Π°
JSONPath Π΅ Π΅Π·ΠΈΠΊ Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ JSON Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈ. ΠΠ·Π±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π΅Π΄Π½ΠΎ ΠΏΠΎΠ»Π΅ Π΅ Π½Π°ΠΉ-Π»Π΅ΡΠ½ΠΈΡΡ ΡΠ»ΡΡΠ°ΠΉ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° JSONPath. Π’ΠΎΠΉ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ
Kubectl explain ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ Π±ΡΠΎΠΉ JSONPath ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠ΅ Π·Π° ΡΡΡ Π½ΠΎΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΡΠ° ΠΎΠΏΠΈΡΠ°Π½ΠΈ ΠΏΠΎ-Π΄ΠΎΠ»Ρ:
# ΠΡΠ±ΡΠ°ΡΡ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΠΈΡΠΊΠ°
$ kubectl get pods -o custom-columns='DATA:spec.containers[*].image'
# ΠΡΠ±ΡΠ°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΠΈΡΠΊΠ°
$ kubectl get pods -o custom-columns='DATA:spec.containers[0].image'
# ΠΡΠ±ΡΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΠΈΡΠΊΠ°, ΠΏΠΎΠΏΠ°Π΄Π°ΡΡΠΈΠ΅ ΠΏΠΎΠ΄ ΡΠΈΠ»ΡΡΡ
$ kubectl get pods -o custom-columns='DATA:spec.containers[?(@.image!="nginx")].image'
# ΠΡΠ±ΡΠ°ΡΡ Π²ΡΠ΅ ΠΏΠΎΠ»Ρ ΠΏΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΠΏΡΡΠΈ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΈΡ
ΠΈΠΌΠ΅Π½ΠΈ
$ kubectl get pods -o custom-columns='DATA:metadata.*'
# ΠΡΠ±ΡΠ°ΡΡ Π²ΡΠ΅ ΠΏΠΎΠ»Ρ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΡ
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
$ kubectl get pods -o custom-columns='DATA:..image'
ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡΡ [] Π΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π²Π°ΠΆΠ΅Π½. ΠΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅ΡΠ° Π·Π° ΡΠ΅ΡΡΡΡΠΈ Π½Π° Kubernetes ΡΠ° ΡΠΏΠΈΡΡΡΠΈ ΠΈ ΡΠΎΠ·ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ·Π±ΠΈΡΠ°ΡΠ΅ ΡΠ»Π΅Π½ΠΎΠ²Π΅ Π½Π° ΡΠ΅Π·ΠΈ ΡΠΏΠΈΡΡΡΠΈ. Π§Π΅ΡΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΡ Π·Π°ΠΌΠ΅ΡΡΠ²Π°Ρ Π·Π½Π°ΠΊ ΠΊΠ°ΡΠΎ [*], Π·Π° Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΠΎΡ ΡΠΏΠΈΡΡΠΊ.
ΠΡΠΈΠΌΠ΅ΡΠΈ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ ΠΈΠ·Ρ ΠΎΠ΄Π΅Π½ ΡΠΎΡΠΌΠ°Ρ Π½Π° ΠΊΠΎΠ»ΠΎΠ½Π° ΡΠ° Π±Π΅Π·ΠΊΡΠ°ΠΉΠ½ΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΡΠ΅ Π²ΡΡΠΊΠΎ ΠΏΠΎΠ»Π΅ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΠΎΡ ΡΠ΅ΡΡΡΡΠ½ΠΈ ΠΏΠΎΠ»Π΅ΡΠ° Π² ΠΈΠ·Ρ ΠΎΠ΄Π°. ΠΡΠΎ Π½ΡΠΊΠΎΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½ΠΎ Π½Π΅ ΡΠ΅ ΠΊΠΎΠ»Π΅Π±Π°ΠΉΡΠ΅ Π΄Π° Π³ΠΈ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΡΠ΅ ΡΠ°ΠΌΠΈ ΠΈ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π±ΠΎΡΡΡ Π·Π° Π²Π°Ρ.
- ΠΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π·Π° ΠΊΠ°ΠΏΡΡΠ»ΠΈ:
$ kubectl get pods -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image' NAME IMAGES engine-544b6b6467-22qr6 rabbitmq:3.7.8-management,nginx engine-544b6b6467-lw5t8 rabbitmq:3.7.8-management,nginx engine-544b6b6467-tvgmg rabbitmq:3.7.8-management,nginx web-ui-6db964458-8pdw4 wordpress
Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ Π·Π° Π²ΡΡΠΊΠ° ΠΊΠ°ΠΏΡΡΠ»Π°.
ΠΠ΅ Π·Π°Π±ΡΠ°Π²ΡΠΉΡΠ΅, ΡΠ΅ Π΅Π΄ΠΈΠ½ ΠΏΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ΄ΡΡΠΆΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, ΡΠΎΠ³Π°Π²Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠ° ΡΠ΅ ΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ Π½Π° Π΅Π΄ΠΈΠ½ ΡΠ΅Π΄, ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈ ΡΡΡ Π·Π°ΠΏΠ΅ΡΠ°ΠΈ.
- ΠΠΎΠΊΠ°Π·Π°Π½ΠΈ Π·ΠΎΠ½ΠΈ Π·Π° Π½Π°Π»ΠΈΡΠ½ΠΎΡΡ Π½Π° Π²ΡΠ·Π΅Π»:
$ kubectl get nodes -o custom-columns='NAME:metadata.name,ZONE:metadata.labels.failure-domain.beta.kubernetes.io/zone' NAME ZONE ip-10-0-118-34.ec2.internal us-east-1b ip-10-0-36-80.ec2.internal us-east-1a ip-10-0-80-67.ec2.internal us-east-1b
Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π°, Π°ΠΊΠΎ Π²Π°ΡΠΈΡΡ ΠΊΠ»ΡΡΡΠ΅Ρ ΡΠ΅ Ρ ΠΎΡΡΠ²Π° Π² ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ ΠΎΠ±Π»Π°ΠΊ. Π’ΠΎΠΉ ΠΏΠΎΠΊΠ°Π·Π²Π° Π·ΠΎΠ½Π°ΡΠ° Π½Π° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡ Π·Π° Π²ΡΠ΅ΠΊΠΈ Π²ΡΠ·Π΅Π».
ΠΠΎΠ½Π°ΡΠ° Π½Π° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡ Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π·Π° ΠΎΠ±Π»Π°ΠΊ, ΠΊΠΎΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π° Π·ΠΎΠ½Π°ΡΠ° Π½Π° ΡΠ΅ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡ Π΄ΠΎ Π³Π΅ΠΎΠ³ΡΠ°ΡΡΠΊΠΈ ΡΠ΅Π³ΠΈΠΎΠ½.
ΠΠΎΠ½ΠΈΡΠ΅ Π·Π° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡ Π·Π° Π²ΡΠ΅ΠΊΠΈ Π²ΡΠ·Π΅Π» ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Ρ ΡΡΠ΅Π· ΡΠΏΠ΅ΡΠΈΠ°Π»Π΅Π½ Π΅ΡΠΈΠΊΠ΅Ρ -
. ΠΠΊΠΎ ΠΊΠ»ΡΡΡΠ΅ΡΡΡ ΡΠ°Π±ΠΎΡΠΈ Π² ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ ΠΎΠ±Π»Π°ΠΊ, ΡΠΎΠ·ΠΈ Π΅ΡΠΈΠΊΠ΅Ρ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΈ ΡΠ΅ ΠΏΠΎΠΏΡΠ»Π²Π° Ρ ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° Π·ΠΎΠ½ΠΈΡΠ΅ Π·Π° Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡ Π·Π° Π²ΡΠ΅ΠΊΠΈ Π²ΡΠ·Π΅Π».failure-domain.beta.kubernetes.io/zone
ΠΡΠΈΠΊΠ΅ΡΠΈΡΠ΅ Π½Π΅ ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π½Π° Kubernetes, ΡΠ°ΠΊΠ° ΡΠ΅ Π½ΡΠΌΠ° Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΡΡ Π²
Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π·Π° API . Π’Π΅ ΠΎΠ±Π°ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ Π²ΠΈΠ΄ΡΡ (ΠΊΠ°ΠΊΡΠΎ Π²ΡΠΈΡΠΊΠΈ Π΄ΡΡΠ³ΠΈ Π΅ΡΠΈΠΊΠ΅ΡΠΈ), Π°ΠΊΠΎ ΠΏΠΎΠΈΡΠΊΠ°ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π²ΡΠ·Π»ΠΈΡΠ΅ Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ YAML ΠΈΠ»ΠΈ JSON:$ kubectl get nodes -o yaml # ΠΈΠ»ΠΈ $ kubectl get nodes -o json
Π’ΠΎΠ²Π° Π΅ ΡΡΠ΄Π΅ΡΠ΅Π½ Π½Π°ΡΠΈΠ½ Π΄Π° Π½Π°ΡΡΠΈΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅ Π² Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ Π½Π°ΡΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈΡΠ΅.
4. ΠΠ΅ΡΠ½ΠΎ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΎΡ ΠΈΠΌΠ΅Π½Π°
ΠΠΎΠ³Π°ΡΠΎ kubectl ΠΎΡΠΏΡΠ°Π²ΠΈ Π·Π°ΡΠ²ΠΊΠ° ΠΊΡΠΌ Kubernetes API, ΡΠΎΠΉ ΠΏΡΡΠ²ΠΎ ΠΏΡΠΎΡΠΈΡΠ° ΡΠ°ΠΉΠ»Π° kubeconfig, Π·Π° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈ Π²ΡΠΈΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π·Π° Π²ΡΡΠ·ΠΊΠ°ΡΠ°.
ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΡΠ°ΠΉΠ»ΡΡ kubeconfig Π΅ ~/.kube/config
. ΠΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠΎΠ·ΠΈ ΡΠ°ΠΉΠ» ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° ΠΈΠ»ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ° ΡΡΠ΅Π· ΡΠΏΠ΅ΡΠΈΠ°Π»Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°.
ΠΠΎΠ³Π°ΡΠΎ ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ, Π²Π°ΡΠΈΡΡ kubeconfig ΡΠ°ΠΉΠ» ΡΡΠ΄ΡΡΠΆΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΠΊΡΠΌ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ. ΠΠΌΠ°ΡΠ΅ Π½ΡΠΆΠ΄Π° ΠΎΡ Π½Π°ΡΠΈΠ½ Π΄Π° ΠΊΠ°ΠΆΠ΅ΡΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° kubectl Ρ ΠΊΠΎΠΉ ΠΊΠ»ΡΡΡΠ΅Ρ ΡΠ°Π±ΠΎΡΠΈΡΠ΅.
Π ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΊΠ»ΡΡΡΠ΅Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΎΡ ΠΈΠΌΠ΅Π½Π° β ΡΠΈΠΏ Π²ΠΈΡΡΡΠ°Π»Π΅Π½ ΠΊΠ»ΡΡΡΠ΅Ρ Π²ΡΠ² ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠ»ΡΡΡΠ΅Ρ. Kubectl ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΠΊΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° kubeconfig ΡΠ°ΠΉΠ»Π°. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π²ΠΈΠ΅ ββΡΡΡΠΎ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΡΠ΅ ΠΎΡ Π½Π°ΡΠΈΠ½ Π΄Π° ΠΊΠ°ΠΆΠ΅ΡΠ΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° kubectl Ρ ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ.
Π ΡΠ°Π·ΠΈ Π³Π»Π°Π²Π° ΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΈΠΌ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠΈ ΠΈ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ Π½Π°ΠΊΠ°ΡΠ°ΠΌΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ.
ΠΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ kubeconfig ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΈΠ·Π±ΡΠΎΠ΅Π½ΠΈ Π² ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° KUBECONFIG. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π²ΡΠΈΡΠΊΠΈ ΡΠ΅Π·ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π½ΠΈ Π² Π΅Π΄Π½Π° ΠΎΠ±ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅. ΠΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ°ΠΉΠ»Π° kubeconfig ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, ΠΊΠ°ΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ kubectl Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° --kubeconfig
. ΠΠΈΠΆ
kubeconfig ΡΠ°ΠΉΠ»ΠΎΠ²Π΅
ΠΠ΅ΠΊΠ° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠΎΡΠ½ΠΎ ΡΡΠ΄ΡΡΠΆΠ° kubeconfig ΡΠ°ΠΉΠ»ΡΡ:
ΠΠ°ΠΊΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠ°ΠΉΠ»ΡΡ kubeconfig ΡΡΠ΄ΡΡΠΆΠ° Π½Π°Π±ΠΎΡ ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈ. ΠΠΎΠ½ΡΠ΅ΠΊΡΡΡΡ ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ ΡΡΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ°:
- ΠΠ»ΡΡΡΠ΅Ρ β API URL Π½Π° ΡΡΡΠ²ΡΡΠ° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°.
- ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» - ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΠ²Π°Π½Π΅ Π² ΠΊΠ»ΡΡΡΠ΅ΡΠ°.
- ΠΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π° - ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΎ ΠΏΡΠΈ ΠΏΡΠΈΡΡΠ΅Π΄ΠΈΠ½ΡΠ²Π°Π½Π΅ ΠΊΡΠΌ ΠΊΠ»ΡΡΡΠ΅ΡΠ°.
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° ΡΠ΅ ΡΠ΅ΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π΅Π΄ΠΈΠ½ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π° ΠΊΠ»ΡΡΡΠ΅Ρ Π² ΡΠ²ΠΎΡ kubeconfig. ΠΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±Π°ΡΠ΅ Π΄Π° ΠΈΠΌΠ°ΡΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈ Π½Π° ΠΊΠ»ΡΡΡΠ΅Ρ, Π΄ΠΈΡΠ΅ΡΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ ΠΏΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π°. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΡΠ°Π·ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π΅ Π½Π΅ΠΎΠ±ΠΈΡΠ°ΠΉΠ½Π°, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠΌΠ° ΡΡΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ Π΅Π΄Π½ΠΎ ΠΊΡΠΌ Π΅Π΄Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈ.
ΠΡΠ² Π²ΡΠ΅ΠΊΠΈ Π΅Π΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ Π΅Π΄ΠΈΠ½ ΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈΡΠ΅ Π΅ Π°ΠΊΡΡΠ°Π»Π΅Π½:
ΠΠΎΠ³Π°ΡΠΎ kubectl ΡΠ΅ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π΅Π½ ΡΠ°ΠΉΠ», ΡΠΎΠΉ Π²ΠΈΠ½Π°Π³ΠΈ Π²Π·Π΅ΠΌΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡ ΡΠ΅ΠΊΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ. Π Π³ΠΎΡΠ½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ kubectl ΡΠ΅ ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ Ρ ΠΊΠ»ΡΡΡΠ΅ΡΠ° Hare.
Π‘ΡΠΎΡΠ²Π΅ΡΠ½ΠΎ, Π·Π° Π΄Π° ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΊΡΠΌ Π΄ΡΡΠ³ ΠΊΠ»ΡΡΡΠ΅Ρ, ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ΠΊΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π²ΡΠ² ΡΠ°ΠΉΠ»Π° kubeconfig:
Π‘Π΅Π³Π° kubectl ΡΠ΅ ΡΠ΅ ΡΠ²ΡΡΠΆΠ΅ Ρ ΠΊΠ»ΡΡΡΠ΅ΡΠ° Fox.
ΠΠ° Π΄Π° ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΊΡΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π° Π² ΡΡΡΠΈΡ ΠΊΠ»ΡΡΡΠ΅Ρ, ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° ΠΎΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π° Π·Π° ΡΠ΅ΠΊΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ:
Π Π³ΠΎΡΠ½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ kubectl ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π° Prod Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ° Π½Π° Fox (ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° Π±Π΅ΡΠ΅ Π·Π°Π΄Π°Π΄Π΅Π½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π° Test).
ΠΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ kubectl ΡΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΎΠΏΡΠΈΠΈ --cluster
, --user
, --namespace
ΠΈ --context
, ΠΊΠΎΠΈΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΎΡΠ΄Π΅Π»Π½ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ ΠΈ ΡΠ°ΠΌΠΈΡ ΡΠ΅ΠΊΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ΠΎ Π² kubeconfig. ΠΠΈΠΆ kubectl options
.
ΠΠ° ΡΠ΅ΠΎΡΠΈΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ½ΠΎ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ Π² kubeconfig. ΠΠΎ Π΅ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ. ΠΠ° Π΄Π° ΠΎΠΏΡΠΎΡΡΠΈΡΠ΅ ΡΠ΅Π·ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΈΠΌΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ kubectx
ΠΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π° ΠΏΠΎΠΌΠΎΡΠ½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π·Π° ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»ΡΡΡΠ΅ΡΠΈ ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΎΡ ΠΈΠΌΠ΅Π½Π°.
ΠΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ kubectx
ΠΈ kubens
Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΠ΅ΠΊΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ°.
ΠΠ°ΠΊΡΠΎ ΡΠΏΠΎΠΌΠ΅Π½Π°Ρ ΠΌΠ΅, ΠΏΡΠΎΠΌΡΠ½Π°ΡΠ° Π½Π° ΡΠ΅ΠΊΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΠΊΠ»ΡΡΡΠ΅ΡΠ°, Π°ΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π½Π° ΠΊΠ»ΡΡΡΠ΅Ρ.
ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ:
ΠΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Ρ kubeconfig ΡΠ°ΠΉΠ»Π°, ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΠΏΠΎ-Π³ΠΎΡΠ΅.
Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ kubectx
, ΡΠ»Π΅Π΄Π²Π°ΠΉΡΠ΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈΡΠ΅ Π½Π°
Π Π΄Π²Π΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠΌΠ΅Π½Π° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π°, ΠΊΠΎΠ΅ΡΠΎ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° ΠΎΡ ΠΏΡΠ»Π½ΠΎΡΠΎ ΠΈΠΌ Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅. ΠΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅
ΠΡΠ΅ Π΅Π΄Π½Π° ΠΏΠΎΠ»Π΅Π·Π½Π° ΡΡΠ½ΠΊΡΠΈΡ kubectx
Π΅ kubectx
. ΠΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π° ΡΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈΡ Π±Π΅Π·ΠΏΠ»Π°ΡΠ΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ΡΡΡΡΠ΅Π½Π΅, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ ΠΎΡ fzf.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ°
ΠΠ΅ ΡΠ΅ Π½ΡΠΆΠ΄Π°Π΅ΡΠ΅ ΠΎΡ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΠ΅ΠΊΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π°, ΡΡΠΉ ΠΊΠ°ΡΠΎ kubectl ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΡΠΎΠ²Π°. ΠΠ°, Π΅ΠΊΠΈΠΏ kubectl config
ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΏΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° kubeconfig ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
ΠΡΠΎ Π½ΡΠΊΠΎΠΈ ΠΎΡ ΡΡΡ :
kubectl config get-contexts
: ΠΏΠΎΠΊΠ°Π·Π²Π° Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΈ;kubectl config current-context
: Π²Π·Π΅ΠΌΠ΅ΡΠ΅ ΡΠ΅ΠΊΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ;kubectl config use-context
: ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΠ΅ΠΊΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ;kubectl config set-context
: ΠΡΠΎΠΌΠ΅Π½Π΅ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΈΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ.
ΠΠΈΡΠ΅ΠΊΡΠ½ΠΎΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΎΠ±Π°ΡΠ΅ Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ, Π·Π°ΡΠΎΡΠΎ ΡΠ° Π΄ΡΠ»Π³ΠΈ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ Π½Π° ΡΠ΅ΡΡΠΏΠΊΠΈ Π·Π° ΡΡΡ , ΠΊΠΎΠΈΡΠΎ ΡΠ° Π»Π΅ΡΠ½ΠΈ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅.
Π‘ΡΠ·Π΄Π°Π΄ΠΎΡ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ, ΠΏΠΎΠ΄ΠΎΠ±Π½Π° Π½Π° kubectx. Π’ΡΠΊ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΈ Π²ΠΈΠ΄ΠΈΡΠ΅ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅:
ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ fzf, Π·Π° Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π΅Π½ Π±Π΅Π·ΠΏΠ»Π°ΡΠ΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ΡΡΡΡΠ΅Π½Π΅ (ΠΊΠ°ΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌ Π½Π° kubectx). Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΆΠ΄Π°
ΠΡΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈΡΠ΅ Π½Π° ΡΠ°ΠΌΠΈΡΠ΅ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ:
# ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ
alias krc='kubectl config current-context'
# Π‘ΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ
ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠ²
alias klc='kubectl config get-contexts -o name | sed "s/^/ /;|^ $(krc)$|s/ /*/"'
# ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ
alias kcc='kubectl config use-context "$(klc | fzf -e | sed "s/^..//")"'
# ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½
alias krn='kubectl config get-contexts --no-headers "$(krc)" | awk "{print $5}" | sed "s/^$/default/"'
# Π‘ΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ
ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ² ΠΈΠΌΠ΅Π½
alias kln='kubectl get -o name ns | sed "s|^.*/| |;|^ $(krn)$|s/ /*/"'
# ΠΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½
alias kcn='kubectl config set-context --current --namespace "$(kln | fzf -e | sed "s/^..//")"'
ΠΠ° Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΡΠ΅Π·ΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ, ΡΡΡΠ±Π²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π³ΠΎΡΠ½ΠΈΡΠ΅ Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ ΠΊΡΠΌ Π²Π°ΡΠΈΡ ΡΠ°ΠΉΠ» ~/.bashrc
ΠΈΠ»ΠΈ ~/.zshrc
ΠΈ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ Π²Π°ΡΠ°ΡΠ° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°.
ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π΄ΠΎΠ±Π°Π²ΠΊΠΈ
Kubectl Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ ΠΏΠΎ ΡΡΡΠΈΡ Π½Π°ΡΠΈΠ½ ΠΊΠ°ΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ. ΠΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΏΡΠΈΡΡΠ°Π²ΠΊΠ°ΡΠ° kubectl-foo ΠΈ Π΄Π° Ρ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° kubectl foo
.
ΠΠΈ Π±ΠΈΠ»ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠ΅Π· ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ kubectl ctx
Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΈ kubectl ns
Π·Π° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ ΠΎΡ ΠΈΠΌΠ΅Π½Π°.
ΠΠ°ΠΏΠΈΡΠ°Ρ Π΄Π²Π° ΠΏΠ»ΡΠ³ΠΈΠ½Π°, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ°Π²ΡΡ ΡΠΎΠ²Π°:
Π Π°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈΡΠ΅ ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° Π½Π° ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ ΠΎΡ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ ΡΠ°Π·Π΄Π΅Π».
ΠΡΠΎ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΡΡ:
ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ fzf, Π·Π° Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π΅Π½ Π±Π΅Π·ΠΏΠ»Π°ΡΠ΅Π½ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ΡΡΡΡΠ΅Π½Π΅ (ΠΊΠ°ΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌ Π½Π° kubectx). Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΆΠ΄Π°
ΠΠ° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅ shell ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π½Π° ΠΈΠΌΠ΅ chmod +x
. ΠΠ΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ kubectl ctx
ΠΈ kubectl ns
.
5. ΠΠ°ΠΌΠ°Π»Π΅ΡΠ΅ Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ
ΠΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈΡΠ΅ Π½Π° Shell ΡΠ° Π΄ΠΎΠ±ΡΡ Π½Π°ΡΠΈΠ½ Π·Π° ΡΡΠΊΠΎΡΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ. ΠΡΠΎΠ΅ΠΊΡ
ΠΠΎΠΆΠ΅ Π±ΠΈ ΡΠ΅ ΡΡΠ΄ΠΈΡΠ΅ - ΠΊΠ°ΠΊ Π·Π°ΠΏΠΎΠΌΠ½ΡΡΠ΅ 800 ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ? ΠΠΎ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Π³ΠΈ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΈ, Π·Π°ΡΠΎΡΠΎ ΡΠ΅ ΡΠ° ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ΠΈ ΠΏΠΎ ΠΏΡΠΎΡΡΠ° ΡΡ Π΅ΠΌΠ°, ΠΊΠΎΡΡΠΎ Π΅ Π΄Π°Π΄Π΅Π½Π° ΠΏΠΎ-Π΄ΠΎΠ»Ρ:
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
- kgpooyaml - kubectl get pods oyaml
- ksysgsvcw β kubectl -n kube-system get svc w
- ksysrmcm -kubectl -n kube-system rm cm
- kgdepallsl - kubectl ΠΏΠΎΠ»ΡΡΠΈ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ sl
ΠΠ°ΠΊΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈΡΠ΅ ΡΠ° ΡΡΡΡΠ°Π²Π΅Π½ΠΈ ΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ, Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅Π½ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° kubectl. ΠΡΠ΅ΠΊΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π·Π° ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈ ΡΠ΅ΡΡΡΡ ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π·Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ. ΠΠΈΠ΅ ΠΏΡΠΎΡΡΠΎ "ΠΏΠΎΠΏΡΠ»Π²Π°ΡΠ΅" ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΠΎΡΠ»ΡΠ²ΠΎ Π½Π°Π΄ΡΡΠ½ΠΎ ΡΠΏΠΎΡΠ΅Π΄ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ°ΡΠ° ΠΏΠΎ-Π³ΠΎΡΠ΅.
Π’Π΅ΠΊΡΡΠ°ΡΠ° ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠ° Π΅ Π½Π°
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡΡ kgpooyamlall Π΅ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° kubectl get pods -o yaml --all-namespaces
.
ΠΡΠ½ΠΎΡΠΈΡΠ΅Π»Π½ΠΈΡΡ ΡΠ΅Π΄ Π½Π° ΠΎΠΏΡΠΈΠΈΡΠ΅ Π½Π΅ Π΅ Π²Π°ΠΆΠ΅Π½: ΠΊΠΎΠΌΠ°Π½Π΄Π° kgpooyamlall
Π΅ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° kgpoalloyaml
.
ΠΠ΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ ΠΊΠ°ΡΠΎ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ k
, kg
, klo
, ksys
, kgpo
ΡΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΡΠ΅ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈΠ»ΠΈ ΠΎΠΏΡΠΈΠΈ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄:
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
- ΠΠΌΠ΅ΡΡΠΎ Π΄Π°
kubectl proxy
ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΈΡΠ΅k proxy
. - ΠΠΌΠ΅ΡΡΠΎ Π΄Π°
kubectl get roles
ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΈΡΠ΅kg roles
(Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½ΡΠΌΠ° ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ Π·Π° ΡΠ΅ΡΡΡΡΠ° Roles). - ΠΠ° Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ Π·Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ pod, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°
kgpo my-pod β kubectl get pod my-pod
.
ΠΠΎΠ»Ρ, ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ Π½ΡΠΊΠΎΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ kgpol
ΡΡΠ΅Π΄ΡΡΠ²Π° kubectl get pods -l
. ΠΎΠΏΡΠΈΡ -l
ΠΈΠ·ΠΈΡΠΊΠ²Π° Π°ΡΠ³ΡΠΌΠ΅Π½Ρ - ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° Π΅ΡΠΈΠΊΠ΅Ρ. ΠΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ, ΡΠ΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡΠ°ΠΊΠ° kgpol app=ui
.
Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π½ΡΠΊΠΎΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ, ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈΡΠ΅ a, f ΠΈ l ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈ.
ΠΠ°ΡΠΎ ΡΡΠ»ΠΎ, ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΡ Π²Π°Π½Π΅ΡΠ΅ ΡΠ°Π·ΠΈ ΡΡ Π΅ΠΌΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ Π΄Π° ΠΈΠ·Π²Π»Π΅ΡΠ΅ΡΠ΅ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅, ΠΈ Π΄Π° ΡΠΏΠ΅ΡΡΠΈΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΠΏΠΈΡΠ°Π½Π΅.
ΠΌΠΎΠ½ΡΠ°ΠΆ
ΠΠ° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ kubectl-aliases, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅ ΡΠ°ΠΉΠ»Π° ~/.bashrc
ΠΈΠ»ΠΈ ~/.zshrc
:
source ~/.kubectl_aliases
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅
ΠΠ°ΠΊΡΠΎ ΠΊΠ°Π·Π°Ρ ΠΌΠ΅ ΠΏΡΠ΅Π΄ΠΈ, ΡΠ΅ΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ Π΄ΡΠΌΠΈ ΠΊΡΠΌ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
$ kgpooyaml test-pod-d4b77b989
ΠΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° kubectl, Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ Π·Π° Π½Π΅ΡΠ° ΠΊΠ°ΡΠΎ ΠΈΠΌΠ΅Π½Π° Π½Π° ΡΠ΅ΡΡΡΡΠΈ. ΠΠΎ ΠΌΠΎΠΆΠ΅ Π»ΠΈ ΡΠΎΠ²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ?
Π’ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ΅Π½ Π²ΡΠΏΡΠΎΡ, Π·Π°ΡΠΎΡΠΎ Π°ΠΊΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ, ΡΠ΅ Π·Π°Π³ΡΠ±ΠΈΡΠ΅ Π½ΡΠΊΠΎΠΈ ΠΎΡ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°ΡΠ° Π½Π° ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈΡΠ΅.
ΠΡΠ³ΠΎΠ²ΠΎΡΡΡ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΡΠΎΠ²Π° ΠΊΠΎΡ ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅:
- ΠΠ° Zsh Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ ΡΠ°Π±ΠΎΡΠΈ Π²Π΅Π΄Π½Π°Π³Π°.
- ΠΠ° Bash, Π·Π° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅, Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΡΠ°Π±ΠΎΡΠ°, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ.
ΠΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ Π·Π° ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ Π² Bash
ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Ρ Bash Π΅, ΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° Π·Π°Π²ΡΡΡΠΈ (Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ Π½Π°ΡΠΈΡΠ½Π΅ΡΠ΅ Tab) ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠ°, Π° Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°, ΠΊΡΠΌ ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΎΡΠ½Π°ΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡΡ (ΠΊΠ°ΠΊΡΠΎ ΠΏΡΠ°Π²ΠΈ Zsh Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ). Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π½ΡΠΌΠ°ΡΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ Π·Π° Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π·Π° Π²ΡΠΈΡΠΊΠΈΡΠ΅ 800 ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠ°, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ.
ΠΡΠΎΠ΅ΠΊΡ
ΠΠΎ-Π΄ΠΎΠ»Ρ ΠΏΡΡΠ²ΠΎ ΡΠ΅ ΠΎΠ±ΡΡΠ½Ρ ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌ complete-alias ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΌ, Π·Π° Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΠΌ Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π·Π° Π²ΡΠΈΡΠΊΠΈ kubectl ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ.
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠ»Π΅Π½ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ
ΠΠ° ΠΏΡΡΠ²ΠΎ ΠΌΡΡΡΠΎ, ΠΏΡΠ»Π½ΠΈΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ
ΠΠ°ΠΆΠ½Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΊΠ° Π·Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π° MacOS: ΠΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ΡΠΊΡΠΈΠΏΡΠ° Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ kubectl, complete-alias Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ Ρ Bash 3.2, ΠΊΠΎΠ΅ΡΠΎ Π΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π² MacOS. ΠΠΎ-ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ, complete-alias Π·Π°Π²ΠΈΡΠΈ ΠΎΡ bash-completion v2 (brew install bash-completion@2
), ΠΊΠΎΠ΅ΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΏΠΎΠ½Π΅ Bash 4.1. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π·Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΡΠ»Π΅Π½ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ Π½Π° MacOS, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΏΠΎ-Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° Bash.
Π’ΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡΠ° ~/.bashrc
:
source ~/bash_completion.sh
Π‘Π»Π΅Π΄ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°ΡΠ°, complete-alias ΡΠ΅ Π±ΡΠ΄Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½.
ΠΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ Π·Π° ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ kubectl
Π’Π΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈ Π·Π°Π²ΡΡΡΠ΅Π½ΠΈΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΡΡΠ½ΠΊΡΠΈΡ Π·Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° _complete_alias
. Π’Π°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠ° ΠΈ Π²ΡΡΡΠ° ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ Π·Π° Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π·Π° ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ.
ΠΠ° Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΡΠΌ Bash _complete_alias
ΠΊΠ°ΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π·Π° Π΄ΠΎΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ.
ΠΠ°ΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΊΠ° Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠ° k, ΠΊΠΎΠΉΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° kubectl. Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Ρ _complete_alias
ΠΠ°ΡΠΎ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Π·Π° ΡΠΎΠ·ΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°:
$ complete -F _complete_alias k
Π Π΅Π·ΡΠ»ΡΠ°ΡΡΡ ΠΎΡ ΡΠΎΠ²Π° Π΅, ΡΠ΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΊΠΎΠ³Π°ΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°ΡΠ΅ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ k, ΡΡΠ½ΠΊΡΠΈΡΡΠ° ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π° _complete_alias
, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠ° ΠΈ Π²ΡΡΡΠ° ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ Π·Π° Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° kubectl
.
ΠΠ°ΡΠΎ Π²ΡΠΎΡΠΈ ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΊΠ° Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠ° kg
, ΠΊΠΎΠ΅ΡΠΎ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π²Π° kubectl get
:
$ complete -F _complete_alias kg
Π’ΠΎΡΠ½ΠΎ ΠΊΠ°ΠΊΡΠΎ Π² ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°ΡΠ΅ kg, ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ ΡΡΡΠΈΡΠ΅ ΡΡΠ²Π΅ΡΠΈ Π·Π° Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅, ΠΊΠΎΠΈΡΠΎ Π±ΠΈΡ
ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π·Π° kubectl get
.
ΠΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄, ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΡΠ»Π΅Π½ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ Π²ΡΠ² Π²Π°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°.
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, Π·Π° Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ Π·Π° Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠΈ Π½Π° kubectl, ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ Π³ΠΎΡΠ½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΡΡΡ
. Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΏΡΠ°Π²ΠΈ ΡΠΎΡΠ½ΠΎ ΡΠΎΠ²Π°, ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΠ΅ ΡΡΠ΅ Π·Π°Π΄Π°Π»ΠΈ kubectl-aliases Π½Π° ~/.kubectl-aliases
:
for _a in $(sed '/^alias /!d;s/^alias //;s/=.*$//' ~/.kubectl_aliases);
do
complete -F _complete_alias "$_a"
done
Π’Π°Π·ΠΈ ΡΠ°ΡΡ ΠΎΡ ΠΊΠΎΠ΄Π° ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½Π° Π²ΡΠ² Π²Π°ΡΠΈΡ ~/.bashrc
, ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°ΡΠ° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎΡΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅ ΡΠ΅ ΡΡΠ°Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π·Π° Π²ΡΠΈΡΠΊΠΈΡΠ΅ 800 ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΠ° Π½Π° kubectl.
6. Π Π°Π·ΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° kubectl Ρ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ
ΠΠ°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ
ΠΠΊΠΎ ΡΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°ΡΠΈ Ρ
Π ΡΠ°Π·ΠΈ Π³Π»Π°Π²Π° ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ, ΠΊΡΠ΄Π΅ Π΄Π° Π³ΠΈ Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΈ ΠΊΠ°ΠΊ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ.
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΠΎΠ±Π°Π²ΠΊΠΈ
ΠΡΠΈΡΡΠ°Π²ΠΊΠΈΡΠ΅ Kubectl ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π°Ρ ΠΊΠ°ΡΠΎ ΠΏΡΠΎΡΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Ρ ΠΈΠΌΠ΅ ΠΊΠ°ΡΠΎ kubectl-x
. ΠΡΠ΅ΡΠΈΠΊΡ kubectl-
ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°, ΠΏΠΎΡΠ»Π΅Π΄Π²Π°Π½ΠΎ ΠΎΡ Π½ΠΎΠ²Π° ΠΏΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄Π° kubectl, ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ ΠΏΡΠΈΡΡΠ°Π²ΠΊΠ°ΡΠ°.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΡΡΠ°Π²ΠΊΠ°ΡΠ° hello ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π° ΠΊΠ°ΡΠΎ ΡΠ°ΠΉΠ», Π½Π°ΡΠ΅ΡΠ΅Π½ kubectl-hello
.
ΠΠ° Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΏΠ»ΡΠ³ΠΈΠ½Π°, ΡΡΡΠ±Π²Π° Π΄Π° ΠΊΠΎΠΏΠΈΡΠ°ΡΠ΅ ΡΠ°ΠΉΠ»Π° kubectl-x
ΠΊΡΠΌ Π²ΡΡΠΊΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π²ΡΠ² Π²Π°ΡΠΈΡ PATH ΠΈ Ρ Π½Π°ΠΏΡΠ°Π²Π΅ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Ρ chmod +x
. ΠΠ΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ ΠΏΡΠΈΡΡΠ°Π²ΠΊΠ°ΡΠ° Ρ kubectl x
.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π°, Π·Π° Π΄Π° ΠΈΠ·Π±ΡΠΎΠΈΡΠ΅ Π²ΡΠΈΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠ° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ Π½Π° Π²Π°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°:
$ kubectl plugin list
Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, Π°ΠΊΠΎ ΠΈΠΌΠ°ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ Ρ Π΅Π΄Π½ΠΎ ΠΈ ΡΡΡΠΎ ΠΈΠΌΠ΅ ΠΈΠ»ΠΈ Π°ΠΊΠΎ ΠΈΠΌΠ° ΡΠ°ΠΉΠ» Ρ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ, ΠΊΠΎΠΉΡΠΎ Π½Π΅ Π΅ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ.
ΠΠ°ΠΌΠΈΡΠ°Π½Π΅ ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΠΎΠ±Π°Π²ΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Krew
ΠΡΠΈΡΡΠ°Π²ΠΊΠΈΡΠ΅ Kubectl ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΠΏΠΎΠ΄Π΅Π»ΡΡ ΠΈΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΊΠ°ΡΠΎ ΡΠΎΡΡΡΠ΅ΡΠ½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ. ΠΠΎ ΠΊΡΠ΄Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ Π΄ΡΡΠ³ΠΈ ΡΠ° ΡΠΏΠΎΠ΄Π΅Π»ΠΈΠ»ΠΈ?
Krew Π΅ ΡΠΏΠΈΡΡΠΊ Ρ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ Π·Π° kubectl, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΡΠ΅ ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Krew ΡΡΡΠΎ Π΅ ΠΏΠ»ΡΠ³ΠΈΠ½ Π·Π° kubectl.
Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Krew ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ°ΡΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠ΅ΠΊΠΈ Π΄ΡΡΠ³ ΠΏΠ»ΡΠ³ΠΈΠ½ kubectl. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π½Π°
ΠΠ°ΠΉ-Π²Π°ΠΆΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π½Π° Krew ΡΠ°:
# ΠΠΎΠΈΡΠΊ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²
$ kubectl krew search [<query>]
# ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π΅
$ kubectl krew info <plugin>
# Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ»Π°Π³ΠΈΠ½
$ kubectl krew install <plugin>
# ΠΠ±Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ
$ kubectl krew upgrade
# ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π· Krew
$ kubectl krew list
# ΠΠ΅ΠΈΠ½ΡΡΠ°Π»Π»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½
$ kubectl krew remove <plugin>
ΠΠΎΠ»Ρ, ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π΄ΠΎΠ±Π°Π²ΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Krew Π½Π΅ ΠΏΡΠ΅ΡΠΈ Π½Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π΄ΠΎΠ±Π°Π²ΠΊΠΈ ΡΡΠ΅Π· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄, ΠΎΠΏΠΈΡΠ°Π½ ΠΏΠΎ-Π³ΠΎΡΠ΅.
ΠΠΎΠ»Ρ, ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° kubectl krew list
ΠΏΠΎΠΊΠ°Π·Π²Π° ΡΠ°ΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Krew, Π΄ΠΎΠΊΠ°ΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° kubectl plugin list
ΠΈΠ·Π±ΡΠΎΡΠ²Π° Π²ΡΠΈΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ, ΡΠΎΠ΅ΡΡ ΡΠ΅Π·ΠΈ, ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Krew, ΠΈ ΡΠ΅Π·ΠΈ, ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ ΠΏΠΎ Π΄ΡΡΠ³ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ.
ΠΠ°ΠΌΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ Π΄ΡΡΠ³Π°Π΄Π΅
Krew Π΅ ΠΌΠ»Π°Π΄ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠΎΠΉΡΠΎ Π΅ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ°
ΠΡΠ΅ΠΏΠΎΡΡΡΠ²Π°ΠΌ Π²ΠΈ Π΄Π° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΡΠ΅ ΡΠ΅ΠΊΡΠΈΡΡΠ° GitHub
ΠΠΈΡΠ°Π½Π΅ Π½Π° Π²Π°ΡΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ
ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΌkubectl-x
ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅, ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΎ ΠΏΠΎ-Π³ΠΎΡΠ΅.
Π€Π°ΠΉΠ»ΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ bash ΡΠΊΡΠΈΠΏΡ, ΡΠΊΡΠΈΠΏΡ Π½Π° python ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΎ GO ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ - Π½ΡΠΌΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΎΡΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π΅ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°.
ΠΠ΅ΠΊΠ° ΡΠ΅Π³Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅Π½ ΠΏΠ»ΡΠ³ΠΈΠ½. Π ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡ ΡΠ°Π·Π΄Π΅Π» ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ
ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° kubectl, Π·Π° Π΄Π° ΠΈΠ·Π±ΡΠΎΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅ Π·Π° Π²ΡΠ΅ΠΊΠΈ pod. ΠΠ΅ΡΠ½ΠΎ Π΅ Π΄Π° ΠΏΡΠ΅Π²ΡΡΠ½Π΅ΡΠ΅ ΡΠ°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π² ΠΏΠ»ΡΠ³ΠΈΠ½, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°ΡΠ΅ Ρ Π½Π°ΠΏΡ. kubectl img
.
Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ°ΠΉΠ» kubectl-img
ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅:
#!/bin/bash
kubectl get pods -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image'
Π‘Π΅Π³Π° Π½Π°ΠΏΡΠ°Π²Π΅ΡΠ΅ ΡΠ°ΠΉΠ»Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ Ρ chmod +x kubectl-img
ΠΈ Π³ΠΎ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ΅ΡΠ΅ Π²ΡΠ² Π²ΡΡΠΊΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ Π²ΡΠ² Π²Π°ΡΠΈΡ PATH. ΠΠ΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΡΠΈΡΡΠ°Π²ΠΊΠ°ΡΠ° kubectl img
.
ΠΠ°ΠΊΡΠΎ ΡΠΏΠΎΠΌΠ΅Π½Π°Ρ
ΠΌΠ΅, Π΄ΠΎΠ±Π°Π²ΠΊΠΈΡΠ΅ kubectl ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° Π²ΡΠ΅ΠΊΠΈ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ ΠΈΠ»ΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅. ΠΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ shell ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²ΠΎΡΠΎ Π΅ Π΄Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»Π΅ΡΠ½ΠΎ Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΡΠ΅ kubectl ΠΎΡ ΠΏΠ»ΡΠ³ΠΈΠ½Π°. ΠΠΎΠΆΠ΅ΡΠ΅ ΠΎΠ±Π°ΡΠ΅ Π΄Π° ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΠΎ-ΡΠ»ΠΎΠΆΠ½ΠΈ ΠΏΠ»ΡΠ³ΠΈΠ½ΠΈ Π² ΡΠ΅Π°Π»Π½ΠΈ Π΅Π·ΠΈΡΠΈ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅
ΠΠ°ΠΊ Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»ΡΡΠ΅ ΡΠ²ΠΎΠΈΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΊΠΈ
ΠΠΊΠΎ ΡΠΌΡΡΠ°ΡΠ΅, ΡΠ΅ Π²Π°ΡΠΈΡΠ΅ ΠΏΡΠΈΡΡΠ°Π²ΠΊΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ Π·Π° Π΄ΡΡΠ³ΠΈ, Π½Π΅ ΡΠ΅ ΠΊΠΎΠ»Π΅Π±Π°ΠΉΡΠ΅ Π΄Π° Π³ΠΈ ΡΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ Π² GitHub. ΠΠ΅ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΠΉΡΠ΅ Π΄Π° Π³ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΠΊΡΠΌ ΡΠ΅ΠΌΠ°ΡΠ°
ΠΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ Π΄Π° ΠΏΠΎΠΈΡΠΊΠ°ΡΠ΅ Π²Π°ΡΠΈΡΡ ΠΏΠ»ΡΠ³ΠΈΠ½ Π΄Π° Π±ΡΠ΄Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΊΡΠΌ
ΠΠ°Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°
ΠΠΎΠ½Π°ΡΡΠΎΡΡΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΊΠΈΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π΄ΠΎΠ²ΡΡΡΠ²Π°Π½Π΅. Π’ΠΎΠ΅ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° Π²ΡΠ²Π΅Π΄Π΅ΡΠ΅ ΠΏΡΠ»Π½ΠΎΡΠΎ ΠΈΠΌΠ΅ Π½Π° ΠΏΠ»ΡΠ³ΠΈΠ½Π° ΠΈ ΠΏΡΠ»Π½ΠΈΡΠ΅ ΠΈΠΌΠ΅Π½Π° Π½Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅.
Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ kubectl Π½Π° GitHub Π·Π° ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠΌΠ°
Π£ΡΠΏΠ΅Ρ !!!
ΠΠ°ΠΊΠ²ΠΎ ΠΎΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ ΠΏΠΎ ΡΠ΅ΠΌΠ°ΡΠ°:
Π’ΡΠΈ Π½ΠΈΠ²Π° Π½Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΌΠ°ΡΠ°Π±ΠΈΡΠ°Π½Π΅ Π² Kubernetes ΠΈ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ .Kubernetes Π² Π΄ΡΡ Π° Π½Π° ΠΏΠΈΡΠ°ΡΡΡΠ²ΠΎΡΠΎ Ρ ΡΠ°Π±Π»ΠΎΠ½ Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ .ΠΠ°ΡΠΈΡΡ ΠΊΠ°Π½Π°Π» ΠΠΊΠΎΠ»ΠΎ Kubernetes Π² Telegram .
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com