- Основные компоненты
- Главные узлы เป็น Узлы ที่ มี Pods ที่ เป็น Беги запуска управления อยู่ จะ มี แค่ เพียง เพียง เพียง เพียง เพียง เดี่ยว ก็ ได้ แต่ ใน production มัก จะ มี 3 узла ขึ้น ไป POD ที่ Run ที่ Master Node ได้ แก่
Kube-Apisiserver,etcd,Coredns.,Kube-Controller-ManagerและОблачный контроллер-менеджерเป็น ต้น. - Рабочие узлы เป็น Узлы ที่ Запустите POD ที่ เป็น Рабочая нагрузка
- Услуги เป็น ตัว ช่วย เพิ่ม ความ สะดวก ใน การ เรียก ใช้ งาน สะดวก สะดวก การ การ เรียก ใช้ งาน งาน สะดวก โดย การ เรียก ใช้ งาน pod โดย ทำ หน้าที่ เป็น เป็น balancer нагрузки, ha หรือ выставляют порт ของ pods รับ трафик จาก ภาย นอก
- Контроллеры เป็น ตัว ที่ คอย ดูแล ดูแล ใน ใน ความ รับผิดชอบ ให้ มี มี มี เหมือน ความ รับผิดชอบ ให้ มี มี เหมือน เหมือน อย่าง ที่ เรา ระบุ ไว้ เช่น ถ้า เรา ให้ เรา นี้ ไว้ เช่น ถ้า เรา ให้ ให้ นี้ นี้ เช่น inst เรา ให้ ให้ นี้ นี้ นี้ inst inst ให้ ให้ ถ้า นี้ นี้ ใด ตาม เหลือ pod ด้วย เหตุ ใด ก็ แค่ เหลือ pod ดัง กล่าว เหลือ เพียง แค่ 1 контроллер экземпляра จะ Запустить POD ขึ้น อีก 1 экземпляр เพื่อ ให้ ครบ เท่า กับ 2 экземпляра ตาม ที่ เรา ระบุ ไว้ เรียก контроллер ชนิด นี้ ว่า
Реплизเป็น ต้น. - Стручки เป็น единица ที่ เล็ก ที่ สุด ที่ ที่ ที่ ที่ ที่ สุด ที่ kubernetes สามารถ ควบคุม ได้ โดย pod จะ ห่อ หุ่ม ได้ โดย pod จะ ห่อ หุ่ม หุ่ม หุ่ม โดย ไว้ ไว้ จะ ห่อ หุ่ม หุ่ม หุ่ม ไว้ ไว้ Обеспечить IP, Доступ к хранению และ Интерфейс обрабка เป็น ต้น ให้ กับ Контейнер นั้น ๆ ใน 1 POD อาจ มี ได้ หลาย หลาย แค่ ที่ ที่ ที่ มาก จะ มี เพียง แค่ แค่ แค่ ที่ เป็น Основное приложение เพียง Контейнер เดียว ส่วน Контейнер อื่น ๆ จะ เป็น App เป็น เรียก ว่า Sidecar
- Контейнеры เป็น Приложение ที่ ถูก Pack ใส่ กล่อง พร้อม ด้วย Зависимости ของ มัน ทำ ให้ มัน สามารถ สามารถ ได้ ได้ ทุก ที่ ที่ มี มี Контейнер Runtime
- Сеть เป็น ส่วน ที่ ให้ การ ติดต่อ สื่อ สาร ระหว่าง pod ทั้ง ที่ สาร ใน Узел เดียว กัน หรือ ต่าง Узел (Pod-to-pod Communication) เกิด ขึ้น ได้ โดย อาจ อาศัย อาศัย Инфраструктура เช่น ใน GKE หรือ เป็น Outlay Network Software ก็ ได้ ได้
- Главные узлы เป็น Узлы ที่ มี Pods ที่ เป็น Беги запуска управления อยู่ จะ มี แค่ เพียง เพียง เพียง เพียง เพียง เดี่ยว ก็ ได้ แต่ ใน production มัก จะ มี 3 узла ขึ้น ไป POD ที่ Run ที่ Master Node ได้ แก่
- Обзор компонентов
- Мезос เป็น Контейнер оркестратор อีก ตัว หนึ่ง ขอ ค่าย Apache
Kubernetes ถูก ออก แบบ ตาม หลัก 12 Факторов Принципы применения โดย แบ่ง Приложение ออก เป็น модуль ย่อย ๆ ตาม หน้าที่ ของ มัน ซึ่ง แต่ละ модуль จะ สื่อ สาร ด้วย การ API
เพื่อ ลด ความ ซับซ้อน Kubernetes จะ มี Kube-Apisiserver เป็น จุด ศูนย์ กลาง ของ управление плоскостью управления ใน การ รับ Вызывы API เปรียบ เสมือน Frontend ของ Контроль Plance
ภาพ ด้าน บน เป็น เป็น Архитектура высокого уровня ของ Kubernetes Cluster ประกอบ ไป ด้วย Магические узлы และ Рабочие узлы ที่ มี มี สั่ง จาก จุด ศูนย์ กลาง รับ คำ สั่ง จาก ไป ยัง ยัง คำ สั่ง นั้น จะ ถูก ส่ง ไป ยัง master ที่ ต่าง ๆ ใน สั่ง สั่ง บาง คำ คำ สั่ง ที่ ต้อง มี การ ทำ งาน กับ กับ กับ กับ กับ กับ กับ ถูก ถูก ส่ง ไป ยัง Узлы рабочие และ ถ้า หาก เป็น การ สร้าง สร้าง Контейнер ใหม่ Рабочие узлы จะ ต้อง ไป Скачать изображение จาก Регистрация изображения เพื่อ นำ มา Run และ ทำ งาน ต่อ ไป ไป ไป
เรา สามารถ แบ่ง Компоненты ของ Kubernetes ได้ ดัง นี้
- Главные узлы
- Рабочие узлы
- Услуги
- Контроллеры
- Подвигание
- Контейнеры
- Сеть
เป็น ที่ อยู่ ของ модуль ที่ ทำ หน้าที่ เป็น управляющий пломкость ซึ่ง มี ดัง ต่อ ไป นี้ นี้
kube-apiserver
เป็น จุด ศูนย์ กลาง ใน การ จัด การ การ การ kubernetes кластер ทำ หน้าที่
- เป็น Мастер-процесс ของ кластер
- เป็น Frontend ใน การ Запрос состояния ของ Объект ต่าง ๆ ๆ ใน кластер
- รับ คำ สั่ง ทั้ง создать, удалить, модифицировать รวม ทั้ง Запрос состояния ของ Объект ต่าง ต่าง ๆ จาก ภาย ใน และ ภาย นอก кластер
- ทำ การ проверка คำ สั่ง
- เป็น Frontend ให้ กับ etcd (อ่าน ว่า «เอ็ด — ซี — ดี») ที่ เป็น Кластер базы данных пары ключа ของ Kubernetes (จะ มี แค่
Kube-Apiserverเท่า นั้น ที่ ติดต่อ กับetcdได้)
ตั้ง แต่ v1.16 เป็น ต้น มา มา Сетевой плагин ส่วน ใหญ่ ของ kubernetes เริ่ม มี การ แยก трафик ที่ เป็น Инициированный сервером трафик และ Пользовательский трафик ออก จาก กัน เพื่อ เพิ่ม производительность, емкость และ Безопасность ของ ระบบ
kube-планировщик
เป็น процесс ที่ ทำ алгоритм ใน การ แจก Pods ไป Беги ยัง Рабочие узлы ต่าง ๆ โดย พิจารณา จาก จาก
Ограничения квоты: การ Предел จำนวน CPU และ Memory ตาม ที่ กำหนด ไว้ ใน кластер และ пространства именПотраки и терпимости: เป็น Предпочтение ว่า Узел นี้ Run POD แบบ ไหน ได้ บ้าง และ Pods นี้ สามารถ Run ที่ Узел ไหน ได้ บ้าง บ้างэтикетки: เป็น метаданные ของ узлы และ PODS เก็บ ใน รูปแบบ Пара ключа-значения ช่วย ให้ การ จัด การ Узел หรือ POD ง่าย ขึ้นРесурсы ของ Рабочие узлы: текущая нагрузка, прогноз нагрузки ตาม алгоритм
ถ้า Стручки มี Статус เป็น В ожидании หมาย ความ ว่า Kube-планировщик ไม่ สามารถ หา หา Узел рабочего ให้ มัน Pods Run ได้
Etcd База данных
etcd เป็น постоянное хранение ที่ ใช้ จัด เก็บ состояние ของ кластер และ Network รวม ทั้ง เก็บ ข้อมูล อื่น ๆ ที่ ต้อง เก็บ ไว้ แบบ ถาวร ด้วย ด้วย ด้วย
etcd เป็น Распределенная база данных ที่ เก็บ ข้อมูล โดย ใช้ Техника แบบ B-дерево Клавичное хранилище โดย จะ เก็บ Data แบบ Append เท่า นั้น Data เก่า จะ ถูก Отмеченный флаг ไว้ และ จะ ถูก ตาม มาลบที หลัง โดย โดย ทำ ของ ของ มัน เอง เรา สามารถ ทำ งาน กับ กับ ได้ ด้วย การ ใช้ скручивание หรือ HTTP Библиотека ทั่ว ไป
ใน การ เข้า มา แก้ไข ข้อมูล ใน etcd ต้อง มี การ อ้างอิง ใน ใน ใน ต้อง ต้อง ต้อง อ้างอิง ของ ของ ของ data นั้น ๆ เสมอ ถ้า มี หลาย Запросы เข้า มา Обновление данных เดียว กัน พร้อม ๆ กัน Kube-Apisiserver จะ เป็น คน จัด จัด ลำดับ ของ ของ ให้ คน แบบ จัด ลำดับ ของ ของ ให้ เป็น แบบ แบบ แบบ แบบ นั้น หมาย ความ ว่า запрос แรก จะ หมาย ความ ว่า ว่า ว่า แรก จะ จะ ได้ ได้ สำเร็จ เป็น ผล ให้ версия ของ ของ เปลี่ยน เปลี่ยน ผล ให้ ให้ จะ ได้ รับ Ошибка 409 เนื่อง จาก версия ของ Данные ที่ จะ Обновление ไม่ ตรง กับ версия ปัจจุบัน ดัง นั้น คน ที่ ที่ กับ ส่ง การ Обновление เข้า มา ต้อง ทำ การ Ошибка ручки ตัว นี้ เอง
แม้ etcd จะ จะ Распределенная база данных ที่ มี ความ Прочный สูง แต่ การ ใช้ Инструмент เช่น kubeadm ใน การ Обновить кластер อาจ มี ผล กระทบ เล็กน้อย กับ кластер ของ เรา
kube-контроллер-менеджер
เป็น Демон петли Core Controt ที่ คอย ติดต่อ กับ Kube-Apisiserver เพื่อ ตรวจสอบ состояние ของ кластер ถ้า หาก พบ ว่า объект ไหน มี состояние ไม่ ตรง กับ желаемое состояние มัน จะ ติดต่อ ไป ยัง контроллер ที่ ควบคุม объект นั้น เพื่อ ทำ ให้ объект นั้น ๆ กลับ มา สู่ желаемое состояние
ตัวอย่าง ของ контроллер เช่น конечная точка , пространство имен และ репликация เป็น ต้น.
облачный контроллер-менеджер
ตั้ง แต่ v1.16, Облачный контроллер-менеджер แยก ตัว ออก มา จาก Kube-Controller-Manager เพื่อ ลด Влияние ที่ มี ต่อ Core Application หาก มี การ เปลี่ยนแปลง apis ของ облачный провайдер ต่าง ๆ และ ทำ ให้ การ แก้ไข เพื่อ เพื่อ ap ap ap ap ได้ รวดเร็ว ยิ่ง ขึ้น ด้วย ด้วย
ใน การ ใช้ งาน Облачный контроллер-менеджер เรา ต้อง เลือก เลือก облачный провайдер ก่อน โดย облачный провайдер มี 2 แบบ คือ
в дереве: อยู่ ใน Список ของ Kubernetes Core ก็ จะ สามารถ Run เป็น Daemonset ได้ เลยвне дерева: ไม่ ได้ อยู่ ใน Список ใน ข้อ แรก สามารถ Allurage เอง ได้ โดย ดู ตัวอย่าง จาก Разработка контроллера облачного контроллера และ Cubernetes Cloud Controller Manager
จาก นั้น เรา ก็ มา เพิ่ม Опции ให้ กับ Процесс เหล่า นี้
Кублетต้อง ใส่ Опция- Крупный провайдер = внешнийОблачный контроллер-менеджерต้อง ใส่ Опции--Cloud-Provider = [your_cloud_provider]
แล้ว Перезагрузить кластер
เป็น сервер ที่ ใช้ ใน การ การ การ การ การ การ การ ที่ เป็น Рабочая нагрузка โดย จะ ต้อง มี Приложение พื้นฐาน เช่น Кублет , Kube-Proxy และ Время выполнения контейнера เช่น Докер หรือ RKT запустить อยู่ ด้วย เสมอ
кублет
เป็น Процесс ที่ ติดต่อ ติดต่อ กับ Контейнер-двигатель และ Kube-Apisiserver เพื่อ.
- Убедитесь, что ว่า Контейнер ที่ ต้อง Run ใน Узел นั้น ๆ Run อยู่
- ดูแล เรื่อง การ สร้าง, เปลี่ยนแปลง และ ลบ Ресурсы เช่น Объем และ Секрет ตาม ที่ ได้ รับ คำ สั่ง มา จาก
kube-apiserver - คอย ส่ง Состояние ของ ทั้ง Pods และ Ресурсы กลับ ไป ให้
kube-apiserver
Кублет ยัง ทำ งาน เกี่ยว เกี่ยว กับ กับ Ознакомьтесь с топологией Значение ресурсов ด้วย โดย Вызов ไป ยัง Компоненты อื่น ๆ เช่น Диспетчер топологии เพื่อ เอา ข้อมูล ข้อมูล มา ใช้ การ จัดสรรค์ ทรัพยากร ทรัพยากร เช่น เช่น CPU และ และ เป็น ต้น ให้ เหมาะสม กับ Топология แต่ Функция นี้ ไม่ ได้ включить โดย по умолчанию เนื่อง จาก ยัง เป็น альфа อยู่
ถ้า Настройка кластера Kubernetes ด้วย kubeadm จะ มี แค่ Процесс Кублет และ Время выполнения контейнера เท่า นั้น ที่ จะ Run เป็น Процесс ธรรมดา ใน Рабочий และ Магические узлы ซึ่ง จะ มี Manager Process เช่น Руководство หรือ Systemd เป็น คน Процесс монитора ให้
kube-proxy.
เป็น Процесс ที่ จัด จัด เรื่อง Connectivity ให้ Контейнеры ซึ่ง Поддержка 2 режима ได้ แก่
userspace: ใช้ Правила ของiptables.ใน การ Прокси-трафик เข้า มา ยัง КонтейнерIPvs: ใช้IPvsของ Linux ใน การ Share Traffic เข้า มา ยัง Контейнер (ยัง เป็น alpha Функция อยู่)
Kubernetes ไม่ ได้ มา พร้อม พร้อม система регистрации แต่ CNCF. แนะนำ ให้ ใช้ Fluentd เป็น Унифицированный слой регистрации เพื่อ ส่ง log ไป ยัง aelasticsearch สามารถ เรียก รวม กัน ว่า เป็น Стек лосят
เป็น Компоненты ที่ ช่วย ให้ การ การ การ การ การ การ การ ขึ้น โดย ทำ หน้าที่ รวม รวม รวม เข้า ด้วย กัน และ และ และ และ และ และ และ และ Ресурс นั้น นั้น นั้น นั้น ขึ้น, ลด ลง หรือ начать сначала
หน้าที่ ของ Услуги มี ดัง นี้
- Подключите стручки вместе : เป็น гибкий และ масштабируемый агент ที่ รวม PODS เข้า ด้วย กัน และ และ และ และ เมื่อ pod มี การ เกิด และ ตาย ไป ไป ไป
- Выставить стручки в интернет : ใน Режим
NodePortและLoadBalancerของ Сервис จะ เป็น การ Распределить трафик ไป ยัง Pods ฝน กลุ่ม เดียว กัน - Настройки развязки : เป็น Одинарная точка контакта ใน การ ติดต่อ สื่อ สาร กับ กลุ่ม ของ Pods ที่ รองรับ Функция เดียว กัน
- Определите политику доступа к POD : принудительная политика ใน การ เข้า ถึง POD ต่าง ๆ
ตัวอย่าง Clusterip
- Приложение คือ Основной контейнер ที่ ทำ Логика ต่าง ๆ ของ POD
- Логин คือ Sidecar ที่ ทำ หน้าที่ Shift Log ไป ยัง Log Server
- пауза คือ Контейнер ที่ ใช้ ใน การ Reserve IP ก่อน ที่ จะ จะ จะ จะ นี้ อื่น อื่น ๆ ใน ใน นี้ ไม่ เห็น ใน Кубернеты แต่ จะ เห็น ใน ระดับ ระดับ ระดับ ระดับ เช่น
Докерหรือ.крикл - Clusterip SVC 1 เป็น Сервис ที่ ทำ หน้าที่ ได้ ทั้ง Expose เป็น NodePort และ ต่อ กับ Проникновение контроллера เพื่อ รับ Traffic จาก นอก кластер
- Clusterip SVC 2 เป็น Сервис ที่ เชื่อมต่อ กับ Backend Pods ที่ อยู่ ภาย ใน сервер เดียว กัน
เป็น ส่วน ที่ สำคัญ สำคัญ การ จัด การ (оркестография) кластер เรา สามารถ สร้าง контроллер ของ เรา เอง ได้ ด้วย โดย หลัก การ การ ทำ งาน ของ контроллер เป็น ดัง นี้ นี้
Примечание:
- Отражатель : เป็น Компонент ที่ ติดต่อ กับ กับ kubernetes API เพื่อ ตรวจสอบ Resource (Route เช่น пространство имен, конечная точка, ServiceAccount และ POD เป็น ต้น) ใน ความ ดูแล ของ ตัว เอง เอง แล้ว Push ลง Delta FIFO Queue (Queue FIFO ที่ Удалить ได้) ซึ่ง จะ มี 3 Состояние คือ Добавлено, обновлено และ Удаленный
- Информер : ดึง Объекты ออก ออก Delta FIFO Queue เพื่อ นำ ไป ส่ง ให้ ให้ ให้ เพื่อ เก็บ ไป ส่ง ให้ ให้ ใน ใน แล้ว แล้ว ค่า ค่า ของ Объект มา จาก นั้น ส่ง событие พร้อม index ของ Объект ไป ให้ Контроллер ทำ งาน ต่อ ไป ไป ไป ไป
- Индексатор : เก็บ Объект เข้า Безопасный магазин Thread แล้ว แล้ว Возврат ของ Объект เพื่อ ให้ นำ ไป ใช้ ต่อ ไป ไป
- Рабочий вид : แจก index ไป ให้ Работник ต่าง ๆ ทำ งาน โดย ทำ Функция ทั้ง Ограничение скорости, задержка และ очередь времени
Ссылка: Как создать пользовательский контроллер Kubernetes, используя клиент-иди
Kubernetes ไม่ สามารถ Взаимодействовать กับ Контейнер ได้ ตรง ๆ หน่วย ที่ เล็ก ที่ สุด ที่ Kubernetes สามารถ Взаимодействуют ได้ คือ Подвигание
PODS ถูก Дизайн ให้ оберните контейнер ไว้ โดย ปกติ จะ มี 1 pod จะ มี 1 контейнер (архитектура однопроцессных контейнеров) แต่ สามารถ มี หลาย Контейнер ได้ ใน POD เดียว กัน โดย Контейнер จะ Поделиться IP, Интерфейс обратной связи และ Общая файловая система
Контейнер ใน POD จะ Запуск พร้อม ๆ กัน ดัง นั้น เรา ไม่ มี รู้ เลย ว่า ว่า ว่า ว่า ว่า ว่า จะ จะ เสร็จ เสร็จ เสร็จ ก่อน เรา สามารถ ใช้ Initcontainers ใน การ จัด ลำดับ การ Запустить ของ Контейнер ได้ ใน ระดับ หนึ่ง
จุด ประสงค์ หลัก ของ ของ มี หลาย ๆ ๆ หลัก ของ การ มี ๆ ๆ ๆ ๆ ใน ๆ ๆ ๆ ๆ เช่น เช่น Регистрация, прокси และ адаптер ต่าง ๆ เป็น ต้น โดย โดย โดย เหล่า นี้ ไม่ ได้ ทำ หน้า หลัก เหล่า นี้ ไม่ ได้ ทำ หน้า หลัก หลัก ของ แต่ ทำ งาน ที่ ช่วย ช่วย ช่วย หลัก หลัก ทำ งาน ได้ ได้ ขึ้น เรา เรียก เรียก เรียก พวก พวก นี้ sidecar С Посол หรือ адаптер
แม้ ว่า Kubernetes จะ ไม่ สามารถ จัด การ กับ กับ กับ กับ ได้ ๆ แต่ มัน สามารถ จัด การ การ ของ ของ Контейнер ได้ โดย ผ่าน ทาง
РесурсыของPodspecแบบ นี้.
resources:
limits:
cpu: "1"
memory: "4Gi"
requests:
cpu: "0.5"
memory: "500Mi"
ResourceQuotaซึ่ง เป็น การ กำหนดМягкий лимитและжесткий лимитให้ กับпространство именและ ใน v1.12 เป็น ต้น มา มี Beta ОсобенностиScopeselectorและ.Приоритетноеклассное значениеที่ สามารถ ทำ ให้ กำหนด Приоритет ภาย ในпространство именได้ อีก ด้วย
apiVersion: v1
kind: List
items:
- apiVersion: v1
kind: ResourceQuota
metadata:
name: pods-high
spec:
hard:
cpu: "1000"
memory: 200Gi
pods: "10"
scopeSelector:
matchExpressions:
- operator : In
scopeName: PriorityClass
values: ["high"]
Init Containers.
จาก ที่ เรา รู้ มา แล้ว ใน เรื่อง Стручки ว่า แต่ละ Контейнер ใน POD จะ ถูก Запустить พร้อม กัน หาก ต้องการ จัด ลำดับ การ การ อาจ อาจ ใช้ พวก ЛИЦИВЫЕПРОБЫ , Готовность труба และ Государственные средства มา ช่วย ได้ แต่ มัน ก็ ทำ ให้ yaml file ของ เรา ซับซ้อน ยิ่ง ขึ้น ขึ้น
Kubernetes มี อีก Функция ชื่อ ว่า initcontainers ซึ่ง เป็น การ บอก ว่า ต้อง รอ ให้ ให้ ให้ ให้ ให้ ให้ เสร็จ เสร็จ เสร็จ ก่อน ก่อน ที่ จะ Запустить главный контейнер
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: busybox:1.28
command: ['sh', '-c', 'echo The app is running! && sleep 3600']
initContainers:
- name: init-myservice
image: busybox:1.28
command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;']
- name: init-mydb
image: busybox:1.28
command: ['sh', '-c', 'until nslookup mydb; do echo waiting for mydb; sleep 2; done;']
ถ้า Контейнеры ใน initcontainers Начните ไม่ สำเร็จ Kubernetes จะ ทำ การ Перезапуск จน กว่า จะ สำเร็จ ถึง จะ Запустить главный контейнер ขึ้น ขึ้น มา
Контейнеры ที่ ระบุ ไว้ ใน initcontainers ก็ เหมือน Контейнеры ทั่ว ไป เรา สามารถ กำหนด Access Storage และ Безопасность ได้ อิสระ จาก Основной контейнер ทำ ให้ เรา สามารถ ใช้ команда ที่ Основной контейнер ใช้ งาน ไม่ ได้ เพื่อ Настройка อะไร ต่าง ๆ ก่อน Запустить главный контейнер ได้
การ ที่ จะ สร้าง สร้าง สร้าง Kubernetes Cluster ขึ้น มา สิ่ง ที่ ที่ ไม่ ได้ เลย คือ คือ ที่ ขาด ไม่ เลย ก็ คือ คือ ถ้า ถ้า ได้ สร้าง คือ คือ คือ ถ้า ถ้า เคย สร้าง vms บน บน บน ก็ จะ คุ้นเคย คุ้นเคย มัน อย่าง อย่าง เรา อาจ เปรียบ vms ได้ กับ กับ ของ ของ ของ ของ ของ ของ โดย แจก แจก IP ให้ กับ PODS และ Маршрут трафика ระหว่าง Стручки ใน แต่ละ узлы
ใน โลก ของ ของ Ортестография контейнера, сеть ต้อง ทำ สิ่ง เหล่า นี้ ได้ ได้
Контейнер к контейнерной связи: การ สื่อ สาร ระหว่าง Контейнер ซึ่ง สำหรับ Kubernetes Контейнеры อยู่ ใน Pods ดัง นั้น Pods จัด การ เรื่อง นี้ ไป แล้ว แล้วCod-to-Pod Communication: การ สื่อ สาร ระหว่าง Pods ไม่ ว่า จะ อยู่ ใน ใน Узел เดียว กัน หรือ ต่าง УзелВнешняя связь связи: การ เชื่อมต่อ กับ โลก ภาย นอก ของ pods ซึ่ง สำหรับ kubernetes ได้ มี การ ใช้ Концепция ของ Сервис มา ทำ ใน ส่วน นี้ แล้ว แล้ว
ดัง นั้น สำหรับ สำหรับ Kubernetes แล้ว Network ทำ หน้าที่ แค่ จัด การ Cod-to-Pod Communication เท่า นั้น.
Дальнейшее чтение
- Иллюстрированное руководство по сети Kubernetes Тим Хокконом, один из ведущих разработчиков Kubernetes
Файл конфигурации сети CNI
Контейнерный сетевой интерфейс (CNI) เป็น Стандартная спецификация ของ Контейнерная сеть ใน Kubernetes มัน ถูก ใช้ ใน การ Назначить IP ให้ กับ Pods
ตั้ง แต่ v1.6.0 kubeadm สามารถ Настройка кластера Kubernetes โดย ใช้ CNI แต่ ผู้ ใช้ ต้อง Recompile เอง
CNI คือ Спецификация ที่ มา พร้อม กับ Библиотеки ที่ ใช้ ใน การ สร้าง และ ลบ ลบ ลบ ลบ ลบ ลบ จุด จุด คือ เป็น มาตรฐาน กลาง สำหรับ แต่ละ Сетевое решение ใน การ ติดต่อ กับ กับ กับ กับ run ซึ่ง นี้ Поддержка ทั้ง Amazon ECS, SR-iov และ Облачный литейный завод เป็น ต้น
ตัวอย่าง ของ файл конфигурации сети CNI
{
"cniVersion": "0.2.0",
"name": "mynet",
"type": "bridge",
"bridge": "cni0",
"isGateway": true,
"ipMasq": true,
"ipam": {
"type": "host-local",
"subnet": "10.22.0.0/16",
"routes": [
{ "dst": "0.0.0.0/0" }
]
}
}
โดย Config นี้ เป็น การ Определите интерфейс моста ชื่อ CNI0 ที่ มี подсеть 10.22.0.0.0.16.
Cod-to-Pod Communication
Требование ของ Cod-to-Pod Communication ของ Kubernetes คือ.
- ทุก Pods ต้อง ติดต่อ สื่อ สาร กัน ได้ แม้ ว่า จะ อยู่ คน ละ узел
- ทุก Узел ต้อง สามารถ ติดต่อ ได้ กับ ทุก Pods
- ต้อง ไม่ มี การ NAT (сетевой адрес перевод) เกิด ขึ้น ใน кластер
จาก Требования สามารถ ตี ตี ได้ ว่า ว่า ทุก ทุก หรือ ไม่ ว่า จะ เป็น ของ หรือ หรือ หรือ ต้อง จะ เป็น ของ หรือ หรือ หรือ ต้อง ติดต่อ ติดต่อ หา กัน ได้ โดย การ การ การ การ ซึ่ง ซึ่ง ทำ ได้ การ ระดับ การ การ การ ซึ่ง สามารถ ทำ ได้ การ ระดับ ระดับ การ การ การ เช่น เช่น เช่น ใน การ ระดับ ระดับ การ ระดับ เช่น เช่น เช่น เช่น และ ระดับ ใน ระดับ ระดับ ระดับ ระดับ โดย เช่น GKE และ ใน ระดับ ระดับ Программное обеспечение โดย โดย Software Software Software Solution Solution Solution เช่น Weave, Фланель, Calico หรือ Романа
Дальнейшее чтение
- Установите сеть POD
- Кластерные сети
- Network Addon
- ทุก Компоненты จะ Общаться กับ
kube-apiserver - มี แค่
Kube-Apisiserverเท่า นั้น ที่ สามารถ ติดต่อ กับetcdได้. - เรา สามารถ Взаимодействовать กับ
etcdได้ โดย การ ใช้ командаetcdctl. - เรา สามารถ ดู ดู Состояние และ Настройка ของ
Calicoได้ โดย ใช้ командаCalicoCtl. Calico Felixเป็น Daemonsets ของ Calico ที่ Run อยู่ ทุก ทุก Сервер ใน Кластер ทำ หน้าที่ Монитор сетевой интерфейс, กำหนด Маршрутизация, กำหนด ACL และ Состояние отчета ของ УзелПтицаเป็น Динамический демон IP маршрутизации ที่ Felix ใช้ ใน การ อ่าน อ่าน อ่าน และ Распределение ข้อมูล ของ ตัว เอง ไป ให้ Узел อื่น ๆ ใน кластер
Узел
Kubernetes มอง Узел เป็น API Объект ที่ ถูก Создать นอก кластер โดย Основные узлы ต้อง เป็น Linux เท่า นั้น แต่ Узлы рабочие จะ เป็น Linux หรือ Window Server 2019 ก็ ได้
- ถ้า
Kube-Apisiserverไม่ สามารถ ติดต่อ กับКублетที่. узел ใด ๆ. ได้ เป็น เวลา 5 นาทีNodelreaseจะ เตรียม การ Удалить узел นั้น ออก จาก кластер โดย จะ ทำ การ เปลี่ยน Состояние ของ Узел จากГотовыйเป็นЛожьแล้ว จึง ค่อย ๆ Миграция стручков ออก ไป Узел อื่น ๆ - จาก นั้น เมื่อ
Kube-Apisiserverกลับ มา ติดต่อ กับКублетได้ อีก ครั้ง Узел Статус กลับ มา เป็นГотовจาก นั้น Узел กลับ อยู่ ใน Список ของ Узел ที่ สามารถ Расписание Pods ได้ - ขั้นตอน ใน การ Удалить узел ออก จาก кластер
- ที่ Узел Master:
Kubectl Удалить Узелขั้นตอน นี้ Pods จะ ค่อย ๆ ถูก ย้าย ออก จาก จาก узел นั้น. - ที่ Узел ที่ ถูก Удалить:
kubeadm сбросเพื่อ ลบ ข้อมูล ของ ของ кластер แต่ บาง Правила ของ iptables อาจ ยัง เหลือ อยู่ ต้อง Проверьте แล้ว ลบ เอง
- ที่ Узел Master:
Стручки: одиночный IP на POD
PODS อาจ กล่าว ได้ ว่า เป็น ที่ อยู่ ของ กลุ่ม ของ ของ เป็น ที่ อยู่ ของ กลุ่ม ของ ของ ของ ของ ของ และ Том данных ของ ของ มัน โดย ที่ แต่ละ Контейнер จะ ใช้ IP เดียว กัน โดย มี Контейнер ที่ ชื่อ ว่า Пауза เป็น คน ถือ IP
การ ติดต่อ สื่อ สาร กัน ระหว่าง ระหว่าง Контейнер ใน POD เดียว กัน อาจ ใช้
- Интерфейс обратной связи
- เขียน Файл ผ่าน Объем данных ที่ ใช้ ร่วม กัน
- Межпроцессная связь (IPC)
Kubernetes Поддержка ทั้ง IPv4 และ IPv6 ตั้ง แต่ v1.16 โดย ตอน สร้าง обслуживание ต้อง สร้าง แยก กัน.
Услуги: Контейнер на внешний путь
จาก รูป เป็น ตัวอย่าง ของ Сервис ชนิด NodePort ที่ ใช้ ใน การ Expose Port ของ Контейнер ออก ไป ใน ระดับ Узел เพื่อ ให้ ภาย นอก кластер ได้ ใช้
ใน การ สร้าง Сервис เรา ต้อง ระบุ Конечная точка ด้วย ว่า จะ ให้ โยน Traffic ไป ที่ POD ไหน Port อะไร จาก นั้น Traffic จะ ถูก Маршрут โดย ใช้ Техника IPTables หรือ IPvs ขึ้น อยู่ กับ кластер ที่ เรา สร้าง ไว้ ใน ตอน แรก แรก
Сервис จะ ถูก Монитор ด้วย Часовая петля ของ Kube-Controller-Manager เพื่อ เพิ่ม หรือ ลด Конечная точка ตาม Pods ที่ Run อยู่ ณ ขณะ นั้น
ตัวอย่าง ของ การ สร้าง обслуживание Нотепорт
kind: Service
apiVersion: v1
metadata:
name: hostname-service
spec:
type: NodePort
selector:
app: echo-hostname
ports:
- nodePort: 30163
port: 8080
targetPort: 80
เป็น อีก อีก or or โดย โดย ได้ รับ ความ นิยม โดย โดย функция หลัก ๆ ความ นิยม นิยม โดย หลัก หลัก ๆ งาน และ และ ต่าง เช่น ทำ งาน ได้ ไม่ ต่าง กัน เช่น มี มี มี กลางง ใน การ ควบคุม ดูแล, การ มี งาน งาน ไป ใน ใน ใน ต่าง ต่าง ๆ และ การ เก็บ Состояние ของ кластер ไว้ ใน постоянное хранение ซึ่ง Кубернаны ใช้ etcd แต่ Mesos ใช้ Работник зоопарка
ถ้า เราลอง กลับ ไป ดู Система อย่าง OpenStack หรือ. CloudStack ทั้งหมด ต่าง มี Master Node ที่ ทำ หน้าที่ เป็น เป็น управление плоскостью, มี การ расписание งาน ไป ไป ตาม ตาม ต่าง ๆ, การ เก็บ состояние ไว้ ใน постоянное хранение และ การ จัด การ เรื่อง เรื่อง ซึ่ง ซึ่ง ทั้งหมด ต่าง มี พื้นฐาน เหมือน ๆ ๆ ๆ กัน.
แต่ สิ่ง ที่ ทำ ให้ ให้ ให้ ให้ ให้ ให้ ให้ ความ แตกต่าง มาก คือ การ ให้ ความ สำคัญ อย่าง มาก เรื่อง เรื่อง เรื่อง เรื่อง สำคัญ อย่าง มาก เรื่อง เรื่อง เรื่อง เรื่อง เรื่อง เรื่อง เรื่อง เรื่อง เรื่อง เรื่อง เรื่อง เรื่อง เรื่อง เรื่อง เรื่อง неисправностей, самопознание และ масштабирование โดย มี พื้นฐาน อยู่ บน API-приводвое мышление นั่น เอง.
Оригинал: «https://dev.to/peepeepopapapeepeepo/lfs258-3-15-kubernetes-architecture-285i»