跳到主要内容

pod-base-middleware

数据库和Redis改造Pod启动
Redis容器改造Pod

redis.yaml

apiVersion: v1
kind: Pod
metadata:
name: redis
namespace: luffy
labels:
app: redis
spec:
# hostNetwork: true
containers:
- name: redis
image: redis:3.2
ports:
- containerPort: 6379

思考:是否可以用hostNetwork

使用Service类型资源实现负载:

service-redis.yaml

apiVersion: v1
kind: Service
metadata:
name: redis
namespace: luffy
spec:
ports:
- port: 6379
protocol: TCP
targetPort: 6379
selector:
app: redis
type: ClusterIP
Mysql容器改造Pod

mysql.yaml

apiVersion: v1
kind: Pod
metadata:
name: mysql
namespace: luffy
labels:
app: mysql
spec:
containers:
- name: mysql
image: mysql:5.7
env:
- name: MYSQL_DATABASE # 指定数据库地址
value: "eladmin"
- name: MYSQL_ROOT_PASSWORD
value: "luffyAdmin!"
ports:
- containerPort: 3306
args:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
volumeMounts:
- name: mysql-data
mountPath: /var/lib/mysql
volumes:
- name: mysql-data
hostPath:
path: /opt/mysql/data

思考:服务部署节点不固定,如何保障数据持久化

  • 定点部署

    # 给Pod添加节点选择器
    nodeSelector: # 使用节点选择器将Pod调度到指定label的节点
    mysql: "true"

    # 给节点打标签
    kubectl label node k8s-master mysql=true

    # 停掉之前的mysql容器,用Pod部署
    docker stop mysql
    kubectl create -f mysql.yaml

    cat mysql.service.yaml
    apiVersion: v1
    kind: Service
    metadata:
    name: mysql
    namespace: luffy
    spec:
    ports:
    - port: 3306
    protocol: TCP
    targetPort: 3306
    selector:
    app: mysql
    type: ClusterIP


    # 创建mysql的service
    kubectl create -f mysql.service.yaml

    # 修改eladmin-api的环境变量,重建eladmin-api服务
  • 使用PV+PVC连接分布式存储解决方案

    • ceph
    • glusterfs
    • nfs