Облачное развертывание приложений MySQL в кластере Kubernetes
Облачное развертывание приложений MySQL в кластере Kubernetes

@TOC

1. Введение в MySQL

База данных — это хранилище, которое организует, хранит и управляет данными в соответствии со структурой данных. MySQL — это система управления реляционными базами данных с открытым исходным кодом, которая хранит данные в разных таблицах вместо размещения всех данных в одном большом хранилище, что обеспечивает более быстрый доступ и повышенную гибкость. MySQL использует стандартную форму языка SQL. Поддерживает большие базы данных и может обрабатывать большие базы данных с десятками миллионов записей. MySQL также может использоваться в различных системах и поддерживает несколько языков.

2. Введение в кластер Kubernetes

1.k8s введение

Kubernetes, или сокращенно K8s, — это аббревиатура, полученная путем замены восьми символов «ubernete» в середине имени на 8. Это открытый исходный код, который используется для управления контейнерными приложениями на нескольких хостах облачной платформы. Цель Kubernetes — сделать развертывание контейнерных приложений простым и эффективным (мощным). Kubernetes обеспечивает развертывание, планирование, обновление и обслуживание приложений. . механизм.

Схема архитектуры 2.k8s

Схема архитектуры кластера Kubernetes

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

3. Знакомство с этой практикой

1. Знакомство с этой практикой

1. Быстро разверните службу приложений MySQL в кластерной среде k8s, а также тестируйте и обучайтесь в личной среде;

2. Эта тренировочная среда является личной средой, поэтому используйте ее с осторожностью в производственной среде;

3. В этом случае информация об учетной записи базы данных записывается непосредственно в файл yaml, чтобы обеспечить максимально быстрое развертывание тестовой службы базы данных;

4. Если безопасность вызывает беспокойство, вы можете использовать объект ресурса k8s Secret, чтобы сохранить информацию об учетной записи и пароле базы данных, чтобы повысить безопасность базы данных;

2. Этот экологический план

Введение в среду планирования для этой практики

hostname

IP-адрес

Версия операционной системы

версия k8s

Роль

k8s-master

192.168.3.201

centos7.6

v1.23.1

главный узел

k8s-node01

192.168.3.202

centos7.6

v1.23.1

рабочий узел

k8s-node02

192.168.3.203

centos7.6

v1.23.1

рабочий узел

3. Проверьте локальную среду кластера k8s.

1. Проверьте состояние каждого узла k8s.

Проверьте состояние каждого узла k8s, чтобы убедиться, что состояние каждого узла в кластере k8s нормальное.

Язык кода:shell
копировать
[root@k8s-master ~]# kubectl get nodes 
NAME         STATUS   ROLES                  AGE    VERSION
k8s-master   Ready    control-plane,master   130d   v1.23.1
k8s-node01   Ready    <none>                 130d   v1.23.1
k8s-node02   Ready    <none>                 130d   v1.23.1

2. Проверьте версию k8s

Проверьте версию k8s и обратите внимание на совместимые k8s при развертывании приложения.

Язык кода:shell
копировать
[root@k8s-master ~]# kubectl version --short 
Client Version: v1.23.1
Server Version: v1.23.1

3. Проверьте состояние системного модуля k8s.

Проверьте состояние системных модулей кластера k8s, чтобы убедиться, что все системные модули работают нормально.

Язык кода:shell
копировать
[root@k8s-master ~]# kubectl get pods -n kube-system 
NAME                                       READY   STATUS    RESTARTS     AGE
calico-kube-controllers-7bc6547ffb-2nf66   1/1     Running   1 (8d ago)   130d
calico-node-8c4pn                          1/1     Running   1 (8d ago)   130d
calico-node-f28qq                          1/1     Running   1 (8d ago)   130d
calico-node-wmc2j                          1/1     Running   1 (8d ago)   130d
coredns-6d8c4cb4d-6gm4x                    1/1     Running   1 (8d ago)   130d
coredns-6d8c4cb4d-7vxlz                    1/1     Running   1 (8d ago)   130d
etcd-k8s-master                            1/1     Running   1 (8d ago)   130d
kube-apiserver-k8s-master                  1/1     Running   1 (8d ago)   130d
kube-controller-manager-k8s-master         1/1     Running   1 (8d ago)   130d
kube-proxy-8dfw8                           1/1     Running   1 (8d ago)   130d
kube-proxy-ghzrv                           1/1     Running   1 (8d ago)   130d
kube-proxy-j867z                           1/1     Running   1 (8d ago)   130d
kube-scheduler-k8s-master                  1/1     Running   1 (8d ago)   130d

4. Отредактируйте файл mysql.yaml.

Отредактируйте mysql.yaml. Этот файл развертывает службу приложения MySQL самым простым способом.

Язык кода:yaml
копировать
[root@k8s-master mysql]# cat mysql.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: mysql
  name: my-mysql
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mysql
  template:
    metadata:
      labels:
         app: mysql
    spec:
      containers: # определить часть контейнера
      - image: mysql:5.7
        name: mysql
        ports:
         - containerPort: 3306
        env:
         - name: MYSQL_ROOT_PASSWORD
           value: "123456"
---
apiVersion: v1
kind: Service
metadata:
  name: my-db
spec:
  ports:
      - port: 3306
        nodePort: 30011
  selector:
      app: mysql
  type: NodePort 

5. Создайте приложение MySQL.

1. Примените mysql.yaml.

Используйте файл mysql.yaml для быстрого создания и развертывания службы базы данных.

Язык кода:shell
копировать
[root@k8s-master mysql]# kubectl apply -f mysql.yaml 
deployment.apps/my-mysql created
service/my-db created

2. Проверьте статус модуля

Проверьте, нормально ли работает модуль, и убедитесь, что модуль работает нормально. Если работа работает ненормально, неисправность можно определить на основе информации журнала модуля.

Язык кода:shell
копировать
[root@k8s-master ~]# kubectl get pods
NAME                      READY   STATUS    RESTARTS   AGE
my-mysql-9b877f47-nqf5f   1/1     Running   0          7m54s

6. Просмотр IP-адреса службы MySQL

Проверьте объект ресурса svc и убедитесь, что порт внешнего доступа MySQL равен 30011.

Язык кода:shell
копировать
[root@k8s-master ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP          130d
my-db        NodePort    10.98.200.79   <none>        3306:30011/TCP   8m32s

7. Удаленный доступ внешнего клиента к MySQL

Удаленно подключитесь к службе MySQL и войдите в базу данных MySQL, чтобы обеспечить нормальный вход.

Язык кода:shell
копировать
[root@server ~]# mysql -h 192.168.3.202 -P30011 -uroot -p123456
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> 

8. Краткое описание этой практики

1. Эта практика основана на предыдущих учебных заметках, когда я был новичком в k8s, и предназначена для того, чтобы помочь новичкам быстро развернуть приложение MySQL;

2. Хранилище MySQL может настроить постоянное хранилище для сохранения данных и использовать класс хранилища для настройки постоянного хранилища;

3. С точки зрения безопасности можно настроить секреты для обеспечения безопасности базы данных;

4. Вы также можете настроить контейнер инициализации, чтобы проверить, является ли рабочая среда модуля нормальной;

5. Для этого файла yaml можно добавлять и постоянно оптимизировать и обновлять дополнительные функции и расширенные возможности;

6. Файл yaml этого упражнения можно использовать в качестве базового шаблона для обучения новичков в будущем.

Я участвую в третьем этапе специального тренировочного лагеря Tencent Technology Creation 2023 с эссе, получившими приз, и сформирую команду, которая разделит приз!

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose