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