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