main
黄海 10 months ago
parent 7fc3a6b1ce
commit fd5e8d45de

@ -793,320 +793,51 @@ https://blog.csdn.net/nuptaxin/article/details/124008353
### 七、其它软件安装
#### $7.1$ 部署$mysql$
$mysql$,$redis$,$MongoDB$,$Minio$
> https://www.cnblogs.com/blayn/p/16037199.html
在$k8s$集群中挂载$MySQL$数据卷 需要安装一个$NFS$。
**主节点** 安装$NFS$
```shell
yum install -y nfs-utils rpcbind
```
**主节点** 创建目录
```shell
mkdir -p /nfs
chmod 777 /nfs
```
 
更改归属组与用户
```shell
#chown -R nfsnobody:nfsnobody /nfs
```
 
配置共享目录
```shell
echo "/nfs *(insecure,rw,sync,no_root_squash)" > /etc/exports
```
  
创建$mysql$共享目录
```shell
mkdir -p /nfs/mysql
```
启动服务+设置开启启动
```shell
systemctl enable --now nfs-server rpcbind
```
检查
```shell
[root@k8s-master openresty]# exportfs
showmount -e 10.10.14.200
/nfs <world>
Export list for 10.10.14.200:
/nfs *
```
通过
```
mkdir /data/mysql/data -p
mkdir /data/mysql/logs -p
```
**创建$MySQL$ $Deployment$**
编写一个 `mysql.yaml` 配置文件
```yaml
apiVersion: apps/v1 # apiserver的版本
kind: Deployment # 副本控制器deployment管理pod和RS
metadata:
name: mysql # deployment的名称全局唯一
namespace: default # deployment所在的命名空间
labels:
app: mysql
spec:
replicas: 1 # Pod副本期待数量
selector:
matchLabels: # 定义RS的标签
app: mysql # 符合目标的Pod拥有此标签
strategy: # 定义升级的策略
type: RollingUpdate # 滚动升级,逐步替换的策略
template: # 根据此模板创建Pod的副本实例
metadata:
labels:
app: mysql # Pod副本的标签对应RS的Selector
spec:
nodeName: k8s-node1 # 指定pod运行在的node
containers: # Pod里容器的定义部分
- name: mysql # 容器的名称
image: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/mysql:5.7.44 # 容器对应的docker镜像
volumeMounts: # 容器内挂载点的定义部分
- name: time-zone # 容器内挂载点名称
mountPath: /etc/localtime # 容器内挂载点路径,可以是文件或目录
- name: mysql-data
mountPath: /var/lib/mysql # 容器内mysql的数据目录
- name: mysql-logs
mountPath: /var/log/mysql # 容器内mysql的日志目录
ports:
- containerPort: 3306 # 容器暴露的端口号
env: # 写入到容器内的环境容量
- name: MYSQL_ROOT_PASSWORD # 定义了一个mysql的root密码的变量
value: "root"
volumes: # 本地需要挂载到容器里的数据卷定义部分
- name: time-zone # 数据卷名称,需要与容器内挂载点名称一致
hostPath:
path: /etc/localtime # 挂载到容器里的路径将localtime文件挂载到容器里可让容器使用本地的时区
- name: mysql-data
hostPath:
path: /data/mysql/data # 本地存放mysql数据的目录
- name: mysql-logs
hostPath:
path: /data/mysql/logs # 本地存入mysql日志的目录
```
`mysql-deployment.yaml`配置文件上传至虚拟机的 /root 目录下,在 /root 目录下执行命令:
```shell
kubectl create -f mysql.yaml
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202409162012122.png)
执行添加服务的命令(这行不执行应该也不影响结果):
```shell
kubectl apply -f mysql.yaml
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202409162014765.png)
编写一个提供对外访问的service `mysql-svc.yaml`
```yaml
apiVersion: v1
kind: Service
metadata:
name: mysql
labels:
name: mysql
spec:
type: NodePort
ports:
- port: 3306
targetPort: 3306
nodePort: 30001
selector:
app: mysql
```
`mysql-svc.yaml`配置文件上传至虚拟机的 /root 目录下,在 /root 目录下执行命令:
```shell
kubectl create -f mysql-svc.yaml
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202409162015173.png)
  
访问数据库并验证其运行正常
```shell
kubectl get pod
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202409162018178.png)
删除$pods$
```
kubectl delete pods el-admin-mysql-rc-z2xjr
```
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202409162019824.png)
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202409162027325.png)
mysqld failed while attempting to check config
![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202409162039179.png)
```shell
# 查看日志
kubectl describe pod mysql-db89ddf68-gf45x
kubectl get events --field-selector involvedObject.name=mysql-db89ddf68-gf45x
kubectl logs mysql-db89ddf68-gf45x -c <container_name>
[root@k8s-master ~]# kubectl logs mysql-db89ddf68-gf45x
2024-09-16 20:45:16+08:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.44-1.el7 started.
2024-09-16 20:45:28+08:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.lFVXa084HQ
```
```shell
kubectl exec -it mysql-db89ddf68-gf45x --mysql -uroot -pDsideaL147258369
```
(密码也是root)
## mysql开放远程连接
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
flush privileges; #刷新权限表,使配置生效
## 开启防火墙端口
systemctl start firewalld.service
firewall-cmd --zone=public --add-port=6443/tcp --permanent
firewall-cmd --zone=public --add-port=30001/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-ports
systemctl stop firewalld.service
systemctl disable firewalld.service
要开放6443端口k8s集群连接地址和30001端口k8s集群mysql端口
## 查看已安装的mysql
kubectl get pod
kubectl get svc
mysql服务安装在default命名空间中查看其所在节点
kubectl get pod -n default -o wide
此次部署的mysql服务被我们指定运行在了 k8s-worker01 节点上。
在本地用SQLyog连接到k8s集群的mysql
#### $7.2$ 部署$redis$
> https://devpress.csdn.net/k8s/66c9a10413e4054e7e7d4f79.html
#### $7.3$ 部署$MongoDB$
> https://www.cnblogs.com/gaoyanbing/p/17694272.html
#### $7.4$ 部署$Minio$
> https://blog.csdn.net/baidu_35848778/article/details/131436354
这四个组件,不建议使用$K8S$进行安装管理,建议采用非$K8S$,非$Docker$方式进行部署,采用原始方式进行安装配置,这样性能最高!
### 八、资料
**[kubernetes](https://link.csdn.net/?target=https%3A%2F%2Flink.csdn.net%2F%3Ftarget%3Dhttps%3A%2F%2Fgitcode.com%2Fgh_mirrors%2Fk8s%2Fk8s-deploy%3Futm_source%3Ddevpress_k8s%26login%3Dfrom_csdn) 可能会产生垃圾或者僵尸pod在删除rc的时候相应的pod没有被删除手动删除pod后会自动重新创建这时一般需要先删除掉相关联的resources**
$K8S$可能会产生垃圾或者僵尸$pod$,在删除$rc$的时候,相应的$pod$没有被删除,手动删除$pod$后会自动重新创建,这时一般需要先删除掉相关联的$resources$
**原因**
**先删除pod的话马上会创建一个新的pod因为[deploy](https://link.csdn.net/?target=https%3A%2F%2Flink.csdn.net%2F%3Ftarget%3Dhttps%3A%2F%2Fgitcode.com%2Fgh_mirrors%2Fk8s%2Fk8s-deploy%3Futm_source%3Ddevpress_k8s%26login%3Dfrom_csdn)ment.yaml文件中定义了副本数量**
**先删除pod的话马上会创建一个新的pod因为$deployment.yaml$文件中定义了副本数量**
**正确方法**
先删除[deploy](https://link.csdn.net/?target=https%3A%2F%2Flink.csdn.net%2F%3Ftarget%3Dhttps%3A%2F%2Fgitcode.com%2Fgh_mirrors%2Fk8s%2Fk8s-deploy%3Futm_source%3Ddevpress_k8s%26login%3Dfrom_csdn)ment
查看[deploy](https://link.csdn.net/?target=https%3A%2F%2Flink.csdn.net%2F%3Ftarget%3Dhttps%3A%2F%2Fgitcode.com%2Fgh_mirrors%2Fk8s%2Fk8s-deploy%3Futm_source%3Ddevpress_k8s%26login%3Dfrom_csdn)ment
查看$deployment$
```routeros
kubectl get deployment
```
删除[deploy](https://link.csdn.net/?target=https%3A%2F%2Flink.csdn.net%2F%3Ftarget%3Dhttps%3A%2F%2Fgitcode.com%2Fgh_mirrors%2Fk8s%2Fk8s-deploy%3Futm_source%3Ddevpress_k8s%26login%3Dfrom_csdn)ment
删除$deployment$
```pgsql
```shell
kubectl delete deployment <name>
```
然后再删除pod
然后再删除$pod$
```pgsql
kubectl delete pod <name>
```
如果pod还在的话
查看rc和rs
如果$pod$还在的话
查看$rc$和$rs$
```routeros
```shell
kubectl get rc
kubectl get rs
```
把pod对应的都删除即可
把$pod$对应的都删除即可
```pgsql
```shell
kubectl delete rc <name>
kubectl delete rs <name>
```

Loading…
Cancel
Save