问题描述
我正在尝试使用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}
解决方法
正如我在第一句话中所怀疑的那样,您没有足够的资源来运行mysql
和wordpress
。
如果您检查Amazon instance types,将会发现t2.nano
和t2.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.
具有那么多资源的集群将无法运行wordpress
和mysql
。请记住,也正在运行kubernetes默认Pod,要检查哪个Pod,可以运行kubectl get pods -A
。
解决方案:
- 使用实例
t2.large
创建具有更多资源的新kops集群 - 将节点添加到您的kops集群。您可以检查this stackoverflow thread