From fd5e8d45de72930dae23fa52f200342d575d9468 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Mon, 16 Sep 2024 21:08:42 +0800 Subject: [PATCH] 'commit' --- 操作文档/1、K8S搭建/搭建k8s集群.md | 295 +----------------- 1 file changed, 13 insertions(+), 282 deletions(-) diff --git a/操作文档/1、K8S搭建/搭建k8s集群.md b/操作文档/1、K8S搭建/搭建k8s集群.md index 8024749c..1beaba85 100644 --- a/操作文档/1、K8S搭建/搭建k8s集群.md +++ b/操作文档/1、K8S搭建/搭建k8s集群.md @@ -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 -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 - -[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 ``` -然后再删除pod +然后再删除$pod$ ```pgsql kubectl delete pod ``` -如果pod还在的话 -查看rc和rs +如果$pod$还在的话 +查看$rc$和$rs$ -```routeros +```shell kubectl get rc kubectl get rs ``` -把pod对应的都删除即可 +把$pod$对应的都删除即可 -```pgsql +```shell kubectl delete rc kubectl delete rs ```