ืขืก ืืื ืึท ืคึผืืึทืฅ ืคืื ืจืขืคึฟืขืจืขื ืฅ ืืืืขืจืึทืืืจ ืืืืฃ ืื ืืื ืืขืจื ืขื, ืึธืืขืจ ืืื ืื ืกืืืคึผืืึทืกื ืขืฆื ืืื ืื ืืขืจืกื ืืืขืจืืคืื. ืืึทื ืฉืึทืคึฟื
ืื ืกืืืคึผืืึทืกื ืืึทืคึฟืขื ืฆื ืึทืจืืขืื ืืื Kubernetes
ืฆื ืึธื ืืืืื ืืื, ืืึธืืขืจ ืื ืกืืืคึผืืึทืกื ืืื ืืขืจืกื ื ืืฆืืง ืงืึทืืฃ ืืื ืืจืืขืื ืืื Kubernetes. ืื ืคืืืืขื ืืข ืืึทืคึฟืขื ืื ืืืืึทืื ืืึทืคึฟืขืื ืงืึทืืคึผืืืฉืึทื kubectl
ืืื ืฉืึธื:
echo "source <(kubectl completion bash)" >> ~/.bashrc
Autofill kubectl
ืืืขื ืืืื ืืขืฉืจืืื ืฆื ืื .ืืึทืฉืจืง ืืขืงืข ืืื ืืืขื ืืืื ืืืืืึธืืึทืืืฉ ืึทืงืืืืืืืืื ืืขืืขืจ ืืึธื ืืืขื ืื ืฉืึธื ืืื ืกืืึทืจืืขื. ืืขื ืกืคึผืืื ืึทืจืืืฃ ืืืืคึผืื ื ืืึทื ื ืงืึทืืึทื ืื ืืื ืคึผืึทืจืึทืืขืืขืจืก ืึทืืึท ืืื all-namespaces
. ืืืืขื ืขื ืืขืจ ืืื
ืคืขืืืงืืึทื ืืึผืจืื ืืื ืงืคึผื ืืืืึทืฅ ืืื ืึท ื ืึทืืขืกืคึผืึทืกืข
ืืืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืคืึทืืฉ ืืขืฉืจืืื, ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืขืก ืขืคึฟื ื ืึท ื ืืึทืข ืงืฉืจ ืฆื ืื ืืึทืืึทืืึทืกืข ืืขืืขืจ ืจืืข ืึธืืขืจ ืงืืื ืืึธื ืงืืึธืืืื ืขืก, ืืขืืึธืื ืืขืจ ืงื ืืื ืืื ืึท ืืึผืจืื ืจืื ืขื. ืืื ืืืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืื ื ืืฉื ืึท ืืืงืึธืจื ืฉืืขืืจ ืฉืืขืื ืืขืฉืึทืก ืืืคึผืืืืืึทื ื, ืืึธืก ืงืขื ืคืืจื ืฆื ืึท ื ืึธืืข ืืืจืืคืึทื.
ืฆื ืคืึทืจืืืึทืื ืืขื, Kubernetes ืึทืืึทืื ืืืจ ืฆื ืฉืืขืื ืคืขืืืงืืึทื ืจืืกืืจืืงืฉืึทื ื ืืืืฃ ืึท ืคึผืขืจ-ื ืึทืืขืกืคึผืึทืกืข ืืงืขืจ. ืืื ืืขื ืขื ืืขืฉืจืืื ืืื ืื ืืึทืื ืืขืงืข ืคึฟืึทืจ ืึท ืกืคึผืขืฆืืคืืฉ ื ืึธืืขื. ืืึธ ืืื ืึท ืืืึทืฉืคึผืื ืคืื ืึทืืึท ืึท ืืขืงืข:
apiVersion: v1
kind: LimitRange
metadata:
name: mem-limit-range
spec:
limits:
- default:
memory: 512Mi
defaultRequest:
memory: 256Mi
type: Container
ืฉืึทืคึฟื ืึทืืึท ืืึทืื ืืื ืฆืืืืืื ืฆื ืงืืื ื ืึธืืขื ืคึผืืึทืฅ. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืฆื ืื ื ืึธืืขื ืคึผืืึทืฅ limit-example
. ืืืฆื ืืขืืขืจ ืงืึทื ืืืื ืขืจ ืืืคึผืืืื ืืื ืืขื ื ืึทืืขืกืคึผืึทืกืข ืืืขื ืืึธืื ืึท ืฉืืขืืจ ืคืื 512ืื, ืกืืึทืื ืื ืื ืืขืจ ืืืื ืืืืื ืืื ืึทืืืฉื ืึทืื ืืึทืฉืืืื ืคึฟืึทืจ ืืขื ืงืึทื ืืืื ืขืจ.
ืืืกื ืืึทืืืื ื ืืื ืขืืืขืจืข ืืืขืจืกืืขืก ืคืื Kubernetes
ืงืืืขืืขื ืืืจื ืคืขืืืงืืึทื ืกืืึทืจืฅ ืืืกื ืืึทืืืื ื ืืืขื var/lib/docker ืึทืงืืึทืคึผืืื 90% ืคืื ืคืึทืจืึทื ืขื ืืืกืง ืคึผืืึทืฅ. ืืึธืก ืืื ืืจืืืก, ืึธืืขืจ ืืื Kubernetes 1.7 ืขืก ืืื ืืขืืืขื ืงืืื ืคืขืืืงืืึทื ืืืืื ืืืืฃ ืื ื ืืืขืจ ืคืื ืื ืึธืืขืก ืืขื ืืฆื, ืืืึธืก ืฉืืืืขื ืฆื ืื ื ืืืขืจ ืคืื ืืขืงืขืก ืืื ืื ืืขืงืข ืกืืกืืขื.
ืคึผืึทืืขื ืืฉืึทืื ืืืื ืงืึทื ืืืื ืขืจ var/lib/docker ืงืขื ืืืืื ื ืืฆื 50% ืคืื ืื ืืืกืง ืคึผืืึทืฅ, ืึธืืขืจ ืงืขื ืืืืคื ืืืืก ืคืื ืื ืึธืืขืก, ืืืึธืก ืืืขื ืคืึทืจืฉืึทืคื ืคึผืจืึธืืืขืืก ืคึฟืึทืจ ืืืขืจืก.
ืืื ืขืืืขืจืข ืืืขืจืกืืขืก ืคืื ืงืืืขืืขื ืคืื 1.4 ืฆื 1.6 ืืืจ ืืืขื ืืึธืื ืฆื ืืืืื ืืขื ืคืึธื:
--eviction-hard
=memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%
ืืื 1.7 ืืื ืฉืคึผืขืืขืจ ืืืขืจืกืืขืก ืืขื ืคืึธื ืืื ืืึทืฉืืืื ืืืจื ืคืขืืืงืืึทื. ืึธืืขืจ, ืคืจืืขืจืืืงืข ืืืขืจืกืืขืก ืืึธื ื ืื ืืึธื ืืืึธืจ ืื ืื ืึธืืข ืฉืืขืืจ.
ืืื ืืงืืืข ... ืงืืืื ืึธืืขืจ ืฉืืึทืจืง ืืืืข ืงืืืขืจื ืขืืขืก
Minikube ืืื ืื ืืืืึทืกื ืืืขื ืฆื ืืืืคื ืึท ืืืืข Kubernetes ืงื ืืื. ืขืก ืืื ืืึธื ืืฉื ืืื ืึท ืคึผืฉืื ืืึทืคึฟืขื:
minikube start
ืืืื ืืืจ ืืืืคื ืืขื ืืึทืคึฟืขื, ืึท ืคืึทืงืืืฉ Kubernetes ืงื ืืื ืคืืืกื ืืืง ืืืืฃ ืืืื ืืึทืฉืื.
ืืขืจ ืงืื ืฅ ืืื ืืื ืฆื ืืืืขื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืืืืคื ืขืก ืืึธืืงืึทืื ืืืืฃ ืืขื ืงื ืืื. ืกืืึทืื ืกืคึผืึทืกืืคืืงืื ืืขืืขืจื ื, ืื ืืึธืงืงืขืจ ืืืื ืืืขื ืืืื ืืขืืืื ืืืืฃ ืืืื ืงืึธืืคึผืืืืขืจ ืืื ื ืืฉื ืืืืฃ ืืขื ืงื ืืื.
ืฆื ืฆืืืื ืืขื ืืึธืงืขืจ ืฆื ืฉืืืคึผื ืื ืืืื ืฆื ืื ืืืืข Kubernetes ืงื ืืื, ืื ืืึธืงืงืขืจ ืืึทืฉืื ืืื ืืขืืขืื ืื ืคืืืืขื ืืข ืืึทืคึฟืขื:
eval $(minikube docker-env)
ืืืฆื ืืืจ ืงืขื ืขื ืืืืขื ืึทืคึผืืึทืงืืืฉืึทื ื ืืืืฃ ืึท ืืืืข Kubernetes ืงื ืืื.
ืื ืืืืกื ื ืืฉื ืืขืื kubectl ืึทืงืกืขืก ืฆื ืึทืืขืืขื
ืืึธืก ืืืื ื ืงืืึธืจ ืืื ืืขืจ ืืึธื, ืึธืืขืจ ืืืื ืงืืืคื ืืืื ื ืืฆื ืื ืืขืืืข ืงื ืืื ืคึฟืึทืจ ืืืืขืจ ืึทืคึผืืึทืงืืืฉืึทื ื (ืืืึธืก ืืื ืืืึธืก Kubernetes ืืื ืืืฉืืคื ืคึฟืึทืจ), ืืืจ ืืึธื ื ืืฉื ื ืึธืจ ืืขืื ืึทืืขืืขื kubectl
. ืขืก ืืื ืืขืกืขืจ ืฆื ืฆืขืืืืื ืื ืงืึทืืึทื ืื, ืึทืกืืื ืื ื ืืขืืขืจ ืคืื ืืื ืืืื ืืืืืขื ืข ื ืึธืืขื ืืื ืืืืึทืืื ื ืึทืงืกืขืก ื ืืฆื RBAC ืคึผืึทืืึทืกืื.
ืืืจ ืงืขื ืขื ืืึทืงืืืขื ืฆืขืืืฉื ืืืจื ืึทืกืืื ืื ื ืจืขืื ืฆื ืึทืงืกืขืก, ืืืืขื ืขื, ืฉืึทืคึฟื, ืืืกืืขืงื ืืื ืื ืืขืจืข ืึทืคึผืขืจืืืฉืึทื ื ืคึฟืึทืจ ืืขืืขืจ ืคึผืึธื. ืืืขืจ ืื ืืืืคึผื ืืึทื ืืื ืฆื ืืึทืืจืขื ืขืฆื ืึทืงืกืขืก ืฆื ืกืืงืจืืฅ, ืึทืืึทืืื ื ืขืก ืืืืื ืฆื ืึทืืืื ืืกืืจืึทืืึธืจืก. ืืขืจ ืืืขื ืืืจ ืืืขืื ืืืคืขืจืขื ืืฉืืืื ืฆืืืืฉื ืื ืืืืก ืงืขื ืขื ืคืืจื ืืขื ืงื ืืื ืืื ืื ืืืืก ืงืขื ืขื ืคืฉืื ืฆืขืืืืงืืขื ืขืก.
ืคืืจื ืคึผืึธื ืืึทืืืฉืืฅ
ืืื ืฆื ืขื ืฉืืจ ืงืืื ืืึทืื ืืืื ืคึฟืึทืจ ืึท ืึทืคึผืืึทืงืืืฉืึทื ืืื ืึท Kubernetes ืงื ืืื? PodDisruptionBudget ืืื ืืืืืขืจ PodDisruptionBudget.
ืงืืึทืกืืขืจื ืืขื ืขื ืคึผืืจืืึทืืืงืื ืืขืจืืืึทื ืืืงื ืืื ื ืึธืืื ืืขื ืขื ืขืืคึผืืื. ืืึธืจื ืืฉื ืฉืืืื ื ืึธื, ืืึธืก ืืื ืืขืจ ืคืึทืงื. ืืขืืขืจ ืืืคึผืืืืืึทื ื ืืื ืืขืจ ืืื ืืืื ืืืึทืฉืคึผืื ืืึธื ืึทืจืืึทื ื ืขืืขื ืึท PDB (PodDisruptionBudget). ืขืก ืืื ืืืฉืืคื ืืื ืึท ืคึผืฉืื ืืึทืื ืืขืงืข ืืืึธืก ืืื ืืขืืืขื ืื ืฆื ืืขืจ ืงื ืืื. ืื ืงืึทืืืขืจืืืืฉ ืฉืื ืคืื ืึท ืืึทืืื ืืขืจ ืคึผืื ืืื ืืืฉืืืกื ืืืจื ืคืืจืืข ืกืขืืขืงืืึธืจืก.
ืืึทืืขืจืงืื ื: ืื 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
, ืืขืืึธืื ืืขื ืคึผืื ืืืขื ืฆืืืืืื ืืืืื ืฆื ืืขืจ ืขืจืฉืืขืจ.
ืคึผืึทืจืึทืืขืืขืจ minAvailable
ืืขื ืืืขื ืืื ืืฉืืื ืืืขื ืขืืคึผืืืื ื (ืจืืื ืืงืื ื) ืื ื ืึธืืข. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืื ืืื ืืืขืจ ืืืึทืฉืคึผืื, ืืขืฉืึทืก ืขืืคึผืืืื ื, ืึทืืข ืื ืกืืึทื ืกืื ืืขื ืขื ืืืืืงืืื app: app-a
, ืืืฅ ืฆืืืื.
ืืึธืก ืึทืืึทืื ืืืจ ืฆื ืงืึธื ืืจืึธืืืจื ืืื ืคืืืข ืื ืกืืึทื ืกืื ืคืื ืื ืึทืคึผืืึทืงืืืฉืึทื ืืึธื ืืืื ืคืืืกื ืืืง ืืื ืงืืื ืฆืืื.
ืึทืคึผืคึผืืืงืึทืืืึธื ืืขืืื ื ืืึธื ืืืึธืจืื ื
ืึทืืึท ืืึธื ืืืึธืจืื ื ืืื ืืขืืืขื ืืื ืฆืืืื ืืืขืื: ื ืืฆื ืืจืืืืงืืึทื ืึธืืขืจ ืืืืืื ืึทืก ืืขืกืฅ.
ืืขืจ ืขืจืฉืืขืจ ืืึธื ื (ืืจืืื) ืืืืขืจืืึทื ื ืื ืืจืืืืงืืึทื ืคืื ืืขื ืงืึทื ืืืื ืขืจ ืฆื ืืึทืงืืืขื ืคืึทืจืงืขืจ.
ืื ืจืืข (ืืืืืื ืึทืก) ืืืืืื ืฆื ืืขืจ ืงืึทื ืืืื ืขืจ ืืื ืืขืืื ื ืึธืืขืจ ืืึทืจืฃ ืืืื ืจืืกืืึทืจืืื.
ืื ืืึทืืืึทืืืง ืงืึทื ืคืืืืขืจืืืฉืึทื ื ืืขื ืขื ืคืฉืื ืืืกืืฃ ืฆื ืื ืืื ืคึฟืึทืจ ืืืคึผืืืืืึทื ื. ืขืก ืืืจ ืงืขื ืขื ืกืคึผืขืฆืืคืืฆืืจื ืืืืืึทืืฅ, ืคืึทืจืืึทืืื ืฆืืื ืืื ืื ื ืืืขืจ ืคืื ืจืืืจืืึทืื. ืืขื ืืขืจ ืืขืืึทืืืก ืืืขืื ืืื
ืืึทืืก ืืขื ืขื ืืืืขืืื
ืืึทืืขืืก ืืขื ืขื ืืืื ืขืจ ืคืื ืื ืคืื ืืึทืืขื ืืึทื ืงืึทื ืกืขืคึผืก ืืื Kubernetes. ืืื ืืึธืื ืึทืืืืฉืขืงืฅ ืฆื ืคืจืื ืืืขืจืืขืื ืืื ืืขืืขืจ ืื ืืขืจืข, ืืื ืืขืืื ื ืืื ืฆื ืฉืึทืคึฟื ืคึฟืจืืื ืืืืืจื ืืืืฃ ืืึทืืขืืก. ืืื Kubernetes, ืืืจ ืงืขื ืขื ืืคืืื ืืืื ืฆื ืืขื ืงืืืขื ื ืืื ืืขื events ืคึฟืึทืจ ืกืคึผืขืฆืืคืืฉ ืืึทืืก.
ืืืจ ืงืขื ืขื ืืึธื ืึผืืขื ืึทืืฅ ืืื ืืึทืืก, ืึธืืขืจ ืึท ืืื ืืืึทืฉืคึผืื ืืืึธืื ืืืื ืงืจืืืืืื ื ืงืืืคื ืื ืืืืืจืึทื ืืึทื ืฅ ืฆื ืืืืคื ืืืืื ืืืืฃ ืืขืจ ืืขืืืืงืขืจ ืงื ืืื.
ืืื ืก ืืึธืื ืืืจ ื ืืฆื ืื ืืขืืืข ืงื ืืื ืคึฟืึทืจ dev
ะธ qa
. ืืขื ืืืื ืืืจ ืงืขื ืขื ืืึธืื ืึท ืึทืคึผืืึทืงืืืฉืึทื app-a
, ืกืืืืึทืืืืื ืืึทืกืื ืืจืืขืื ืืื ืืืืืข ืื ืืืืืจืึทื ืืึทื ืฅ qa
ะธ dev
. ืืื ืืขื ืคืึทื, ืืืจ ืงืขื ืขื ืกืขืคึผืขืจืึทืืื ืึทืงืกืขืก ืื ืึทืคึผืืึทืงืืืฉืึทื ืืืึทืฉืคึผืื ืืื ืึท ืกืคึผืขืฆืืคืืฉ ืกืืืืืืข ืืืจื ืกืคึผืขืฆืืคืืฆืืจื ืื ืฆืื ืขืืขื ืคึผืึทืจืึทืืขืืขืจ environment
. ืืืฉื, app: app-a
ะธ environment: dev
ืคึฟืึทืจ ืืืื ืกืืืืืืข, ืืื app: app-a
ะธ environment: qa
ืคึฟืึทืจ ืื ืจืืข.
ืืึธืก ืึทืืึทืื ืืืจ ืฆื ืึทืงืกืขืก ืืืืืข ืื ืกืืึทื ืกืื ืคืื ืื ืึทืคึผืืึทืงืืืฉืึทื, ืืืฉื, ืฆื ืืืจืืคืืจื ืืขืกืืื ื ืกืืืืึทืืืืื ืืึทืกืื.
ืืึทืงืืืขื ืึธืจืืึทื ืืืืจื
ืงืืืขืจื ืขืืขืก ืืื ืึท ืืืืขืจ ืฉืืึทืจืง ืกืืกืืขื, ืึธืืขืจ ืงืืื ืกืืกืืขื ืงืขื ืขื ืืืืขื ืืฉืึทืืืึทืื ืืืขืจื ืืึทืื ืึทืจืึธืคึผ ืืื ืฆื ืคืืืข ืคึผืจืึทืกืขืกืึทื. ืื ืงืืืขืืขื ืืืืคื ืึทืืข ืื ืคึผืจืึทืกืขืกืึทื ืืื ืืฉืขืงืก ืืืจ ืกืคึผืขืฆืืคืืฆืืจื, ืืื ืืขืืื ื ืืื ืืืื ืืืืืขื ืข.
ืคืื ืงืืจืก, ืืืื ืึธืจืคืึทื ื ืืื ืกื ืืืขื ื ืืฉื ืคึผืึทืืขืืขื ืื ืกืืกืืขื, ืืื Kubernetes ืืื ืืืืืื ื ืฆื ืืืึธื ืคึฟืื ืืขืจ ืขืจื ืึทืจืืืฃ. ืืืขืจ ืืืื ืึทื ืฉืืึธื ืคืื ืืืื ืืื ืกื ืึท ืืืืืึธื ืืขืจืฉืืึทื ืขื, ืื ืงืืืขืืขื ืืืืื ืฆื ืืขืจืฉืืืงื.
ืืืื ืคึฟืึทืจ ืขืืืขืืข ืกืืื ืืืจ ืืืกืืขืงื ืึท ืืืคึผืืืืืึทื ื (ืงืึธื ืืึทืื ืขืจ, ืืืื, ืืืขืืืขืจ), ื ืึธืจ ืืึทืื ืืืืขืจ ืฆื ืืึธื ืึท ืืึทื ืฅ ืงืืื ืึทืคึผ.
ืืจืขืคื ืืื
ืืืจ ืืึธืื ืืขืจืืืขืืืขื ืื ืืืืคึผื ืขืฆื ืคึฟืึทืจ ืืขืฆื. ืืขืจื ืื Go ืคึผืจืึธืืจืึทืืืื ื ืฉืคึผืจืึทื.
Kubernetes ืืื ืืขืืืขืืึธืคึผืขื ืืื Go, ืึทืืข ืืงืกืืขื ืฉืึทื ื ืืขื ืขื ืืขืฉืจืืื ืืื Go, ืืื ืืขืจ ืงืืืขื ื-ืืืื ืงืืืขื ื ืืืืืืึธืืขืง ืืื ืืืื ืึทืคืืฉืึทืื ืืขืฉืืืฆื.
ืขืก ืงืขื ืขื ืืืื ืืขื ืืฆื ืคึฟืึทืจ ืคืึทืจืฉืืืขื ืข ืืื ืืฉืืงืึทืืืข ืืืื. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืฆื ืืงืกืคึผืึทื ื ืื Kubernetes ืกืืกืืขื ืฆื ืืืื ืืขืฉืืึทืง. ืึทืืื, ืืืจ ืงืขื ืขื ื ืืฆื ืืืื ืืืืืขื ืข ืืืืื ืฆื ืืึทืืืขื ืืึทืื, ืฆืขืืืืงืืขื ืึทืคึผืืึทืงืืืฉืึทื ื ืึธืืขืจ ืคืฉืื ืจืืื ืงืึทื ืืืื ืขืจื.
ืืขืจื ืขื ืื Go ืคึผืจืึธืืจืึทืืืื ื ืฉืคึผืจืึทื ืืื ืืึทืกืืขืจืื ื ืงืืืขื ื-ืืืื ืืื ืืึธืืขืจ ืื ืืขืจืกื ืืืืืืืง ืขืฆื ืืืจ ืงืขื ืขื ืืขืื ืฆื ื ืืึทืข Kubernetes ืืืืขืจื.
ืืืึธืก ืึทื ืืขืจืฉ ืฆื ืืืืขื ืขื:
ืืจืื ืืขืืืขืืก ืคืื ืึทืืืึธืกืงืึทืืื ื ืืื Kubernetes ืืื ืืื ืฆื ื ืืฆื ืืื ืืคืขืงืืืืืื .ืงืืืขืจื ืขืืขืก ืึทืจืืขืืขืจ ื ืึธืืื: ืคืืืข ืงืืืื ืึธืืขืจ ืืืืื ืืง ืืจืืืก ืึธื ืขืก ?25 ื ืืฆืืง ืืืฉืืจืื ืคึฟืึทืจ ืืืคึผืืืืื ื ืืื ืึธื ืคืืจืื ื ืคืื ืงืืืขืจื ืขืืขืก .
ืืงืืจ: www.habr.com