Kubernetes通过RC部署mysql

tech2025-11-02  1

Kubernetes通过RC部署mysql

一、环境准备 首先,我开始准备kubernetes的安装和相关镜像下载,建议采用VMware Workstation,有条件也可以使用真实的服务器或者云服务器,本次采用的是64位Centos7.7的操作系统 Cetntos7.7 2H4G

二、具体操作 (1)关闭centos7 防火墙 systemctl disable firewalld systemctl stop firewalld

(2)安装etcd和kubernetes软件(会自动安装docker) yum -y install etcd kubernetes

(3)按顺序启动所有服务 systemctl start etcd systemctl start docker systemctl start kube-apiserver systemctl start kube-controller-manager systemctl start kube-scheduler systemctl start kubelet systemctl start kube-proxy

至此,我们的一个单机版的kubernetes集群环境就安装启动完成了

(4)编写一个RC定义文件:mysql-rc.yaml

apiVersion : v1 kind : ReplicationController #副本控制器RC metadata : name : mysql #RC的名称,全局唯一 spec : replicas : 1 #pod副本期待数量 selector : app : mysql #符合目标的pod拥有此标签 template : #根据此模板创建Pod的副本(实例) metadata : labels: app : mysql #pod副本拥有的标签,对应RC的Selector spec : containers : #pod内容器的定义部分 - name : mysql #容器的名称 image : mysql #容器对应的Docker Image ports : - containerPort : 3306 #容器应用监听的端口 env : #注入容器内的环境变量 - name : MYSQL_ROOT_PASSWORD value : "123456"

(5)创建完成mysql-rc.yaml后,为了将它发布到Kubernetes集群中,在master节点执行命令:

[root-hostname RC]# kubectl create -f mysql-rc.yaml replicationcontroller "mysql" created

这里会出现问题,kubectl get pod 没有显示任何pod 这里将/etc/kubernetes/apiserver 中的23行注释掉后systemctl restart apisever 即可:

#KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"

然后删除RC重新创建RC 删除RC: kubectl delete rc mysql

重新创建RC后发现确实有pod显示了,但是pod状态是ContainerCreating,无法启动 这里需要参考该博主的文档:https://www.cnblogs.com/randy-lo/p/13321148.html 为了避免后续博主删除,这边写一下命令:

yum install -y *rhsm* wget http://mirror.centos.org/centos/7/os/x86_64/Packages/python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm rpm2cpio python-rhsm-certificates-1.19.10-1.el7_4.x86_64.rpm | cpio -iv --to-stdout ./etc/rhsm/ca/redhat-uep.pem | tee /etc/rhsm/ca/redhat-uep.pem

再次删除RC,重新创建RC后即可发现pod正常运行 (6)最后创建一个与之相关联的kubernetes service–mysql的定义文件mysql-server.yaml

apiVersion : v1 kind : Service #表明是kubernetes service metadata : name : mysql #service 全局唯一名称 spec : ports : - port : 3306 #service 提供服务的端口号 selector : #service对应pod拥有这里定义的标签 app : mysql

创建完成后运行命令创建service:

[root-hostname RC]#kubectl create -f mysql-service.yaml

运行查看命令,可以查看到刚刚创建的service

[root-hostname RC]# kubectl get svc NAME CLUSTER-IP EXTERNAL-IP POST(S) AGE mysql 10.254.171.122 <none> 3306/TCP 48s

部署最后发现无法进入容器查看,因为本次部署用的是1H1G (头铁) 发现OOM Killer会因为内存不足杀掉进程,虽然可以docker ps看到容器,但是实际进程已经不存在了,所以血的教训,还是使用资源配置充足的服务器吧TT

【本文章是作者刚刚接触kubernetes 借鉴《kubernetes 权威指南》和博主 海阔云深的类似文档、博主WA自动机~ 编写的,如有雷同纯属巧合,仅供参考,未经允许不得转载,谢谢】

最新回复(0)