K8S的搭建在https://www.cnblogs.com/xuziyu/p/11725976.html可以查看
我們要在K8S上啟動Mysql服務分為以下幾步
1.1為MySQL服務創建一個RC定義文件mysql-rc.yaml,下面給出完整的內容和解釋
apiVersion: v1 kind: ReplicationController metadata: name: mysql spec: replicas: 1 selector: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: mysql ports: - containerPort: 3306 env: - name: MYSQL_ROOT_PASSWORD value: "123456"
-
解釋


圖片來源:《Kubernetes權威指南》第四版
1.2 文件創建好了以后為了將它發布到Kubernetes集群中,我們需要在Master上執行命令
[root@docker001 yum.repos.d]# kubectl apply -f mysql-svc.yaml
接下來查看剛剛創建的RC
[root@docker001 yum.repos.d]# kubectl get rc

查看Pod的創建情況時可以運行下面的命令 kubectl get pod

這里的running剛剛開始可能是ContainerCreating,等1分鍾左右再看一下
2.1 創建一個Kubernetes Service ——MySQL的定義文件(名為mysql-svc.yaml)
apiVersion: v1 kind: Service metadata: name: mysql spec: type: NodePort ports: - port: 3306 nodePort: 30060 selector: app: mysql
說明:這里我們type用了NodePort,為了可以外部用海狸鏈接
2.2 運行kubectl命令,創建Service
[root@docker001 yum.repos.d]# kubectl create -f mysql-svc.yaml
運行kubectl命令查看剛剛創建的Service:
kubectl get svc

這時候我們就已經再K8S上啟動好mysql服務了
3.1 登錄MySQL
kubectl get rc,services yum install -y mysql mysql -h 10.109.17.0 -P 3306 -uroot -p123456

如果mysql -h 10.109.17.0 -P 3306 -uroot -p123456執行不成功,請進行以下步驟
[root@docker001 ~]# docker ps
找到mysql的CONTAINER ID
這里我的是2f4e3f3314c9

然后通過docker命令進入 docker exec -it 2f4e3f3314c9 bash mysql -h 10.109.17.0 -P 3306 -uroot -p123456
3.2 然后不出意外你就可以進入了

然后這里你用海狸鏈接時無法連上的,具體原因我還沒有弄清楚,但是很神奇的是執行完以下步驟就可以了
mysql> alter user 'root'@'%' identified with mysql_native_password by'root'; Query OK, 0 rows affected (0.01 sec) mysql> mysql> alter user 'root'@'%' identified by '123456'; Query OK, 0 rows affected (0.02 sec) mysql> mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed mysql> mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; Query OK, 0 rows affected (0.01 sec) mysql> mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
然后這個時候你再用mysql -h 10.109.17.0 -P 3306 -uroot -p123456這個命令直接登錄就OK了,具體原因還在探究中

4.1 然后打開海狸鏈接

- 30060端口是外部鏈接用的端口注意這里的這個外部端口在配置的時候:,我是避免了超出它的30000-32767這個范圍,所以選了30060,你也可以改一下KUBE_API_ARGS參數范圍
在設置node節點上mysql的端口時候,如果端口太大,發現會報錯,提示端口范圍只允許在30000-32767之間,
出現這個問題在於master的apiserver中KUBE_API_ARGS參數沒設置,這個最好修改下,如下:
#這里修改端口范圍,默認是30000-32767,創建service時超出會報錯 KUBE_API_ARGS="--service-node-port-range=20000-65535"
- 這個參數具體在那個文檔里改其實我也不是很清楚,但是在網上查了一下好像是生成證書的時候的用到的,具體的先不深究了 就用30000-32767之間的數把
