ืืฉ ืืจืื ืกืคืจืืช ืขืืื ืืืื ืืจื ื, ืืื ืืคืขืืื ืืขืฆื ืืคืฉืืื ืืืืชืจ ืืื ืืืฉืืื ืืืืชืจ. ืงึฐืืึผืฆึธื
ืืคืงืืื ืืคืฉืืื ืืืืชืจ ืืขืืืื ืขื Kubernetes
ืืืืชืืืื, ืืืื ืืคืขืืื ืืคืฉืืื ืืืฉืืืืฉืืช ืืืืชืจ ืืขืืืื ืขื Kubernetes. ืืคืงืืื ืืืื ืืืคืฉืจืช ืืฉืืืช ืคืงืืื kubectl
ืืืขืืคืช bash:
echo "source <(kubectl completion bash)" >> ~/.bashrc
ืืฉืืื ืืืืืืืืช kubectl
ืืืืชื ืืงืืืฅ .bashrc ืืืืคืขื ืืืืืืืืช ืืื ืคืขื ืฉืืืขืืคืช ืืืคืขืืช. ืื ืืืืฅ ืืงืืืช ืคืงืืืืช ืืคืจืืืจืื ืืจืืืื ืืืื all-namespaces
. ืงืจื ืขืื ื
ืืืืืืช ืืจืืจืช ืืืื ืฉื ืืืืจืื ื-CPU ืืืจืื ืฉืืืช
ืื ืืืคืืืงืฆืื ืืชืืื ืืฆืืจื ืื ื ืืื ื, ืืืฉื, ืืื ืคืืชืืช ืืืืืจ ืืืฉ ืืืกื ืื ืชืื ืื ืืื ืฉื ืืื ืื ืืขืืื ืื ืกืืืจืช ืืืชื, ืื ืืืฉืืื ืืฉ ืืืืคืช ืืืืจืื. ืืื ืืืคืืืงืฆืื ืืื ืืืืืช ืืืืจืื ืฉืืืืืจื ืืืืื ืืคืจืืกื, ืืืืจ ืขืืื ืืืืืื ืืืฉื ืืฆืืืช.
ืืื ืืื ืืข ืืืช, Kubernetes ืืืคืฉืจ ืื ืืืืืืจ ืืืืืืช ืืจืืจืช ืืืื ืขื ืืกืืก ืืจืื ืฉื. ืื ืืชืืืื ืืงืืืฅ yaml ืขืืืจ ืืจืื ืฉืืืช ืกืคืฆืืคื. ืื ื ืืืืื ืืงืืืฅ ืืื:
apiVersion: v1
kind: LimitRange
metadata:
name: mem-limit-range
spec:
limits:
- default:
memory: 512Mi
defaultRequest:
memory: 256Mi
type: Container
ืฆืืจ yaml ืืื ืืืื ืขื ืื ืืจืื ืฉืืืช. ืืืืืื, ืืืจืื ืืฉืืืช limit-example
. ืืขืช ืืื ืงืื ืืืื ืจ ืฉื ืคืจืก ืืืจืื ืืฉืืืช ืืื ืชืืื ืืืืื ืฉื 512Mi, ืืื ืื ืื ื ืงืืขื ืืืืื ืืืฉืืช ื ืืกืคืช ืขืืืจ ืงืื ืืืื ืจ ืื.
ืืืกืืฃ ืืฉืคื ืืืจืกืืืช ืืฉื ืืช ืืืชืจ ืฉื Kubernetes
Kubelet ืืืจืืจืช ืืืื ืืชืืื ืืืกืืฃ ืืฉืคื ืืืฉืจ var/lib/docer ืชืืคืก 90% ืืฉืื ืืืืกืง ืืืืื. ืขื ืืืช, ืื ื ืืืจ, ืขื ื-Kubernetes 1.7 ืื ืืืืชื ืืืืืช ืืจืืจืช ืืืื ืขื ืืกืคืจ ืืืื ืืืื ืืฉืืืืฉ, ืืชืืืืื ืืช ืืกืคืจ ืืงืืฆืื ืืืขืจืืช ืืงืืฆืื.
ืคืืื ืฆืืืื ืืืืื ืฉืื var/lib/docer ืขืฉืื ืืืฉืชืืฉ ืจืง ื-50% ืืฉืื ืืืืกืง, ืื ืขืืืืื ืืืืืืจ ืืืื ืืืื, ืื ืฉืืืจืื ืืืขืืืช ืืขืืืืื.
ืืืจืกืืืช ืืฉื ืืช ืืืชืจ ืฉื kubelet ื-1.4 ืขื 1.6 ืชืฆืืจื ืืืืกืืฃ ืืช ืืืื ืืื:
--eviction-hard
=memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%
ืืืืจืกืืืช 1.7 ืืืืื ืืื ืื ืืืืืจ ืืืจืืจืช ืืืื. ืขื ืืืช, ืืจืกืืืช ืงืืืืืช ืืื ื ืขืืงืืืช ืืืจ ืืืืืช ืืืื ืื.
Minikube... Kubernetes ืืงืืืืื ืงืื ืื ืื ืืืงืื
Minikube ืืื ืืืจื ืืงืื ืืืืชืจ ืืืคืขืื ืืฉืืื Kubernetes ืืงืืื. ืืื ืืืคืขื ืืคืงืืื ืคืฉืืื:
minikube start
ืืคืขืืช ืคืงืืื ืื ืืืืื ืืืฉืืื Kubernetes ืืืืชื ืืคืืขื ืืืืฉื ืฉืื.
ืืืืืื ืืื ืืื ืืื ืืช ืืช ืืืคืืืงืฆืื ืืืืคืขืื ืืืชื ืืืืคื ืืงืืื ืขื ืืืฉืืื ืืื. ืืื ืื ืื ืืืจืื ืกืคืฆืืคืืช, ืชืืื ืช ื-Docker ืชืืื ื ืขื ืืืืฉื ืฉืื ืืื ืขื ืืืฉืืื.
ืืื ืืืืฅ ืืช Docker ืืืืืฃ ืืช ืืชืืื ื ืืืฉืืื Kubernetes ืืืงืืื, ืืืื ื Docker ืืงืืืช ืืช ืืคืงืืื ืืืื:
eval $(minikube docker-env)
ืืขืช ืื ื ืืืืืื ืืื ืืช ืืืฉืืืื ืขื ืืฉืืื Kubernetes ืืงืืื.
ืื ืชืืชื ื-kubectl ืืืฉื ืืืืื
ืื ื ืจืื ืืืื ืืืืื, ืืื ืื ืฆืืืชืื ืืจืืืื ืืฉืชืืฉืื ืืืืชื ืืฉืืื ืขืืืจ ืืืืฉืืืื ืฉืืื (ืืฉื ืื ื ืืฆืจื Kubernetes), ืืชื ืื ืฆืจืื ืืชืช ืืืืื kubectl
. ืขืืืฃ ืืืคืจืื ืืื ืืคืงืืืืช, ืืืงืฆืืช ืืื ืืืช ืืื ืืจืื ืฉืืืช ืืฉืื ืืืืืืื ืืช ืืืืฉื ืืืืฆืขืืช ืืืื ืืืช RBAC.
ืืชื ืืืื ืืืชืืืื ืขื ืืื ืืงืฆืืช ืืืืืืช ืืืฉื, ืงืจืืื, ืืฆืืจื, ืืืืงื ืืคืขืืืืช ืืืจืืช ืขืืืจ ืื ืคืื. ืืื ืืขืืงืจ ืืื ืืืืืื ืืช ืืืืฉื ืืกืืืืช, ืืืืคืฉืจ ืืืช ืจืง ืืื ืืืื. ืื ื ืืืื ืืื ืืื ืฉืืืืืื ืื ืื ืืช ืืืฉืืื ืืืื ืืื ืฉืืืืืื ืคืฉืื ืืคืจืืก ืืืื.
ื ืื ืชืงืฆืืื ืคืื
ืืืฆื ืืืืืื ืฉืืื ืืื ืืฉืืชื ืืืคืืืงืฆืื ืืืฉืืื Kubernetes? PodDisruptionBudget ืืฉืื PodDisruptionBudget.
ืืฉืืืืืช ืืชืขืืื ืื ืืขืช ืืขืช ืืฆืืชืื ืืชืจืืงื ืื. ืฉืื ืืืจ ืื ืขืืื ืืืืช, ืื ืืืฆืืืืช. ืื ืคืจืืกื ืขื ืืืชืจ ืืืืคืข ืืื ืฆืจืืื ืืืืื PDB (PodDisruptionBudget). ืืื ื ืืฆืจ ืืงืืืฅ yaml ืคืฉืื ืฉืืืื ืขื ืืืฉืืื. ืืืืจ ืืืืกืื ืฉื PDB ืืกืืื ื ืงืืข ืขื ืืื ืืืจืจื ืืชืืืืืช.
ืืขืจื: ืชืงืฆืื PDB ื ืืงื ืืืฉืืื ืจืง ืืืฉืจ ืืคืจืช ืืชืงืฆืื ืืื ืืคืืื (
ืืืืื ื-PDB:
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
name: app-a-pdb
spec:
minAvailable: 2
selector:
matchLabels:
app: app-a
ืฉื ื ืืคืจืืืจืื ืืขืืงืจืืื ืื matchLabels
ะธ minAvailable
. ืืคืจืืืจ ืืจืืฉืื ืืฆืืื ืืืืื ืืืฉืืืื ืื ืืชืงืฆืื. ืืืืืื, ืื ืืฉ ืื ืคืจืืกืืช ืขื ืชืืืืืช app: app-a
ะธ app: app-b
, ืื PDB ืื ืืืื ืจืง ืขื ืืจืืฉืื.
ืคืจืืืจ minAvailable
ื ืืงื ืืืฉืืื ืืขืช โโืจืืงืื (ื ืืงืื) ืืฆืืืช. ืืืืืื, ืืืืืื ืฉืื ื, ืืืืื ืืจืืงืื, ืื ืืืงืจืื ืืคืื ืื app: app-a
, ืืืขื ืฉื ืืื.
ืื ืืืคืฉืจ ืื ืืฉืืื ืืืื ืืืคืขืื ืฉื ืืืืฉืื ืืืืจืื ืืคืขืื ืืื ืืื ื ืชืื.
ื ืืืืจ ืชืงืื ืืช ืืืคืืืงืฆืื
ื ืืืืจ ืืื ืืคืฉืจื ืืฉืชื ืืจืืื: ืืืืฆืขืืช ืืืื ื Readiness ืื Liveness.
ืืืืืงื ืืจืืฉืื ื (ืืืื ืืช) ืงืืืขืช ืืช ืืืื ืืช ืืืืืื ืืงืื ืชืขืืืจื.
ืืฉื ื (ืืืืช) ืืจืื ืื โโืืืืื ืืจืื ืื ืฉืืฉ ืืืคืขืื ืืืชื ืืืืฉ.
ืืชืฆืืจืืช ืืจืืืื ืืืืช ืคืฉืื ืืชืืืกืคืืช ื-yaml ืืฆืืจื ืคืจืืกื. ืฉื ืชืืื ืืฆืืื ืคืกืงื ืืื, ืืื ื ืขืืืื ืืืกืคืจ ื ืืกืืืื ืืืืจืื. ืจืื ืคืจืืื ื ืืกืคืื ืขืืืื
ืชืืื ื ืืฆืืื ืืื ืืงืื
ืชืืืืืช ืื ืืื ืืืืฉืืื ืืืกืืกืืื ื- Kubernetes. ืื ืืืคืฉืจืื ืืืืืืืงืืื ืืชืงืฉืจ ืืืืคืฉืืืช ืื ืขื ืื, ืืื ืื ืืืฆืืจ ืฉืืืืชืืช ืืืืืกืกืืช ืขื ืชืืืืืช. ื-Kubernetes, ืืชื ืืืื ืืคืืื ืืืืช ืืืงืื ืืืฆืคืืช ืืืืจืืขืื ืขืืืจ ืชืืื ืกืคืฆืืคืืื.
ืืชื ืืืื ืืขืฉืืช ืืืขื ืืื ืขื ืชืืื, ืืื ืืืืื ืืืื ืชืืื ืืฆืืจืช ืกืืืืืช ืืจืืืืช ืืืคืขืืช ืชืืื ืืืช ืขื ืืืชื ืืฉืืื.
ื ื ืื ืฉืืชื ืืฉืชืืฉ ืืืืชื ืืฉืืื ืขืืืจ dev
ะธ qa
. ืื ืืืืจ ืฉืืชื ืืืื ืืงืื ืืืฉืื app-a
, ืื ืืื ืืช ืขืืืื ืืฉืชื ืืกืืืืืช qa
ะธ dev
. ืืืงืจื ืื, ื ืืื ืืืฉืช ืื ืคืจื ืืืืคืข ืืืืฉืื ืืกืืืื ืกืคืฆืืคืืช ืขื ืืื ืฆืืื ืืคืจืืืจ ืืืชืืื environment
. ืืืืืื, app: app-a
ะธ environment: dev
ืขืืืจ ืกืืืื ืืืช, ื app: app-a
ะธ environment: qa
ืขืืืจ ืืฉื ื.
ืื ืืืคืฉืจ ืื ืืืฉืช ืืฉื ื ืืืืคืขืื ืฉื ืืืืฉืื, ืืืฉื, ืืื ืืืฆืข ืืืืงืืช ืื-ืืื ืืช.
ืืขืฉืืช ืกืืจ ืืืืจืื
Kubernetes ืืื ืืขืจืืช ืืืงื ืืืื, ืืื ืื ืืขืจืืช ืืืืื ืืกืืคื ืฉื ืืืจ ืืืกืชืื ืขื ืืืชืจ ืืื ืชืืืืืื. ื-Kubelet ืืจืืฅ ืืช ืื ืืชืืืืืื ืืืืืืงืืช ืฉืืชื ืืฆืืื, ืืื ืื ืืช ืฉืื.
ืืืืื, ืฉืืจืืช ืืชืื ืืื ืื ืืื ืืช ืืืขืจืืช, ื-Kubernetes ืืชืืื ื ืืืจืืื ืืช ืืืืื ืืืืกืื. ืืื ืื ืืืงืื ืฉืืจืืช ืืื ืืืคืืขื ืืืืืื, ืืงืืืื ืืชืืื ืืืืื ืง.
ืื ืืกืืื ืืืฉืื ืืชื ืืืืง ืคืจืืกื (ืืืื, ืชืืื ื, ืื ืฉืื ืืืื), ืจืง ืืงืคื ืืืฆืข ื ืืงืื ืืื.
ืืืืจื ืืช Go
ืืช ืืขืฆื ืืขืืงืจืืช ืฉืืจื ื ืืกืืฃ. ืืื ืืช ืฉืคืช ืืชืื ืืช Go.
Kubernetes ืคืืชืื ื-Go, ืื ืืืจืืืืช ื ืืชืืืช ื-Go, ืืื ืกืคืจืืืช ืืืงืืืืช ืฉื client-go ื ืชืืืช ืจืฉืืืช.
ืื ืืืื ืืฉืืฉ ืืืืจืื ืฉืื ืื ืืืขื ืืื ืื. ืืืฉื, ืืืจืืื ืืช ืืขืจืืช Kubernetes ืืคื ืืขืืื. ืื ืืชื ืืืื ืืืฉืชืืฉ ืืชืืื ืืช ืืฉืื ืืื ืืืกืืฃ ื ืชืื ืื, ืืคืจืืก ืืืฉืืืื ืื ืคืฉืื ืื ืงืืช ืืืืืืช.
ืืืืื ืฉืคืช ืืชืื ืืช Go ืืฉืืืื ื-client-go ืืื ืืืื ืืขืฆื ืืืฉืืื ืืืืชืจ ืฉืชืืื ืืชืช ืืืฉืชืืฉื Kubernetes ืืืฉืื.
ืื ืขืื ืืงืจืื:
ืฉืืืฉ ืจืืืช ืฉื ืงื ื ืืืื ืืืืืืื ื-Kubernetes ืืืืฆื ืืืฉืชืืฉ ืืื ืืืขืืืืช .ืฆืืชื ืขืืืื ืฉื Kubernetes: ืจืืื ืงืื ืื ืื ืืขื ืืืืืื ?25 ืืืื ืฉืืืืฉืืื ืืคืจืืกื ืื ืืืื ืฉื Kubernetes .
ืืงืืจ: www.habr.com