K8S上運行MySQL和Tomcat


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之間的數把

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM