k8s deployment部署單個mysql容器例項 + service
阿新 • • 發佈:2020-08-20
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 也是可以訪問的了。