Kops - 无法使用 pvc 绑定到存储 class

Kops - unable to bound to storage class using pvc

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

存储空间class

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 volumn bound 但随后 wordpress pod 进入挂起状态,而 mysql 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 默认 pods 也是 运行ning,要检查哪个,您可以 运行 kubectl get pods -A.

解决方案:

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