k8s单节点部署mysql_k8s deployment部署单个mysql容器实例 + service

2022年10月11日11:17:33

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 也是可以访问的了。

  • 作者:幼生期
  • 原文链接:https://blog.csdn.net/weixin_31437361/article/details/113198552
    更新时间:2022年10月11日11:17:33 ,共 1394 字。