Kubernetes 部署 Mysql 8

mysql可以以docker的形式在集群內(nèi)部署,也可以安裝在集群之外,以服務(wù)的形式部署到集群內(nèi)。
(1)、如果是在集群內(nèi)部署,可以啟動(dòng)一個(gè)ReplicationController,用以對(duì)mysql pod進(jìn)行監(jiān)控,并同時(shí)啟動(dòng)一個(gè)Service,用以集群訪問。
(2)、如果mysql是安裝在集群之外,那么可以啟動(dòng)一個(gè)Endpoint和Service,將mysql引入集群之中。
下面分別對(duì)這兩種方式進(jìn)行部署。

1、安裝Mysql

創(chuàng)建mysql-rc.yaml和mysql-svc.yaml,分別如下:
mysql-rc.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: mysql-rc
  labels:
    name: mysql-rc
spec:
  replicas: 1
  selector:
    name: mysql-pod
  template:
    metadata:
      labels: 
        name: mysql-pod
    spec:
      containers:
      - name: mysql
        image: mysql
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "mysql"

mysql-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: mysql-svc
  labels: 
    name: mysql-svc
spec:
  type: NodePort
  ports:
  - port: 3306
    protocol: TCP
    targetPort: 3306
    name: http
    nodePort: 30306
  selector:
    name: mysql-pod

在mysql-rc.yaml中,image參數(shù)可以指定mysql的版本,如8.0.11、5.7.22等。這里省略了,表示用latest。另外,可以指定鏡像庫,這里使用阿里云鏡像庫,在安裝docker時(shí)進(jìn)行了配置。env參數(shù)指定了mysql的root密碼。

? 在mysql-svc.yaml中,targetPort表示mysql pod中mysql窗口的目標(biāo)端口,默認(rèn)為3306,type類型為NodePort,表示將映射到本地端口,本地端口為nodePort: 30306。

接下來啟動(dòng)ReplicationController和Service,執(zhí)行以下命令:

kubectl create -f mysql-rc.yaml
kubectl create -f mysql-svc.yaml

啟動(dòng)后可以查看mysql部署在了哪個(gè)node上,執(zhí)行以下命令可以查看:

kubectl get pod -o wide |grep mysql

image-20200312123424548.png

遠(yuǎn)程連接mysql8.0時(shí)可能會(huì)報(bào)一些錯(cuò)誤,如navicat連接。這里對(duì)mysql8.0作一些設(shè)置。
(1)、登錄到192.168.56.28 node 中。
(2)、執(zhí)行docker ps查看mysql容器。如下所示:
image-20200312123523839.png

(3)、進(jìn)入mysql容器,執(zhí)行以下命令進(jìn)入容器,這里container_id為6f0827595caf
docker exec -it container_id /bin/bash
(4)、在容器內(nèi)登錄mysql。執(zhí)行以下命令,-h為ip,容器內(nèi)ip為127.0.0.1,-r為用戶名,-p為密碼,在mysql-rc中設(shè)置的密碼。
mysql -h127.0.0.1 -uroot -pmysql
(5)、對(duì)mysql進(jìn)行如下設(shè)置。

alter user 'root'@'%' identified with mysql_native_password by'root';
alter  user 'root'@'%' identified by 'mysql';

(6)、退出mysql和容器,執(zhí)行quit;退出mysql,按ctrl+p后,再按ctrl+q從容器中返回node主機(jī)。

設(shè)置好mysql后,可以遠(yuǎn)程連接node中的mysql,node的ip為127.0.0.1,映射的端口為30306,可以用navicat工具連接到這個(gè)myql。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容