k8s(Kubernetes)快速部署捷徑(6)-集群mysql應(yīng)用實(shí)例

【目錄】
(1)k8s快速介紹
(2)硬件虛擬機(jī)環(huán)境Ubuntu18.10-server安裝
(3)Docker-CE安裝及配置
(4)Kubernetes 安裝及部署
(5)創(chuàng)建企業(yè)Kubernetes多主機(jī)集群環(huán)境
(6)Kubernetes集群mysql應(yīng)用實(shí)例
(7)Kubernetes集群tomcat應(yīng)用集群實(shí)例
(8)Kubernetes集群beego新聞發(fā)布web系統(tǒng)集群實(shí)例
【資源下載】
完整教程markdown下載 提取碼: 92hy
kubernetes(k8s)2小時(shí)快速部署教程視頻 提取碼:dk4i
kubernetes-Master-Node虛擬機(jī)完整鏡像文件 提取碼: 2wf8
課程相關(guān)其他相關(guān)安裝包及鏡像 提取碼: nkfj


六、應(yīng)用實(shí)例

6.1 創(chuàng)建MySQL實(shí)例

6.1.1 定義描述文件

apiVersion: v1
kind: ReplicationController                            #副本控制器RC
metadata:
  name: mysql                                          #RC的名稱,全局唯一
spec:
  replicas: 1                                          #Pod副本的期待數(shù)量
  selector:
    app: mysql                                         #符合目標(biāo)的Pod擁有此標(biāo)簽
  template:                                            #根據(jù)此模板創(chuàng)建Pod的副本(實(shí)例)
    metadata:
      labels:
        app: mysql                                     #Pod副本擁有的標(biāo)簽,對(duì)應(yīng)RC的Selector
    spec:
      containers:                                      #Pod內(nèi)容器的定義部分
      - name: mysql                                    #容器的名稱
        image: hub.c.163.com/library/mysql              #容器對(duì)應(yīng)的Docker image
        ports: 
        - containerPort: 3306                          #容器應(yīng)用監(jiān)聽的端口號(hào)
        env:                                           #注入容器內(nèi)的環(huán)境變量
        - name: MYSQL_ROOT_PASSWORD 
          value: "123456"

6.1.2 加載ReplicationController副本控制器描述文件

創(chuàng)建好mysql-rc.yaml后,在master節(jié)點(diǎn)使用kubectl命令將它發(fā)布到k8s集群中。

kubectl create -f mysql-rc.yaml

6.1.3 查看啟動(dòng)狀態(tài)

通過查看當(dāng)前的pods列表,是否已經(jīng)啟動(dòng)成功:

6.1.4 網(wǎng)絡(luò)異常解決方案(未出現(xiàn)問題可直接跳過)

注意:如果這里出現(xiàn)了ContainerCreating狀態(tài),那么可以嘗試如下解決辦法:

itcast@master:~/working$ kubectl get pods
NAME          READY   STATUS              RESTARTS   AGE
mysql-tscrh   0/1     ContainerCreating   0          17m

目前mysql-tscrh 描述文件 已經(jīng)創(chuàng)建,但是沒有啟動(dòng)成功. 狀態(tài)是ContainerCreating 沒有啟動(dòng)起來.

通過kubectl describe pods來查看pods的詳細(xì)狀態(tài)

itcast@master:~/working$ kubectl describe pods mysql
Name:               mysql-tscrh
Namespace:          default
Priority:           0
PriorityClassName:  <none>
Node:               node1/192.168.236.178
Start Time:         Mon, 17 Jun 2019 09:10:35 +0000
Labels:             app=mysql
Annotations:        <none>
Status:             Pending
IP:                 
Controlled By:      ReplicationController/mysql
Containers:
  mysql:
    Container ID:   
    Image:          hub.c.163.com/library/mysql
    Image ID:       
    Port:           3306/TCP
    Host Port:      0/TCP
    State:          Waiting
      Reason:       ContainerCreating
    Ready:          False
    Restart Count:  0
    Environment:
      MYSQL_ROOT_PASSWORD:  123456
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-q6ggq (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             False 
  ContainersReady   False 
  PodScheduled      True 
Volumes:
  default-token-q6ggq:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-q6ggq
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason                  Age                     From               Message
  ----     ------                  ----                    ----               -------
  Normal   Scheduled               22m                     default-scheduler  Successfully assigned default/mysql-tscrh to node1
  Warning  FailedCreatePodSandBox  22m                     kubelet, node1     Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "58d143373e767c40610587624c667d8e20dd77fa397952406a085f2ae1dc38e6" network for pod "mysql-tscrh": NetworkPlugin cni failed to set up pod "mysql-tscrh_default" network: open /run/flannel/subnet.env: no such file or directory
  Warning  FailedCreatePodSandBox  22m                     kubelet, node1     Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "81d12726dbe075c64af48142638e98863231e8201ccc292f0dda1fccfa7fdaec" network for pod "mysql-tscrh": NetworkPlugin cni failed to set up pod "mysql-tscrh_default" network: open /run/flannel/subnet.env: no such file or directory
  Warning  FailedCreatePodSandBox  22m                     kubelet, node1     Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "8bd77ee0176d369435ead7bd3c2675b7bbcbdc2b052cf34c784f04053a7d5288" network for pod "mysql-tscrh": NetworkPlugin cni failed to set up pod "mysql-tscrh_default" network: open /run/flannel/subnet.env: no such file or directory
  Warning  FailedCreatePodSandBox  22m                     kubelet, node1     Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "0733fc209e085e96f5823a2280b012a609dace41fda967c5ae951005a8699ce6" network for pod "mysql-tscrh": NetworkPlugin cni failed to set up pod "mysql-tscrh_default" network: open /run/flannel/subnet.env: no such file or directory
  Warning  FailedCreatePodSandBox  22m                     kubelet, node1     Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "91f337eb334612b2e7426d820ba4b15a9c9c549050517d459508832b69780b5f" network for pod "mysql-tscrh": NetworkPlugin cni failed to set up pod "mysql-tscrh_default" network: open /run/flannel/subnet.env: no such file or directory
  Warning  FailedCreatePodSandBox  22m                     kubelet, node1     Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "48cbba9896068a774d9128a6864394e8726a0d857bae61036421ad73f5d6e3dd" network for pod "mysql-tscrh": NetworkPlugin cni failed to set up pod "mysql-tscrh_default" network: open /run/flannel/subnet.env: no such file or directory
  Warning  FailedCreatePodSandBox  22m                     kubelet, node1     Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "d259778aa19418a9a429b3175b66afae3d8ffb7324ec9df492b2947dbc153460" network for pod "mysql-tscrh": NetworkPlugin cni failed to set up pod "mysql-tscrh_default" network: open /run/flannel/subnet.env: no such file or directory
  Warning  FailedCreatePodSandBox  22m                     kubelet, node1     Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "3d01c00ac9eaac7b2e983402be38c1cf60c4bbd1d454aa45329ce0ca0c2bf792" network for pod "mysql-tscrh": NetworkPlugin cni failed to set up pod "mysql-tscrh_default" network: open /run/flannel/subnet.env: no such file or directory
  Warning  FailedCreatePodSandBox  22m                     kubelet, node1     Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "98879cbb0405dac3a24753dd1986070a53fe9ee9f1b819996a903c19286a2bb7" network for pod "mysql-tscrh": NetworkPlugin cni failed to set up pod "mysql-tscrh_default" network: open /run/flannel/subnet.env: no such file or directory
  Warning  FailedCreatePodSandBox  7m49s (x838 over 22m)   kubelet, node1     (combined from similar events): Failed create pod sandbox: rpc error: code = Unknown desc = failed to set up sandbox container "60923335b41c2d0412b279bdb6150f9b9b7eae20c4a02549e35509083c01384b" network for pod "mysql-tscrh": NetworkPlugin cni failed to set up pod "mysql-tscrh_default" network: open /run/flannel/subnet.env: no such file or directory
  Normal   SandboxChanged          2m49s (x1127 over 22m)  kubelet, node1     Pod sandbox changed, it will be killed and re-created.

會(huì)看到一個(gè)錯(cuò)誤:

"mysql-tscrh": NetworkPlugin cni failed to set up pod "mysql-tscrh_default" network: open /run/flannel/subnet.env: no such file or directory

這是缺少/run/flannel/subnet.env文件

解決辦法:配置flannel網(wǎng)絡(luò)

分別在三臺(tái)服務(wù)器上執(zhí)行如下步驟

  1. 創(chuàng)建目錄

    sudo mkdir -p /run/flannel
    
  2. 創(chuàng)建環(huán)境描述文件

    $ sudo tee /run/flannel/subnet.env <<-'EOF'
    FLANNEL_NETWORK=10.244.0.0/16
    FLANNEL_SUBNET=10.244.0.1/24
    FLANNEL_MTU=1450
    FLANNEL_IPMASQ=true
    EOF
    

6.1.5 查看mysql實(shí)例集群狀態(tài)

itcast@master:~/working$ kubectl get pods
NAME          READY   STATUS              RESTARTS   AGE
mysql-tscrh   0/1     Running   0          17m

如果為Running狀態(tài),則為mysql集群啟動(dòng)成功。


關(guān)于作者:

作者:Aceld(劉丹冰)

簡書號(hào):IT無崖子

mail: danbing.at@gmail.com

github: https://github.com/aceld

原創(chuàng)書籍gitbook: http://legacy.gitbook.com/@aceld

原創(chuàng)聲明:未經(jīng)作者允許請(qǐng)勿轉(zhuǎn)載, 如果轉(zhuǎn)載請(qǐng)注明出處

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

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

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