Привіт Minikube

Цей посібник покаже вам, як запустити простий кластер Kubernetes використовуючи minikube. Посібник надає образ контейнера, який використовує NGINX для відклику на всі запити.

Цілі

  • Розгортання тестового застосунку в minikube.
  • Запуск застосунку.
  • Перегляд логів застосунку.

Перш ніж ви розпочнете

Цей застосунок передбачає, що у вас вже є встановлений minikube. Дивіться Крок 1 в minikube start для інструкцій щодо встановлення.

Вам також потрібно встановити kubectl. Дивіться Встановлення інструментів для інструкцій щодо встановлення.

Створення кластера minikube

minikube start

Відкрийте інформаційну панель

Відкрийте інформаційну панель Kubernetes. Це можна зробити двома різними способами:

Відкрийте новий термінал та виконайте команду:

# Запустіть новий термінал та залиште його працювати.
minikube dashboard

Тепер поверніться до термінала, де ви запустили minikube start.

Якщо ви не хочете, щоб minikube відкривав вебоглядач для вас, запустіть підкоманду dashboard з прапорцем --url. minikube виводить URL-адресу, яку ви можете відкрити у вибраному вами вебоглядачі.

Відкрийте новий термінал та виконайте команду:

# Запустіть новий термінал та залиште його працювати.
minikube dashboard --url

Тепер поверніться до термінала, де ви запустили minikube start.

Створення Deployment

Pod в Kubernetes — це група з одного або більше контейнерів, які повʼязуються один з одним для керування та використання мережевих ресурсів. Pod в цьому посібнику містить тільки один контейнер. Kubernetes Deployment перевіряє життєздатність вашого Podʼа та, якщо він виходить з ладу, перезапускає його. Deployment є рекомендованим способом створення та масштабування Podʼів.

  1. Скористайтесь командою kubectl create для створення Deployment, що буде керувати Podʼом. Pod виконує контейнер, який міститься в образі Docker.

    # Запустіть тестовий образ контейнера, який містить вебсервер
    kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=8080
    
  2. Перевірте, чи створено Deployment.

    kubectl get deployments
    

    Ви маєте отримати вивід, подібний до такого:

    NAME         READY   UP-TO-DATE   AVAILABLE   AGE
    hello-node   1/1     1            1           1m
    

    (Зачекайте деякий час, поки Pod стане доступним. Якщо ви бачите "0/1", спробуйте ще раз через кілька секунд.)

  3. Перевірте, чи створено Pod.

    kubectl get pods
    

    Ви маєте отримати вивід, подібний до такого:

    NAME                          READY   STATUS    RESTARTS   AGE
    hello-node--5f76cf6ccf-br9b5  1/1     Running   0          1m
    
  4. Перегляд подій кластера:

    kubectl get events
    
  5. Перегляд конфігурації kubectl:

    kubectl config view
    
  6. Перегляд логів застосунку з контейнера в Podʼі (замініть назву Podʼа на ту, яку ви отримали з kubectl get pods).

    kubectl logs hello-node-5f76cf6ccf-br9b5
    

    Вивід має бути подібним до такого:

    I0911 09:19:26.677397       1 log.go:195] Started HTTP server on port 8080
    I0911 09:19:26.677586       1 log.go:195] Started UDP server on port  8081
    

Створення Service

Стандартно, Pod доступний лише за його внутрішньою IP-адресою в межах Kubernetes-кластера. Щоб зробити контейнер hello-node доступним назовні віртуальної мережі Kubernetes, вам потрібно подати Pod як Service Kubernetes.

  1. Скористайтесь командою kubectl expose для експонування Podʼа:

    kubectl expose deployment hello-node --type=LoadBalancer --port=8080
    

    Прапорець --type=LoadBalancer вказує, що ви хочете надати доступ до вашого Serviceʼу назовні кластера.

    Код застосунку всередині тестового образу контейнера тільки прослуховує порт 8080. Якщо ви використовуєте інший порт в kubectl expose, клієнти не зможуть отримати доступ до вашого застосунку.

  2. Перевірте, чи створено Service:

    kubectl get services
    

    Ви маєте отримати вивід, подібний до такого:

    NAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    hello-node   LoadBalancer   10.108.144.78   <pending>     8080:30369/TCP   21s
    kubernetes   ClusterIP      10.96.0.1       <none>        443/TCP          23m
    

    Хмарні провайдери, які підтримують балансувальники навантаження, зовнішні IP-адреси можуть надаватись для доступу до Serviceʼу. В minikube LoadBalancer створює Service, доступний через команду minikube service.

  3. Виконайте наступну команду:

    minikube service hello-node
    

    Це відкриє вікно вебоглядача, що показує відповідь застосунку.

Увімкнення надбудов

Інструменти minikube містять набір вбудованих надбудов, які можна увімкнути, вимкнути та відкрити в локальному оточені Kubernetes.

  1. Перегляньте список доступних надбудов:

    minikube addons list
    

    Ви маєте отримати вивід, подібний до такого:

    addon-manager: enabled
    dashboard: enabled
    default-storageclass: enabled
    efk: disabled
    freshpod: disabled
    gvisor: disabled
    helm-tiller: disabled
    ingress: disabled
    ingress-dns: disabled
    logviewer: disabled
    metrics-server: disabled
    nvidia-driver-installer: disabled
    nvidia-gpu-device-plugin: disabled
    registry: disabled
    registry-creds: disabled
    storage-provisioner: enabled
    storage-provisioner-gluster: disabled
    
  2. Увімкніть надбудову, наприклад, metrics-server:

    minikube addons enable metrics-server
    

    Ви маєте отримати вивід, подібний до такого:

    The 'metrics-server' addon is enabled
    
  3. Перегляньте Podʼи та Serviceʼи, які щойно було створено:

    kubectl get pod,svc -n kube-system
    

    Вивід має бути подібним до такого:

    NAME                                        READY     STATUS    RESTARTS   AGE
    pod/coredns-5644d7b6d9-mh9ll                1/1       Running   0          34m
    pod/coredns-5644d7b6d9-pqd2t                1/1       Running   0          34m
    pod/metrics-server-67fb648c5                1/1       Running   0          26s
    pod/etcd-minikube                           1/1       Running   0          34m
    pod/influxdb-grafana-b29w8                  2/2       Running   0          26s
    pod/kube-addon-manager-minikube             1/1       Running   0          34m
    pod/kube-apiserver-minikube                 1/1       Running   0          34m
    pod/kube-controller-manager-minikube        1/1       Running   0          34m
    pod/kube-proxy-rnlps                        1/1       Running   0          34m
    pod/kube-scheduler-minikube                 1/1       Running   0          34m
    pod/storage-provisioner                     1/1       Running   0          34m
    
    NAME                           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
    service/metrics-server         ClusterIP   10.96.241.45    <none>        80/TCP              26s
    service/kube-dns               ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP       34m
    service/monitoring-grafana     NodePort    10.99.24.54     <none>        80:30002/TCP        26s
    service/monitoring-influxdb    ClusterIP   10.111.169.94   <none>        8083/TCP,8086/TCP   26s
    
  4. Перевірте вивід з metrics-server:

    kubectl top pods
    

    Ви маєте отримати вивід, подібний до такого:

    NAME                         CPU(cores)   MEMORY(bytes)   
    hello-node-ccf4b9788-4jn97   1m           6Mi             
    

    Якщо ви бачите наступне повідомлення, почекайте та спробуйте ще раз:

    error: Metrics API not available
    
  5. Вимкніть metrics-server:

    metrics-server was successfully disabled
    

Видалення кластера minikube

Тепер ви можете видалити ресурси, які ви створили в кластері:

kubectl delete service hello-node
kubectl delete deployment hello-node

Зупиніть кластер minikube:

minikube stop

Необовʼязково, ви можете видалити кластер minikube:

minikube delete

Якщо ви бажаєте використовувати minikube знову для продовження вивчення Kubernetes, ви можете не видаляти його.

Підсумки

Ця сторінка містить базові аспекти використання minikube для розгортання простого кластера Kubernetes та запуску тестового застосунку. Тепер ви готові до розгортання власних застосунків.

Що далі

Змінено August 10, 2024 at 8:09 PM PST: Local links were prefixed with "uk" (7d9a96f799)