Kops-无法使用PVC绑定到存储类

问题描述

我正在尝试使用kops用MySQL数据库部署WordPress网站。当我运行这些YAML文件时,PVC处于pending状态,并且不在ebs上创建卷。我最初以为是因为存储YAML文件中的可用区,但是我尝试了所有可能的组合,但没有运气。

存储类

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: standard
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2 
  zone: us-east-2a
  iopsPerGB: "10"
reclaimPolicy: Delete
allowVolumeExpansion: false

永久性批量索赔

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: wp-pv-claim
  labels:
    app: wordpress
spec:
  storageClassName: standard
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

部署:

apiVersion: apps/v1 
kind: Deployment
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  selector:
    matchLabels:
      app: wordpress
      tier: frontend
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: wordpress
        tier: frontend
    spec:
      containers:
      - image: wordpress:4.8-apache
        name: wordpress
        env:
        - name: WORDPRESS_DB_HOST
          value: wordpress-mysql
        - name: WORDPRESS_DB_PASSWORD
          value: 123a
        ports:
        - containerPort: 80
          name: wordpresss
        volumeMounts:
        - name: wordpress-persistent-storage
          mountPath: /var/www/html
      volumes:
      - name: wordpress-persistent-storage
        persistentVolumeClaim:
          claimName: wp-pv-claim

服务:

apiVersion: v1
kind: Service
metadata:
  name: wordpress
  labels:
    app: wordpress
spec:
  selector:
    app: wordpress
    tier: frontend
  type: NodePort
  ports:
    - nodePort: 30007 
      port: 80
      targetPort: 80

我正在使用以下命令创建集群:

kops create cluster \
--node-count=1 \
--node-size=t2.micro \
--master-size=t2.small \
--zones=us-east-2a \
--name=${KOPS_CLUSTER_NAME}

解决方法

正如我在第一句话中所怀疑的那样,您没有足够的资源来运行mysqlwordpress

如果您检查Amazon instance types,将会发现t2.nanot2.small的资源很低。

Name    vCPUs   RAM (GiB)   
t2.nano     1   0.5     
t2.small    1   2.0

也如您在最后一条评论中所述:

mysql的容量已达到上限,但当mysql pod运行正常时,wordpress pod进入了挂起状态

这是因为群集没有足够的资源来启动pod。

如果您将使用kubectl describe pod <wordpress-pod-name>,则会得到类似于以下内容的输出:

Warning FailedScheduling 4s (x4 over 92s) default-scheduler 0/2 nodes are available: 1 Insufficient cpu,1 node(s) had taint {node-role.kubernetes.io/master: },that the pod didn't tolerate.

具有那么多资源的集群将无法运行wordpressmysql。请记住,也正在运行kubernetes默认Pod,要检查哪个Pod,可以运行kubectl get pods -A

解决方案:

  • 使用实例t2.large创建具有更多资源的新kops集群
  • 将节点添加到您的kops集群。您可以检查this stackoverflow thread

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...