Kubernetes实战(部署+生产案例)

K8S的搭建在https://blog.csdn.net/weixin_43212365/article/details/105665215可以查看

我们要在K8S上启动Mysql服务分为以下几步

首先我们认识一下以下几个关键词

  • pod 逻辑概念 k8s调度的单元 可以认为就是一个container实例,一般的pod可能在这台机器上面运行,如果失败了,会飘到另外一台机器上面去重新创建
  • ReplicationController 简写rc 是pod的复制抽象 解决pod的扩容缩减的问题,保证运行的pod数量同ReplicationController数量一致(分布式高可靠而且考虑负载可以动态缩减)
  • service 是pod的路由代理抽象 解决pod之间的服务发现问题 selector,保证pod的动态变化对访问透明(比如容器容器重启、切换机器了、缩容的过程中被终止了、比如出现故障在其他机器上面恢复,我的pod所在的机器可能是发生了变化,但是我的service对外提供服务都是无感知的,不关心里面怎么变,对外提供服务都是一样的)

对外提供服务只需要service地址(固定的),不需要pod地址

准备

为MySQL服务创建一个RC定义文件mysql-rc.yaml

下面给出完整的内容和解释

[root@hadoop001 mysql-yaml]# cat mysql-rc.yaml 
apiVersion: v1                                    #api版本    
kind: ReplicationController                   #副本控制器RC
metadata:                                     #元数据
  name: mysql-master                      #RC的名称,全局唯一
  namespace: ruozedata                 #命名空间
   labels:                                     #复制控制器标签
    name: mysql-master      
spec:
  replicas: 1                               #pod副本的期待数量
  selector:                                  #找pod的label为mysql-master
    app: mysql-master                  #符合目标的pod拥有此标签
  template:                                #根据模板创建pod的副本(实例)
    metadata:
      labels:
        app: mysql-master                     #pod副本拥有的标签,对应RC的Selector,pod的label为mysql-master
    spec:
      containers:                         #pod内容器的定义部分
      - name: master                   #容器的名称
        image: 172.19.242.225/ruozedata/mysql-master:v1.0                  #容器对应的docker   image,私服
        ports:
        - containerPort: 3306         #容器应用监听的端口号
        env:                                  #注入容器内的环境变量
        - name: MYSQL_ROOT_PASSWORD
          value: "123456"
[root@hadoop001 mysql-yaml]# 

创建一个Kubernetes Service ——MySQL的定义文件(名为mysql-service.yaml)

apiVersion: v1        
kind: Service        
metadata:        
  name: mysql-master                 
spec:
  externalIPs:
    - 172.19.242.228           #强制制定了一一台机器对外服务,hadoop002的机器
  ports:
    - port: 3306
      targetPort: 3006
  selector:
    app: mysql-master              #通过这个同pod来关联                  

选取第一台机器去pull

docker pull hackeruncle/mysql-master:v1.0
docker pull hackeruncle/mysql-slave:v1.0

Tag image on docker

docker tag b73ad03215d5 172.19.242.225/ruozedata/mysql-master:v1.0
docker tag b152e49ead77 172.19.242.225/ruozedata/mysql-slave:v1.0

Push image to Harbor

docker push 172.19.7.111/ruozedata/mysql-master:v1.0
docker push 172.19.7.111/ruozedata/mysql-slave:v1.0

创建namespace

选取第一台机器

kubectl create namespace ruozedata

kubectl get namespaces

创建secret

选取第一台机器

kubectl create secret docker-registry ruozedatakey \
--namespace=ruozedata \
--docker-server=172.19.242.225 \
--docker-username=admin \
--docker-password=Harbor12345 \
[email protected]       #邮箱可以自定义


kubectl get secret --namespace=ruozedata -o wide

解读yaml且做初始化

rc --> pod

service

做了三个增强

添加secret
添加MySQL data的持久化,重新添加
设置externalIPs 对外暴露能够访问

k8s nodes初始化

选取两台节点机器,一块做

//如果之前做过的话
kubectl delete svc/mysql-master svc/mysql-slave  --namespace=ruozedata
kubectl delete rc/mysql-master  rc/mysql-slave  --namespace=ruozedata

//删除后重新创建,第二次做的话,需要执行,不然会有残留
rm -rf /var/lib/mysql-master-cdh && mkdir -p /var/lib/mysql-master-cdh
rm -rf /var/lib/mysql-slave-cdh && mkdir -p /var/lib/mysql-slave-cdh

创建master

先去对应的yaml文件调整image地址
Dockerfile & yaml

选取第一台机器

kubectl create -f mysql-master-rc.yaml
kubectl create -f mysql-master-service.yaml

[root@hadoop001mysql_replication_cdh]# kubectl get all --namespace=ruozedata           #查看是否是Running状态
NAME                     READY     STATUS    RESTARTS   AGE
pod/mysql-master-
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值