Практическое использование Kubernetes (K8S) для быстрого создания личного блога Typecho
Практическое использование Kubernetes (K8S) для быстрого создания личного блога Typecho

Kubernetes (K8S) быстро создает личный блог typecho

1. Подготовка

Кластерная среда K8S,Справочник по созданию учебникаTencent Cloud Lighthouse создает межрегиональный кластер Kubernetes

Кластерная панель K8S,Справочник по созданию учебникаУстановка и использование панели управления кластером Kubernetes. - Блог Цинъяна — личный блог компьютерного энтузиаста (hipyt.cn)

Уведомление

Если кластера нет или недостаточно серверов, вы можете приобрести новый через портал.

Tencent Cloud легкий сервер приложений Адрес покупки:портал

2. Инструкции по развертыванию

Примечание. Учебное пособие в этой статье основано на кластере Kubernetes. Создается панель управления kuboard, а затем выполняется учебное пособие по созданию блога Typecho.

Адрес соответствующего образа Docker, используемого в этой статье, следующий:

MySQL:mysql - Official Image | Docker Hub

typecho:rehiy/typecho - Docker Image | Docker Hub

3. Создайте базу данных MySQL.

3.1 файл конфигурации MySQL

Язык кода:txt
копировать
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.

3.2 Создайте службу MySQL, используя файл конфигурации.

Введите описание изображения
Введите описание изображения
Введите описание изображения
Введите описание изображения
Введите описание изображения
Введите описание изображения

Измените приведенную выше конфигурацию yaml, скопируйте и вставьте ее сюда, чтобы отправить напрямую.

Введите описание изображения
Введите описание изображения

Это означает, что служба MySQL успешно создана. Нажмите, чтобы просмотреть конкретную информацию.

4. Создайте шрифт

4.1 файл конфигурации MySQL

Язык кода:txt
копировать
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.

4.2. Создайте блог Typecho, используя файлы конфигурации.

Введите описание изображения
Введите описание изображения
Введите описание изображения
Введите описание изображения

Скопируйте и измените файл конфигурации так же, как при создании MySQL, чтобы успешно его построить.

4. Тестовое использование

Во-первых, после преобразования имени домена в соответствующий IP-адрес модуля, получите доступ к нему напрямую, используя имя домена. Если доступ прошел успешно, блог будет успешно создан, после чего перейдем к следующему этапу установки согласно подсказкам.

намекать

Введите описание изображения
Введите описание изображения

Рекомендуется выбрать тот, который я отметил здесь.

Введите описание изображения
Введите описание изображения

5. Резюме

Kubernetes предоставляет мощные функции обеспечения высокой доступности, которые позволяют автоматически управлять экземплярами контейнеров и планировать их работу, чтобы приложения всегда были доступны в кластере. Он также может отслеживать и автоматически восстанавливать неисправные экземпляры контейнеров, чтобы повысить стабильность и надежность блога. Его функция эластичного расширения может автоматически корректировать программу в соответствии с изменениями нагрузки. Когда трафик блога увеличивается, Kubernetes может автоматически масштабировать количество экземпляров приложения в соответствии с потребностями и автоматически сокращать использование ресурсов при падении трафика. Если вы найдете другие его возможности и функции, вы можете обсудить это со мной! Или если есть подобные программы, поделитесь!

boy illustration
5 шагов для установки среды протокола
boy illustration
Наиболее полные коды состояния HTTP
boy illustration
На основе языка Go мы шаг за шагом научим вас внедрять структуру системы управления серверной частью.
boy illustration
Эффективное управление журналами с помощью Spring Boot и Log4j2: подробное объяснение конфигурации
boy illustration
Что делать, если telnet не является внутренней или внешней командой [легко понять]
boy illustration
php-объект для анализа json_php json
boy illustration
Введение в принцип запуска Springboot, процесс запуска и механизм запуска.
boy illustration
Высокоуровневые операции Mongo, если данные не существуют, вставка и обновление, если они существуют (pymongo)
boy illustration
Проектирование и внедрение системы управления электронной коммерцией на базе Vue и SpringBoot.
boy illustration
Статья длиной в 9000 слов знакомит вас с процессом запуска SpringBoot — самым подробным процессом запуска SpringBoot в истории — с изображениями и текстом.
boy illustration
Как настроить размер экрана в PR. Учебное пособие по настройке размера видео в PR [подробное объяснение]
boy illustration
Элегантный и мощный: упростите операции ElasticSearch с помощью easy-es
boy illustration
Проект аутентификации по микросервисному токену: концепция и практика
boy illustration
【Java】Решено: org.springframework.http.converter.HttpMessageNotWritableException.
boy illustration
Изучите Kimi Smart Assistant: как использовать сверхдлинный текст, чтобы открыть новую сферу эффективной обработки информации
boy illustration
Начало работы с Docker: использование томов данных и монтирования файлов для хранения и совместного использования данных
boy illustration
Использование Python для реализации автоматической публикации статей в публичном аккаунте WeChat
boy illustration
Разберитесь в механизме и принципах взаимодействия потребителя и брокера Kafka в одной статье.
boy illustration
Spring Boot — использование Resilience4j-Circuitbreaker для реализации режима автоматического выключателя_предотвращения каскадных сбоев
boy illustration
13. Springboot интегрирует Protobuf
boy illustration
Примечание. Инструмент управления батареями Dell Dell Power Manager
boy illustration
Общая интерпретация класса LocalDate [java]
boy illustration
[Базовые знания ASP.NET Core] -- Веб-API -- Создание и настройка веб-API (1)
boy illustration
Настоящий бой! Подключите Passkey к своему веб-сайту для безопасного входа в систему без пароля.
boy illustration
Руководство по настройке Nginx: как найти, интерпретировать и оптимизировать настройки Nginx в Linux
boy illustration
Typecho отображает использование памяти сервера
boy illustration
Как вставить элемент перед указанным ключом в ассоциативный массив в PHP
boy illustration
swagger2 экспортирует API как текстовый документ (реализация Java) [легко понять]
boy illustration
Выбор фреймворка nodejs Express koa egg MidwayJS сравнение NestJS
boy illustration
Руководство по загрузке, установке и использованию SVN «Рекомендуемая коллекция»