k8s deployment部署單個mysql容器實例 + service

k8s deployment yaml,源於從網上找到的一個版本

apiVersion: apps/v1                             # apiserver的版本
kind: Deployment                                # 副本控制器deployment,管理pod和RS
metadata:
  name: mysql                                   # deployment的名稱,全局唯一
spec:
  replicas: 1                                   # Pod副本期待數量
  selector:
    matchLabels:                                # 定義RS的標籤
      app: mysql                                # 符合目標的Pod擁有此標籤
  strategy:                                     # 定義升級的策略
    type: RollingUpdate                         # 滾動升級,逐步替換的策略
  template:                                     # 根據此模板創建Pod的副本(實例)
    metadata:
      labels:
        app: mysql                              # Pod副本的標籤,對應RS的Selector
    spec:
      nodeName: ysp1                            # 指定pod運行在的node
      containers:                               # Pod裏容器的定義部分
        - name: mysql                           # 容器的名稱
          image: mysql:5.7                      # 容器對應的docker鏡像
          volumeMounts:                         # 容器內掛載點的定義部分
            - name: time-zone                   # 容器內掛載點名稱
              mountPath: /etc/localtime         # 容器內掛載點路徑,可以是文件或目錄
            - name: mysql-data
              mountPath: /var/lib/mysql         # 容器內mysql的數據目錄
            - name: mysql-logs
              mountPath: /var/log/mysql         # 容器內mysql的日誌目錄
          ports:
            - containerPort: 3306               # 容器暴露的端口號
          env:                                  # 寫入到容器內的環境容量
            - name: MYSQL_ROOT_PASSWORD         # 定義了一個mysql的root密碼的變量
              value: "456789"
      volumes:                                  # 本地需要掛載到容器裏的數據卷定義部分
        - name: time-zone                       # 數據卷名稱,需要與容器內掛載點名稱一致
          hostPath:
            path: /etc/localtime                # 掛載到容器裏的路徑,將localtime文件掛載到容器裏,可讓容器使用本地的時區
        - name: mysql-data
          hostPath:
            path: /data/mysql/data              # 本地存放mysql數據的目錄
        - name: mysql-logs
          hostPath:
            path: /data/mysql/logs              # 本地存入mysql日誌的目錄

 

如果pod正常running,沒有mysql 也是可以進入的,不過得使用命令  kubectl get pod -o wide, 然後你看到的pod ip + 上面定義的容器端口號3306。

然後可以對接一個service,讓外部訪問。

apiVersion: v1
kind: Service
metadata:
  name: mysql-service
spec:
  type: NodePort
  ports:
    - port: 3306
      targetPort: 3306
      nodePort: 30006
  selector:
    app: mysql

可以通過 kubectl get svc,查看你的service ip, 便可以通過service ip + port進行訪問,但如果你用的nat虛擬機部署的,你的宿主及無法訪問service ip, 上午中我也加了一個nodeport,暴露30007端口。

那麼讓你的宿主機訪問虛擬機ip + nodeport 也是可以訪問的了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章