Глоссарий
- Node - физическая или виртуальная машина
- Pod - базовая еденица для упр. и запуска приложения, один (или несколько) контейнеров. Запускается с единым IP адресом. Можно запускать несколько контейнорв (frontend, backend например) в одном поде
- Service - Набор подов
- ClusterIP - сервис, который доступен только внутри кластера
- NodePort - проброс порта из кластера во вне
- LoadBalancer - трафик из внешних балансировщиков ?
- ExternalName - единая точка на запросы ?
- Ingress - точка входа в кластер (nginx-ingress controller)
- Label
Устанока/Запуск
установка kubectl
curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl version --client
установка minikube
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube
sudo mkdir -p /usr/local/bin/
sudo install minikube /usr/local/bin/
автокомплит в .bashrc
echo "source <(kubectl completion bash)" >> ~/.bashrc
echo "source <(minikube completion bash)" >> ~/.bashrc
Предварительная настройка
$ minikube start
😄 minikube v1.7.3 on Ubuntu 16.04
✨ Automatically selected the virtualbox driver. Other choices: none, docker (experimental)
💿 Downloading VM boot image ...
> minikube-v1.7.3.iso.sha256: 65 B / 65 B [--------------] 100.00% ? p/s 0s
> minikube-v1.7.3.iso: 167.39 MiB / 167.39 MiB [] 100.00% 15.99 MiB p/s 11s
🔥 Creating virtualbox VM (CPUs=2, Memory=2000MB, Disk=20000MB) ...
локальный дашбоард
$ minikube dashboard
🔌 Enabling dashboard ...
🤔 Verifying dashboard health ...
🚀 Launching proxy ...
🤔 Verifying proxy health ...
🎉 Opening http://127.0.0.1:45827/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
Окно или вкладка откроются в текущем сеансе браузера.
запуск тестового пода
$ kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node
инфо по деплое
$ kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
hello-node 1/1 1 1 36s
инфо о подах
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-node-7676b5fb8d-k4rv5 1/1 Running 0 92s
инфо о сервисах
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 none 443/TCP 35m
сделать под публичным
$ kubectl expose deployment hello-node --type=LoadBalancer --port=8080
service/hello-node exposed
$ kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-node LoadBalancer 10.110.30.32 pending 8080:32471/TCP 3s
kubernetes ClusterIP 10.96.0.1 none 443/TCP 37m
- Флаг –type=LoadBalancer показывает, что сервис должен быть виден вне кластера.
$ minikube service hello-node
|-----------|------------|-------------|-----------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|------------|-------------|-----------------------------|
| default | hello-node | | http://192.168.99.103:32471 |
|-----------|------------|-------------|-----------------------------|
🎉 Opening service default/hello-node in default browser...
Освобождение ресурсов
$ kubectl delete service hello-node
service "hello-node" deleted
$ kubectl delete deployment hello-node
deployment.apps "hello-node" deleted
$ minikube stop
✋ Stopping "minikube" in virtualbox ...
🛑 "minikube" stopped.
$ minikube delete
🔥 Deleting "minikube" in virtualbox ...
💀 Removed all traces of the "minikube" cluster.
kubectl create deployment kubernetes-bootcamp –image=gcr.io/google-samples/kubernetes-bootcamp:v1
Great! You just deployed your first application by creating a