caitiao的博客

就现在,Just do it

0%

运行一个单实例有状态应用

通过创建一个 Kubernetes Deployment 并使用 PersistentVolumeClaim 将其连接到已有的 PersistentVolume 来运行一个有状态的应用

  1. 创建一个MySQL数据存储卷的PersistentVolume,mysql-pv.yaml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    apiVersion: v1
    kind: PersistentVolume
    metadata:
    name: mysql-pv-volume
    labels:
    type: local
    spec:
    storageClassName: manual
    capacity:
    storage: 20Gi
    accessModes:
    - ReadWriteOnce
    hostPath:
    path: "/mnt/data"
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
    name: mysql-pv-claim
    spec:
    storageClassName: manual
    accessModes:
    - ReadWriteOnce
    resources:
    requests:
    storage: 20Gi
  2. 执行PersistentVolume创建
    1
    kubectl apply -f mysql-pv.yaml
  3. 查看新建的PersistentVolumeClaim
    1
    kubectl describe pvc mysql-pv-claim
  4. 创建一个MySQL Deployment,mysql-deployment.yaml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    apiVersion: v1
    kind: Service
    metadata:
    name: mysql
    spec:
    ports:
    - port: 3306
    selector:
    app: mysql
    clusterIP: None
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: mysql
    spec:
    selector:
    matchLabels:
    app: mysql
    strategy:
    type: Recreate
    template:
    metadata:
    labels:
    app: mysql
    spec:
    containers:
    - image: mysql:5.6
    name: mysql
    env:
    # 在实际中使用 secret
    - name: MYSQL_ROOT_PASSWORD
    value: password
    ports:
    - containerPort: 3306
    name: mysql
    volumeMounts:
    - name: mysql-persistent-storage
    mountPath: /var/lib/mysql
    volumes:
    - name: mysql-persistent-storage
    persistentVolumeClaim:
    claimName: mysql-pv-claim
  5. 检查创建的应用是否成功
    1
    2
    3
    kubectl describe deployment mysql-deployment #显示Deployment信息
    kubectl get pods -l app=mysql-deployment #查看Pod列表
    kubectl decribe pod <pod-name> #查看Pod信息