Đánh giá nhanh
-
- Môi trường hiện tại
-
- Cài đặt mysql-5.7.37
-
- Cấu hình K3S sử dụng MySQL làm cơ sở dữ liệu
-
- Tập lệnh cài đặt MySQL tự động
-
- Sử dụng tập lệnh cài đặt chính thức của K3S với MySQL làm backend
- Môi trường hiện tại =====================
K3S - Phiên bản V1.22.5 được cài đặt trên cụm
Cài đặt đơn node K3S-v1.22.5 (dạng tập lệnh, kèm tập lệnh cài đặt tự động)
Ở đây sử dụng môi trường K3S cài đặt trên một node duy nhất chỉ có master: 192.168.10.20
[root@c7-1 ~]#cat k3s.sh
#!/bin/bash
# Định nghĩa biến
local_ip=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"|head -n 1`
# Cấu hình môi trường
systemctl stop firewalld && systemctl disable firewalld && iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
sed -ri 's/.*swap.*/#&/' /etc/fstab
swapoff -a
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.proxy_arp = 1" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
yum install ntpdate -y && ntpdate time.windows.com
# Cài đặt docker
yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
yum -y install yum-utils device-mapper-persistemt-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce docker-ce-cli containerd.io
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://4iv7219l.mirror.aliyuncs.com"]
}
EOF
grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
sudo systemctl daemon-reload
sysctl -p
systemctl enable docker && systemctl restart docker
# Cài đặt k3s
wget http://49.232.8.65/k3s/v1.22.5/k3s -O /usr/local/bin/k3s && chmod +x /usr/local/bin/k3s
yum -y install epel-release https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
yum -y install yum-plugin-elrepo
yum -y install kmod-wireguard wireguard-tools
touch /etc/systemd/system/k3s.service.env
cat > /etc/systemd/system/k3s.service <<EOF
[Unit]
Description=Lightweight Kubernetes
Documentation=https://k3s.io
Wants=network-online.target
[Install]
WantedBy=multi-user.target
[Service]
Type=notify
EnvironmentFile=-/etc/systemd/system/k3s.service.env
KillMode=process
Delegate=yes
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
TimeoutStartSec=0
Restart=always
RestartSec=5s
ExecStartPre=-/sbin/modprobe br_netfilter
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/k3s server --docker --no-deploy traefik
EOF
systemctl enable k3s --now
ln -s /usr/local/bin/k3s /usr/local/bin/kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/kubelet.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
systemctl status k3s
systemctl status docker
kubectl get nodes -o wide
[root@c7-1 ~]#bash k3s.sh &> /dev/null
[root@c7-1 ~]#kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
c7-1 Ready control-plane,master 12m v1.22.5+k3s1 192.168.10.20 <none> CentOS Linux 7 (Core) 3.10.0-1062.el7.x86_64 docker://20.10.17
[root@c7-1 ~]#kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system metrics-server-9cf544f65-tp47x 1/1 Running 0 12m
kube-system coredns-85cb69466-w6tjq 1/1 Running 0 12m
kube-system local-path-provisioner-64ffb68fd-zfns8 1/1 Running 0 12m
- Cài đặt mysql-5.7.37 ====================
Tải về:
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz
wget http://49.232.8.65/mysql-5.7/mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz
Cài đặt
rpm -qa | grep mysql
rpm -qa | grep mariadb
yum -y remove mariadb mysql*
yum -y install wget vim
-------------------------------
[root@c7-1 ~]#ls
k3s.sh mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz
[root@c7-1 ~]#tar zxvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz
......
[root@c7-1 ~]#ls
k3s.sh mysql-5.7.37-linux-glibc2.12-x86_64 mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz
[root@c7-1 ~]#mv mysql-5.7.37-linux-glibc2.12-x86_64 /usr/local/mysql5.7.37/
[root@c7-1 ~]#ll /usr/local/mysql5.7.37/
Tổng cộng 272
drwxr-xr-x 2 root root 4096 7月 4 13:55 bin
drwxr-xr-x 2 root root 55 7月 4 13:55 docs
drwxr-xr-x 3 root root 4096 7月 4 13:55 include
drwxr-xr-x 5 root root 230 7月 4 13:55 lib
-rw-r--r-- 1 7161 31415 259253 11月 30 2021 LICENSE
drwxr-xr-x 28 root root 4096 7月 4 13:55 share
drwxr-xr-x 2 root root 90 7月 4 13:55 support-files
[root@c7-1 ~]#groupadd mysql
[root@c7-1 ~]#useradd -r -g mysql mysql
[root@c7-1 ~]#mkdir -p /data/mysql
[root@c7-1 ~]#chown mysql:mysql -R /data/mysql
[root@c7-1 ~]#vim /etc/my.cnf
[root@c7-1 ~]#cat /etc/my.cnf
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/usr/local/mysql5.7.37
datadir=/data/mysql
socket=/tmp/mysql.sock
symbolic-links=0
explicit_defaults_for_timestamp=true
character_set_server=utf8mb4
[mysqld_safe]
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
!includedir /etc/my.cnf.d
[root@c7-1 ~]#cd /usr/local/mysql5.7.37/bin/
### Khởi tạo và lấy mật khẩu
[root@c7-1 /usr/local/mysql5.7.37/bin]#./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql5.7.37/ --datadir=/data/mysql/ --user=mysql --initialize
2022-07-04T06:16:54.696189Z 0 [Warning] InnoDB: New log files created, LSN=45790
2022-07-04T06:16:54.726164Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2022-07-04T06:16:54.783186Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: e6b70fe2-fb60-11ec-8b81-000c294404bf.
2022-07-04T06:16:54.784227Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2022-07-04T06:16:55.314692Z 0 [Warning] A deprecated TLS version TLSv1 is enabled. Please use TLSv1.2 or higher.
2022-07-04T06:16:55.314709Z 0 [Warning] A deprecated TLS version TLSv1.1 is enabled. Please use TLSv1.2 or higher.
2022-07-04T06:16:55.321026Z 0 [Warning] CA certificate ca.pem is self signed.
2022-07-04T06:16:55.904729Z 1 [Note] A temporary password is generated for root@localhost: v?V<*ivir0Gz
### Khởi động mysql và thay đổi mật khẩu root
[root@c7-1 ~]#cp /usr/local/mysql5.7.37/support-files/mysql.server /etc/init.d/mysql
# Khởi động
[root@c7-1 ~]#service mysql start
Starting MySQL.Logging to '/data/mysql/mysql.err'.
SUCCESS!
[root@c7-1 ~]#ps -ef | grep mysql
root 99200 1 0 14:19 pts/1 00:00:00 /bin/sh /usr/local/mysql5.7.37/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/c7-1.pid
mysql 99425 99200 1 14:19 pts/1 00:00:00 /usr/local/mysql5.7.37/bin/mysqld --basedir=/usr/local/mysql5.7.37 --datadir=/data/mysql --plugin-dir=/usr/local/mysql5.7.37/lib/plugin --user=mysql --log-error=/data/mysql/mysql.err --pid-file=/data/mysql/c7-1.pid --socket=/tmp/mysql.sock --port=3306
root 99531 3295 0 14:20 pts/1 00:00:00 grep --color-auto mysql
# Thay đổi mật khẩu
[root@c7-1 /usr/local/mysql5.7.37/bin]#./mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.37
mysql> SET PASSWORD = PASSWORD('120604');
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
# Tạo liên kết mềm
[root@c7-1 /usr/local/mysql5.7.37/bin]#ln -s /usr/local/mysql5.7.37/bin/mysql /usr/local/bin/
[root@c7-1 /usr/local/mysql5.7.37/bin]#cd
[root@c7-1 ~]#mysql -uroot -p
......
- K3S sử dụng MySQL làm cơ sở dữ liệu ==================================
Cấp quyền truy cập MySQL từ xa
[root@c7-1 ~]#mysql -uroot -p
......
mysql> grant all privileges on *.* to 'root'@'%' identified by '120604' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mysql> exit
Bye
Tạo cơ sở dữ liệu k3s
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql> create database k3s;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| k3s |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
Chỉnh sửa k3s.service và khởi động lại
[root@c7-1 ~]#vim /etc/systemd/system/k3s.service
[root@c7-1 ~]#cat /etc/systemd/system/k3s.service
[Unit]
Description=Lightweight Kubernetes
Documentation=https://k3s.io
Wants=network-online.target
[Install]
WantedBy=multi-user.target
[Service]
Type=notify
EnvironmentFile=-/etc/systemd/system/k3s.service.env
KillMode=process
Delegate=yes
LimitNOFILE=1048576
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
TimeoutStartSec=0
Restart=always
RestartSec=5s
ExecStartPre=-/sbin/modprobe br_netfilter
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/local/bin/k3s server --docker --no-deploy traefik --datastore-endpoint=mysql://root:120604@tcp(192.168.10.20:3306)/k3s
[root@c7-1 ~]#systemctl daemon-reload
[root@c7-1 ~]#systemctl restart k3s
[root@c7-1 ~]#systemctl status k3s | grep active
Active: active (running) since 一 2022-07-04 16:42:54 CST; 5min ago
[root@c7-1 ~]#mysql -uroot -p120604
......
mysql> use k3s;
Reading table information for completion of table and column names
Database changed
mysql> show tables;
+---------------+
| Tables_in_k3s |
+---------------+
| kine |
+---------------+
1 row in set (0.00 sec)
- Tập lệnh cài đặt MySQL tự động ==============================
#!/bin/bash
## Có thể đặt gói phần mềm trong thư mục /opt để tránh thời gian tải xuống quá dài
function loginfo() {
if [[ $? -eq 0 ]];then
echo -e "\033[32m[INFO][$(date +"%F %T")] $1 thành công! \033[0m"
else
echo -e "\033[31m[ERROR][$(date +"%F %T")] $1 thất bại! \033[0m"
fi
}
function install_mysql() {
echo -e "\033[32mBắt đầu cài đặt mysql V5.7.37 ...\033[0m"
# Cài đặt phụ thuộc
sudo yum install libaio -y >/dev/null 2>&1
loginfo "cài đặt libaio"
BASE_DIR=$(pwd)
MYSQL_PKG_PATH=$BASE_DIR/mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz
DEPLOY_PATH="/opt"
USER=$(whoami)
GROUP=$(groups)
MYSQL_URL="http://49.232.8.65/mysql-5.7/mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz"
# Tải xuống, giải nén và tạo thư mục
echo -e "\033[32mBắt đầu tải mysql V5.7.37 ...\033[0m"
if [[ -f ${DEPLOY_PATH}/mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz ]];then
sudo tar xf ${DEPLOY_PATH}/mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz -C ${DEPLOY_PATH}/
else
sudo curl -o ${DEPLOY_PATH}/mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz ${MYSQL_URL} >/dev/null 2>&1 && sudo tar xf ${DEPLOY_PATH}/mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz -C ${DEPLOY_PATH}/
fi
loginfo "tải phần mềm mysql"
if [[ -d ${DEPLOY_PATH}/mysql ]];then
rm -rf ${DEPLOY_PATH}/mysql
fi
sudo ln -s ${DEPLOY_PATH}/mysql-5.7.37-linux-glibc2.12-x86_64 ${DEPLOY_PATH}/mysql
loginfo "tạo liên kết mềm thư mục mysql"
if [[ -d /data/mysql ]];then
rm -rf /data/mysql
fi
sudo mkdir -p /data/mysql
loginfo "tạo thư mục dữ liệu mysql"
# Chỉnh sửa tập lệnh khởi động
sudo sed -i '46s#basedir=#basedir=/opt/mysql#' ${DEPLOY_PATH}/mysql/support-files/mysql.server
sudo sed -i '47s#datadir=#datadir=/data/mysql#' ${DEPLOY_PATH}/mysql/support-files/mysql.server
sudo cp ${DEPLOY_PATH}/mysql/support-files/mysql.server /etc/init.d/mysqld
sudo chmod 755 /etc/init.d/mysqld
# Tạo người dùng
if ! grep -q '^mysql:' /etc/group
then
sudo groupadd mysql
loginfo "tạo người dùng mysql"
fi
if ! grep -q '^mysql:' /etc/passwd
then
sudo useradd -r -g mysql -s /bin/false mysql
loginfo "tạo nhóm mysql"
fi
# Cấp quyền cho thư mục data và base
sudo chown -R ${USER}.${GROUP} ${DEPLOY_PATH}/mysql/
sudo chown -R ${USER}.${GROUP} /data/
if [ ! -f /usr/bin/mysql ]
then
sudo ln -s /opt/mysql/bin/mysql /usr/bin/
fi
# Tạo tệp cấu hình
if [ -f /etc/my.cnf ]
then
sudo rm -f /etc/my.cnf
fi
sudo bash -c "cat >> /etc/my.cnf" <<EOF
[mysqld]
datadir = /data/mysql
basedir = /opt/mysql
port = 3306
socket = /data/mysql/mysql.sock
pid-file = /data/mysql/mysql.pid
max_connections = 8000
max_connect_errors = 100000
max_user_connections = 3000
check_proxy_users = on
mysql_native_password_proxy_users = on
local_infile = OFF
symbolic-links = FALSE
group_concat_max_len = 4294967295
max_join_size = 18446744073709551615
max_execution_time = 20000
lock_wait_timeout = 60
autocommit = 1
lower_case_table_names = 1
thread_cache_size = 64
disabled_storage_engines = "MyISAM,FEDERATED"
character_set_server = utf8mb4
character-set-client-handshake = FALSE
collation_server = utf8mb4_general_ci
init_connect = 'SET NAMES utf8mb4'
transaction-isolation = "READ-COMMITTED"
explicit_defaults_for_timestamp = ON
log_timestamps = SYSTEM
local_infile = OFF
event_scheduler = OFF
query_cache_type = OFF
query_cache_size = 0
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO
log_error = /data/mysql/mysql.err
slow_query_log = ON
slow_query_log_file = /data/mysql/slow.log
long_query_time = 1
general_log = OFF
general_log_file = /data/mysql/general.log
expire_logs_days = 99
log-bin = /data/mysql/mysql-bin
log-bin-index = /data/mysql/mysql-bin.index
max_binlog_size = 500M
binlog_format = mixed
binlog_rows_query_log_events = ON
binlog_cache_size = 128k
binlog_stmt_cache_size = 128k
log-bin-trust-function-creators = 1
max_binlog_cache_size = 2G
max_binlog_stmt_cache_size = 2G
relay_log = /data/mysql/relay
relay_log_index = /data/mysql/relay.index
max_relay_log_size = 500M
relay_log_purge = ON
relay_log_recovery = ON
server_id = 1
read_buffer_size = 1M
read_rnd_buffer_size = 2M
sort_buffer_size = 64M
join_buffer_size = 64M
tmp_table_size = 64M
max_allowed_packet = 128M
max_heap_table_size = 64M
connect_timeout = 43200
wait_timeout = 43200
back_log = 512
interactive_timeout = 300
net_read_timeout = 30
net_write_timeout = 30
skip_external_locking = ON
key_buffer_size = 16M
bulk_insert_buffer_size = 16M
concurrent_insert = ALWAYS
open_files_limit = 65000
table_open_cache = 16000
table_definition_cache = 16000
default_storage_engine = InnoDB
default_tmp_storage_engine = InnoDB
internal_tmp_disk_storage_engine = InnoDB
[client]
socket = /data/mysql/mysql.sock
default_character_set = utf8mb4
[mysql]
default_character_set = utf8mb4
[ndatad default]
TransactionDeadLockDetectionTimeOut = 20000
EOF
sudo chown -R ${USER}.${GROUP} /etc/my.cnf
loginfo "cấu hình my.cnf"
# Khởi tạo
${DEPLOY_PATH}/mysql/bin/mysqld --initialize --user=mysql --basedir=${DEPLOY_PATH}/mysql --datadir=/data/mysql
loginfo "khởi tạo mysql"
# Lọc mật khẩu ban đầu
mysql_passwd=$(grep 'A temporary password is generated' /data/mysql/mysql.err |awk '{print $NF}')
# Khởi động dịch vụ
/etc/init.d/mysqld start
loginfo "khởi động mysqld"
# Thay đổi mật khẩu ban đầu
${DEPLOY_PATH}/mysql/bin/mysqladmin -uroot -p${mysql_passwd} password '120604'
if [ $? -ne 0 ];then
loginfo "khởi tạo mật khẩu root"
fi
# Biến môi trường client
echo "export PATH=\$PATH:${DEPLOY_PATH}/mysql/bin" | sudo tee /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
loginfo "cấu hình môi trường"
}
install_mysql
- Sử dụng tập lệnh cài đặt chính thức của K3S với MySQL làm backend =================================================================
Tập lệnh cài đặt tự động
#!/bin/bash
# Định nghĩa biến
local_ip=`hostname -I | awk '{print $1}'`
### Cấu hình môi trường
systemctl stop firewalld && systemctl disable firewalld && iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X
sed -i 's/enforcing/disabled/' /etc/selinux/config
setenforce 0
sed -ri 's/.*swap.*/#&/' /etc/fstab
swapoff -a
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.proxy_arp = 1" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
yum install ntpdate -y && ntpdate time.windows.com
### Cài đặt docker
yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
yum -y install yum-utils device-mapper-persistemt-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum -y install docker-ce docker-ce-cli containerd.io
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://4iv7219l.mirror.aliyuncs.com"]
}
EOF
grubby --args="user_namespace.enable=1" --update-kernel="$(grubby --default-kernel)"
sudo systemctl daemon-reload
sysctl -p
systemctl enable docker && systemctl restart docker
### Cài đặt mysql-5.7.37, tham khảo các bước trên
function loginfo() {
if [[ $? -eq 0 ]];then
echo -e "\033[32m[INFO][$(date +"%F %T")] $1 thành công! \033[0m"
else
echo -e "\033[31m[ERROR][$(date +"%F %T")] $1 thất bại! \033[0m"
fi
}
function install_mysql() {
echo -e "\033[32mBắt đầu cài đặt mysql V5.7.37 ...\033[0m"
# Cài đặt phụ thuộc
sudo yum install libaio -y >/dev/null 2>&1
loginfo "cài đặt libaio"
BASE_DIR=$(pwd)
MYSQL_PKG_PATH=$BASE_DIR/mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz
DEPLOY_PATH="/opt"
USER=$(whoami)
GROUP=$(groups)
MYSQL_URL="http://49.232.8.65/mysql-5.7/mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz"
# Tải xuống, giải nén và tạo thư mục
echo -e "\033[32mBắt đầu tải mysql V5.7.37 ...\033[0m"
if [[ -f ${DEPLOY_PATH}/mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz ]];then
sudo tar xf ${DEPLOY_PATH}/mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz -C ${DEPLOY_PATH}/
else
sudo curl -o ${DEPLOY_PATH}/mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz ${MYSQL_URL} >/dev/null 2>&1 && sudo tar xf ${DEPLOY_PATH}/mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz -C ${DEPLOY_PATH}/
fi
loginfo "tải phần mềm mysql"
if [[ -d ${DEPLOY_PATH}/mysql ]];then
rm -rf ${DEPLOY_PATH}/mysql
fi
sudo ln -s ${DEPLOY_PATH}/mysql-5.7.37-linux-glibc2.12-x86_64 ${DEPLOY_PATH}/mysql
loginfo "tạo liên kết mềm thư mục mysql"
if [[ -d /data/mysql ]];then
rm -rf /data/mysql
fi
sudo mkdir -p /data/mysql
loginfo "tạo thư mục dữ liệu mysql"
# Chỉnh sửa tập lệnh khởi động
sudo sed -i '46s#basedir=#basedir=/opt/mysql#' ${DEPLOY_PATH}/mysql/support-files/mysql.server
sudo sed -i '47s#datadir=#datadir=/data/mysql#' ${DEPLOY_PATH}/mysql/support-files/mysql.server
sudo cp ${DEPLOY_PATH}/mysql/support-files/mysql.server /etc/init.d/mysqld
sudo chmod 755 /etc/init.d/mysqld
# Tạo người dùng
if ! grep -q '^mysql:' /etc/group
then
sudo groupadd mysql
loginfo "tạo người dùng mysql"
fi
if ! grep -q '^mysql:' /etc/passwd
then
sudo useradd -r -g mysql -s /bin/false mysql
loginfo "tạo nhóm mysql"
fi
# Cấp quyền cho thư mục data và base
sudo chown -R ${USER}.${GROUP} ${DEPLOY_PATH}/mysql/
sudo chown -R ${USER}.${GROUP} /data/
if [ ! -f /usr/bin/mysql ]
then
sudo ln -s /opt/mysql/bin/mysql /usr/bin/
fi
# Tạo tệp cấu hình
if [ -f /etc/my.cnf ]
then
sudo rm -f /etc/my.cnf
fi
sudo bash -c "cat >> /etc/my.cnf" <<EOF
[mysqld]
datadir = /data/mysql
basedir = /opt/mysql
port = 3306
socket = /data/mysql/mysql.sock
pid-file = /data/mysql/mysql.pid
max_connections = 8000
max_connect_errors = 100000
max_user_connections = 3000
check_proxy_users = on
mysql_native_password_proxy_users = on
local_infile = OFF
symbolic-links = FALSE
group_concat_max_len = 4294967295
max_join_size = 18446744073709551615
max_execution_time = 20000
lock_wait_timeout = 60
autocommit = 1
lower_case_table_names = 1
thread_cache_size = 64
disabled_storage_engines = "MyISAM,FEDERATED"
character_set_server = utf8mb4
character-set-client-handshake = FALSE
collation_server = utf8mb4_general_ci
init_connect = 'SET NAMES utf8mb4'
transaction-isolation = "READ-COMMITTED"
explicit_defaults_for_timestamp = ON
log_timestamps = SYSTEM
local_infile = OFF
event_scheduler = OFF
query_cache_type = OFF
query_cache_size = 0
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO
log_error = /data/mysql/mysql.err
slow_query_log = ON
slow_query_log_file = /data/mysql/slow.log
long_query_time = 1
general_log = OFF
general_log_file = /data/mysql/general.log
expire_logs_days = 99
log-bin = /data/mysql/mysql-bin
log-bin-index = /data/mysql/mysql-bin.index
max_binlog_size = 500M
binlog_format = mixed
binlog_rows_query_log_events = ON
binlog_cache_size = 128k
binlog_stmt_cache_size = 128k
log-bin-trust-function-creators = 1
max_binlog_cache_size = 2G
max_binlog_stmt_cache_size = 2G
relay_log = /data/mysql/relay
relay_log_index = /data/mysql/relay.index
max_relay_log_size = 500M
relay_log_purge = ON
relay_log_recovery = ON
server_id = 1
read_buffer_size = 1M
read_rnd_buffer_size = 2M
sort_buffer_size = 64M
join_buffer_size = 64M
tmp_table_size = 64M
max_allowed_packet = 128M
max_heap_table_size = 64M
connect_timeout = 43200
wait_timeout = 43200
back_log = 512
interactive_timeout = 300
net_read_timeout = 30
net_write_timeout = 30
skip_external_locking = ON
key_buffer_size = 16M
bulk_insert_buffer_size = 16M
concurrent_insert = ALWAYS
open_files_limit = 65000
table_open_cache = 16000
table_definition_cache = 16000
default_storage_engine = InnoDB
default_tmp_storage_engine = InnoDB
internal_tmp_disk_storage_engine = InnoDB
[client]
socket = /data/mysql/mysql.sock
default_character_set = utf8mb4
[mysql]
default_character_set = utf8mb4
[ndatad default]
TransactionDeadLockDetectionTimeOut = 20000
EOF
sudo chown -R ${USER}.${GROUP} /etc/my.cnf
loginfo "cấu hình my.cnf"
# Khởi tạo
${DEPLOY_PATH}/mysql/bin/mysqld --initialize --user=mysql --basedir=${DEPLOY_PATH}/mysql --datadir=/data/mysql
loginfo "khởi tạo mysql"
# Lọc mật khẩu ban đầu
mysql_passwd=$(grep 'A temporary password is generated' /data/mysql/mysql.err |awk '{print $NF}')
# Khởi động dịch vụ
cat >> /usr/lib/systemd/system/mysql.service << EOF
[Unit]
Description=MySQL Community Server
After=network.target
[Service]
User=root
Group=root
Type=simple
ExecStart=/opt/mysql-5.7.37-linux-glibc2.12-x86_64/bin/mysqld --defaults-file=/etc/my.cnf --user=root
WorkingDirectory=/opt/mysql-5.7.37-linux-glibc2.12-x86_64/
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable mysqld && systemctl start mysqld
loginfo "khởi động mysqld"
# Thay đổi mật khẩu ban đầu
${DEPLOY_PATH}/mysql/bin/mysqladmin -uroot -p${mysql_passwd} password '120604'
if [ $? -ne 0 ];then
loginfo "khởi tạo mật khẩu root"
fi
# Biến môi trường client
echo "export PATH=\$PATH:${DEPLOY_PATH}/mysql/bin" | sudo tee /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
loginfo "cấu hình môi trường"
}
install_mysql
# Tạo cơ sở dữ liệu k3s
mysql -uroot -p120604 -e "create database k3s;"
### Cài đặt k3s, sử dụng tập lệnh chính thức với tham số backend là mysql
curl -sfL http://49.232.8.65/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.22.5+k3s1 sh -s - --docker --datastore-endpoint='mysql://root:120604@tcp(${local_ip}:3306)/k3s'
systemctl status k3s
systemctl status docker
kubectl get nodes -o wide
[root@c7-1 ~]#mysql -uroot -p120604 -e "show tables in k3s;"
mysql: [Warning] Using a password on the command line interface can be insecure.
+---------------+
| Tables_in_k3s |
+---------------+
| kine |
+---------------+
[root@c7-1 ~]#kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-85cb69466-8tpc7 1/1 Running 0 4m42s
kube-system local-path-provisioner-64ffb68fd-b86m2 1/1 Running 0 4m42s
kube-system helm-install-traefik-crd--1-vlfst 0/1 Completed 0 4m43s
kube-system metrics-server-9cf544f65-vgldv 1/1 Running 0 4m42s
kube-system helm-install-traefik--1-9z6rw 0/1 Completed 0 4m43s
kube-system svclb-traefik-mqfbf 2/2 Running 0 115s
kube-system traefik-786ff64748-q6fdn 1/1 Running 0 115s
[root@c7-1 ~]#kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
c7-1 Ready control-plane,master 5m19s v1.22.5+k3s1 192.168.10.20 <none> CentOS Linux 7 (Core) 3.10.0-1062.el7.x86_64 docker://20.10.17
Cài đặt cơ sở dữ liệu MySQL cho K3S và lưu trữ dữ liệu liên tục với Rancher
Sử dụng cơ sở dữ liệu bên ngoài với K3S để đạt khả năng sẵn cao