Kubernetes (K8S) быстро создает личный блог typecho
Кластерная среда K8S,Справочник по созданию учебникаTencent Cloud Lighthouse создает межрегиональный кластер Kubernetes
Кластерная панель K8S,Справочник по созданию учебникаУстановка и использование панели управления кластером Kubernetes. - Блог Цинъяна — личный блог компьютерного энтузиаста (hipyt.cn)
Если кластера нет или недостаточно серверов, вы можете приобрести новый через портал.
Tencent Cloud легкий сервер приложений Адрес покупки:портал
Примечание. Учебное пособие в этой статье основано на кластере Kubernetes. Создается панель управления kuboard, а затем выполняется учебное пособие по созданию блога Typecho.
Адрес соответствующего образа Docker, используемого в этой статье, следующий:
MySQL:mysql - Official Image | Docker Hub
typecho:rehiy/typecho - Docker Image | Docker Hub
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: &name mysql # Метка развертывания, используемая для идентификации ресурсов как приложений MySQL.
name: *name # Имя развертывания — mysql.
namespace: default # Пространство имен, в котором находится развертывание, используется по умолчанию.
spec:
replicas: 1 # Количество копий развертывания — 1.
selector: # Селектор тегов, выберите ресурсы, содержащие тег app:mysql.
matchLabels:
app: *name
template: # Шаблон модуля, используемый для выбора или создания модулей.
metadata: # Метаданные модуля
labels:
app: *name
spec:
affinity: # Настройки привязки модулей
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchFields:
- key: metadata.name
operator: In
values:
- vm-4-13-ubuntu # Выберите узел с именем узла vm-4-13-ubuntu в качестве цели развертывания.
containers: # определение контейнера
- name: *name # Имя контейнера — mysql.
image: mysql:latest # Используйте последнюю версию образа MySQL.
ports: # Сопоставление контейнерных портов
- containerPort: 3306 # Открыть порт 3306 контейнера
env: # Настройки переменных среды
- name: MYSQL_ROOT_PASSWORD # Пароль root-пользователя MySQL
value: typecho@123
- name: MYSQL_DATABASE # Имя базы данных MySQL
value: typecho
- name: MYSQL_USER # Имя пользователя MySQL
value: typecho
- name: MYSQL_PASSWORD # Пароль пользователя MySQL
value: typecho@123
volumeMounts: # Настройки монтирования томов для контейнеров
- name: db # Укажите имя тома как db
mountPath: /var/lib/mysql # Подключите том к пути контейнера /var/lib/mysql.
volumes: # Определение объема
- name: db # Имя тома — db
hostPath:
path: /var/lib/mysql # Укажите путь /var/lib/mysql на хосте в качестве пути к тому
---
apiVersion: v1
kind: Service
metadata:
name: mysql # Имя службы — mysql.
namespace: default # Пространство имен, в котором находится Сервис, используется по умолчанию.
spec:
type: ClusterIP # Тип службы — ClusterIP, используется внутренними кластерами.
selector:
app: mysql
ports:
- name: db-port
protocol: TCP
port: 3306 # Номер порта службы — 3306.
targetPort: 3306 # Служба перенаправляет трафик на порт 3306 модуля Pod.
Измените приведенную выше конфигурацию yaml, скопируйте и вставьте ее сюда, чтобы отправить напрямую.
Это означает, что служба MySQL успешно создана. Нажмите, чтобы просмотреть конкретную информацию.
kind: Deployment # Создание ресурсов развертывания
apiVersion: apps/v1
metadata:
name: &name myblog # Определяет скалярную привязку с именем myblog со значением «myblog». и укажите точку привязки в поле имени
namespace: default
labels:
app: *name # Ссылка на точку привязки на значение тега приложения.
spec:
selector:
matchLabels:
app: *name # Выберите соответствующий модуль на основе тега приложения.
template:
metadata:
labels:
app: *name # Используйте тег приложения в шаблоне модуля и укажите ссылку на привязку.
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchFields:
- key: metadata.name
operator: In
values:
- vm-4-13-ubuntu # Выберите узел с именем узла vm-4-13-ubuntu в качестве цели развертывания.
containers:
- name: typecho # Определите контейнер с именем typecho
image: rehiy/typecho # Используйте зеркало rehiy/typecho.
ports:
- containerPort: 80 # Номер порта, предоставляемый контейнером, равен 80.
- containerPort: 443 # Номер порта, предоставленный контейнером, — 443.
volumeMounts:
- name: *name # Ссылка на имя тома, указанное точкой привязки.
subPath: usr # Укажите подпуть для подключения к контейнеру как usr.
mountPath: /var/www/default/usr # Подключите том к пути контейнера /var/www/default/usr.
volumes:
- name: *name # Ссылка на имя тома, указанное точкой привязки.
hostPath:
path: /srv/myblog # Укажите путь /srv/myblog на хосте в качестве пути к тому.
type: DirectoryOrCreate # Если путь не существует, создайте каталог
---
kind: Service # Создание ресурсов службы
apiVersion: v1
metadata:
name: &name myblog # Ссылка на имя, указанное точкой привязки
namespace: default
labels:
app: *name # Ссылка на значение тега, указанное точкой привязки
spec:
selector:
app: *name # Выберите соответствующий модуль на основе тега приложения.
ports:
- name: http # Определите порт с именем http
port: 80 # Номер порта, который прослушивает служба, — 80.
targetPort: 80 # Номер порта для службы для пересылки трафика на модуль — 80.
- name: https # Определите порт с именем https
port: 443 # Номер порта, который прослушивает служба, — 443.
targetPort: 443 # Номер порта для службы для пересылки трафика на модуль — 443.
---
kind: Ingress # Создать входной ресурс
apiVersion: networking.k8s.io/v1
metadata:
name: &name myblog # Ссылка на имя, указанное точкой привязки
namespace: default
annotations:
traefik.ingress.kubernetes.io/router.entrypoints: web,websecure # Конфигурация записи маршрутизации Traefik
spec:
rules:
- host: blog.eg.cn # Определите имя домена для доступа к Ingress
http:
paths:
- path: / # Соответствующий путь: /
pathType: Prefix # Тип пути соответствует префиксу
backend:
service:
name: *name # Ссылка на имя службы, указанное точкой привязки.
port:
name: http # Ссылка на имя порта, указанное привязкой
tls:
- secretName: default # Используйте пару ключей сертификата TLS с именем default для доступа по HTTPS.
Скопируйте и измените файл конфигурации так же, как при создании MySQL, чтобы успешно его построить.
Во-первых, после преобразования имени домена в соответствующий IP-адрес модуля, получите доступ к нему напрямую, используя имя домена. Если доступ прошел успешно, блог будет успешно создан, после чего перейдем к следующему этапу установки согласно подсказкам.
намекать
Рекомендуется выбрать тот, который я отметил здесь.
Kubernetes предоставляет мощные функции обеспечения высокой доступности, которые позволяют автоматически управлять экземплярами контейнеров и планировать их работу, чтобы приложения всегда были доступны в кластере. Он также может отслеживать и автоматически восстанавливать неисправные экземпляры контейнеров, чтобы повысить стабильность и надежность блога. Его функция эластичного расширения может автоматически корректировать программу в соответствии с изменениями нагрузки. Когда трафик блога увеличивается, Kubernetes может автоматически масштабировать количество экземпляров приложения в соответствии с потребностями и автоматически сокращать использование ресурсов при падении трафика. Если вы найдете другие его возможности и функции, вы можете обсудить это со мной! Или если есть подобные программы, поделитесь!