Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ FreeBSD and Nix ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

SQL\T-SQL

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


Щупаем Kubernetes за всякое часть 3


 

Щупаем Kubernetes за всякое часть 3


Пердыдущие части:
http://snakeproject.ru/rubric/article.php?art=kubernetes_1_01062020
http://snakeproject.ru/rubric/article.php?art=kubernetes_1_03062020


Подведем теоретический итог изученного из предыдущих частей

Cluster - логический сегмент серверов с Kubernetes

Nodes - сервера с установленным Kubernetes

Service - предоставляет доступ к Deployment с помощью:
1. ClusterIP
2. NodePort
3. LoadBalancer
4. ExternalName

Deployment - развертывание, логическое объединение однотипных Pod

Pod - объект, содержит один или более работающих контейнеров


Закрепим все знания


Вывод доступной информации


Проверим работоспособное состояние хотя-бы одной ноды:
$ kubectl get nodes
NAME                STATUS     ROLES    AGE     VERSION
kubernetes-master   Ready      master   3d20h   v1.18.2
kubernetes-slave    NotReady   <none>   3d19h   v1.18.2


Проверим сетевую часть:
$ kubectl get services
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.96.0.1    <none>        443/TCP   3d20h


Проверим наличие работающих Pod:
$ kubectl get pods
No resources found in default namespace.


И наличие развертываний:
$ kubectl get deployments
No resources found in default namespace.


Манипулирование и управление контейнерами docker в kubernetes


Создадим объект Pod с одним контейнером на базе nginx:
$ kubectl run mynginx --image=nginx --port=8888 --labels app=mynginx
pod/mynginx created


Проверяем, статус должен смениться через некоторое время:

$ kubectl get pods
NAME      READY   STATUS              RESTARTS   AGE
mynginx   0/1     ContainerCreating   0          27s

$ kubectl get pods
NAME      READY   STATUS    RESTARTS   AGE
mynginx   1/1     Running   0          63s


Выведем подробную информацию о Pod:
$ kubectl describe pods mynginx


Формат выполнения команд - kubectl kubectl exec [POD] -- [COMMAND]

Исполнить команду в контейнере mynginx в Pod:
$ kubectl exec mynginx -- uname
Linux

Перейти в оболочку в контейнере mynginx в Pod:
$ kubectl exec -it mynginx -- bash
root@mynginx:/#


Вывести логи:
$ kubectl logs mynginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty...
/docker-entrypoint.sh: Looking for shell scripts in /dock...
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-...
10-listen-on-ipv6-by-default.sh: Getting the checksum of ...
10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 i...
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-...
/docker-entrypoint.sh: Configuration complete; ready for ...


Перенаправление ip:порт 192.168.0.128:88 сервера к порту 80 контейнера:
$ sudo kubectl port-forward mynginx --address 192.168.0.128 88:80
Forwarding from 192.168.0.128:88 -> 80

Проверка сетвой доступности:
$ curl -I http://192.168.0.128:88/
HTTP/1.1 200 OK
Server: nginx/1.19.0
Date: Fri, 05 Jun 2020 09:13:03 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 26 May 2020 15:00:20 GMT
Connection: keep-alive
ETag: "5ecd2f04-264"
Accept-Ranges: bytes

Прервите форвардинг


Удалим наш Pod:
$ kubectl delete pods mynginx
pod "mynginx" deleted


Проверяем:
$ kubectl get pods
No resources found in default namespace.


Создадим Pod с использованием манифеста и двух разных web серверов


Создадим файл манифеста myweb.yaml:


Где основное:
kind: Pod - что создаем
name: myweb - имя создаваемого объекта Pod
namespace: default - в каком пространстве имен
spec: - описание запуска контейнеров


Запустим Pod на основе манифеста:
$ kubectl apply -f myweb.yaml
pod/myweb created

Проверяем работоспособность:
$ kubectl get pods
NAME    READY   STATUS    RESTARTS   AGE
myweb   2/2     Running   0          5m44s


Перенаправление ip:порт 192.168.0.128
Порта 88 сервера к порту 80 контейнера
Порта 99 сервера к порту 8080 контейнера

$ kubectl port-forward myweb --address 192.168.0.128 88:80 &
$ kubectl port-forward myweb --address 192.168.0.128 99:8080 &


Проверка сетвой доступности:

$ curl -I http://192.168.0.128:88/
Handling connection for 88
HTTP/1.1 200 OK
Server: nginx/1.19.0
Date: Fri, 05 Jun 2020 10:41:02 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 26 May 2020 15:00:20 GMT
Connection: keep-alive
ETag: "5ecd2f04-264"
Accept-Ranges: bytes

$ curl -I http://192.168.0.128:99/
Handling connection for 99
HTTP/1.1 404
Content-Type: text/html;charset=utf-8
Content-Language: en
Transfer-Encoding: chunked
Date: Fri, 05 Jun 2020 10:41:09 GMT


Удалим наш Pod:
$ kubectl delete pods myweb
pod "myweb" deleted

 


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.
Весь материал на сайте носит ознакомительный характер,
за его использование другими людьми, автор ответственности не несет.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект