@TOC
База данных — это хранилище, которое организует, хранит и управляет данными в соответствии со структурой данных. MySQL — это система управления реляционными базами данных с открытым исходным кодом, которая хранит данные в разных таблицах вместо размещения всех данных в одном большом хранилище, что обеспечивает более быстрый доступ и повышенную гибкость. MySQL использует стандартную форму языка SQL. Поддерживает большие базы данных и может обрабатывать большие базы данных с десятками миллионов записей. MySQL также может использоваться в различных системах и поддерживает несколько языков.
Kubernetes, или сокращенно K8s, — это аббревиатура, полученная путем замены восьми символов «ubernete» в середине имени на 8. Это открытый исходный код, который используется для управления контейнерными приложениями на нескольких хостах облачной платформы. Цель Kubernetes — сделать развертывание контейнерных приложений простым и эффективным (мощным). Kubernetes обеспечивает развертывание, планирование, обновление и обслуживание приложений. . механизм.
Схема архитектуры кластера Kubernetes
1. Быстро разверните службу приложений MySQL в кластерной среде k8s, а также тестируйте и обучайтесь в личной среде;
2. Эта тренировочная среда является личной средой, поэтому используйте ее с осторожностью в производственной среде;
3. В этом случае информация об учетной записи базы данных записывается непосредственно в файл yaml, чтобы обеспечить максимально быстрое развертывание тестовой службы базы данных;
4. Если безопасность вызывает беспокойство, вы можете использовать объект ресурса k8s Secret, чтобы сохранить информацию об учетной записи и пароле базы данных, чтобы повысить безопасность базы данных;
Введение в среду планирования для этой практики
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 | рабочий узел |
Проверьте состояние каждого узла k8s, чтобы убедиться, что состояние каждого узла в кластере k8s нормальное.
[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
Проверьте версию k8s и обратите внимание на совместимые k8s при развертывании приложения.
[root@k8s-master ~]# kubectl version --short
Client Version: v1.23.1
Server Version: v1.23.1
Проверьте состояние системных модулей кластера k8s, чтобы убедиться, что все системные модули работают нормально.
[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
Отредактируйте mysql.yaml. Этот файл развертывает службу приложения MySQL самым простым способом.
[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
Используйте файл mysql.yaml для быстрого создания и развертывания службы базы данных.
[root@k8s-master mysql]# kubectl apply -f mysql.yaml
deployment.apps/my-mysql created
service/my-db created
Проверьте, нормально ли работает модуль, и убедитесь, что модуль работает нормально. Если работа работает ненормально, неисправность можно определить на основе информации журнала модуля.
[root@k8s-master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
my-mysql-9b877f47-nqf5f 1/1 Running 0 7m54s
Проверьте объект ресурса svc и убедитесь, что порт внешнего доступа MySQL равен 30011.
[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
Удаленно подключитесь к службе MySQL и войдите в базу данных MySQL, чтобы обеспечить нормальный вход.
[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>
1. Эта практика основана на предыдущих учебных заметках, когда я был новичком в k8s, и предназначена для того, чтобы помочь новичкам быстро развернуть приложение MySQL;
2. Хранилище MySQL может настроить постоянное хранилище для сохранения данных и использовать класс хранилища для настройки постоянного хранилища;
3. С точки зрения безопасности можно настроить секреты для обеспечения безопасности базы данных;
4. Вы также можете настроить контейнер инициализации, чтобы проверить, является ли рабочая среда модуля нормальной;
5. Для этого файла yaml можно добавлять и постоянно оптимизировать и обновлять дополнительные функции и расширенные возможности;
6. Файл yaml этого упражнения можно использовать в качестве базового шаблона для обучения новичков в будущем.
Я участвую в третьем этапе специального тренировочного лагеря Tencent Technology Creation 2023 с эссе, получившими приз, и сформирую команду, которая разделит приз!