Kubernetes通过RC部署mysql

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 权威指南》和CSDN博主 海阔云深的类似文档、博主WA自动机~ 编写的,如有雷同纯属巧合,仅供参考,未经允许不得转载,谢谢】

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值