K8S中部署wordpress

K8S中部署wordpress

省略了storageclass的部署过程。详情参考 Storageclass 外挂NFS配置与应用

1.创建名称空间

kubectl create ns wordpress

2.部署数据库

2.1 创建pvc

使用pvc,申请一个pv;从storageClassName: managed-nfs-storage中获取。pv的名称为

cat 0-mysql-pvc.yaml 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
  namespace: wordpress
spec:
  storageClassName: managed-nfs-storage
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 2Gi

2.2 创建mysql POD

有状态应用建议使用StatefulSet控制器

cat 1-mysql.yaml 
# 创建pod
apiVersion: v1
kind: Pod
metadata:
  name: wp-mysql
  namespace: wordpress
  labels:
    app: wp-mysql
spec:
  containers:
  - name: mysql
    image: mysql:5.7
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 3306
      name: dbport
    env:
    - name: MYSQL_ROOT_PASSWORD
      value: gong.123
    - name: MYSQL_DATABASE
      value: wordpress
    - name: MYSQL_USER
      value: wordpress
    - name: MYSQL_PASSWORD
      value: wordpress
    volumeMounts:
    - name: db
      mountPath: /var/lib/mysql
  volumes:
  - name: db
    persistentVolumeClaim:
      claimName: mysql-pv-claim

2.3 暴露mysql的svc

cat 2-mysql-svc.yaml 
apiVersion: v1
kind: Service
metadata:
  labels:
    app: wp-mysql
  name: wp-mysql-svc
  namespace: wordpress
spec:
  ports:
  - port: 3306
    protocol: TCP
    targetPort: 3306
  selector:
    app: wp-mysql

3.部署wordpress

3.1 创建pvc

cat wp-storage.yaml 
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: wp-storage
  namespace: wordpress
spec:
  storageClassName: managed-nfs-storage
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 2Gi

3.2 创建deployment资源的wordpress

cat wordpress-dp.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress
  namespace: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
  replicas: 1
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      containers:
      - name: wordpress
        image: wordpress
        imagePullPolicy: IfNotPresent 
        ports:
        - containerPort: 80
        env:
        - name: WORDPRESS_DB_HOST
          value: wp-mysql-svc:3306 
        - name: WORDPRESS_DB_USER
          value: wordpress
        - name: WORDPRESS_DB_PASSWORD
          value: wordpress
        volumeMounts:
        - name: wp-storage
          mountPath: /var/www/html
      volumes:
      - name: wp-storage
        persistentVolumeClaim:
          claimName: wp-storage

3.3 暴露wordpress端口

kubectl expose -n wordpress deployment wordpress --type=NodePort --port=8081 --target-port=80 --name=wp-svc
posted @ 2022-01-12 15:02  Gshelldon  阅读(416)  评论(0编辑  收藏  举报