![](/img/trans.png)
[英]How to delete a kubernetes cluster using kops without deleting EBS persistent volume that I used for my database?
[英]Difficulty using Kubernetes Persistent Volume Claims with Amazon EBS
我试图按照https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/registry上的说明向Kubernetes添加私有docker注册表,但是rc创建的pod不能挂载持久卷声明。
首先,我在EBS上创建一个卷,如下所示:
aws ec2 create-volume --region us-west-1 --availability-zone us-west-1a --size 32 --volume-type gp2
( us-west-1a
也是我所有的kube minions都在运行的可用区。)
然后我像这样创建一个持久卷:
kind: PersistentVolume
apiVersion: v1
metadata:
name: kube-system-kube-registry-pv
labels:
kubernetes.io/cluster-service: "true"
spec:
capacity:
storage: 30Gi
accessModes:
- ReadWriteOnce
awsElasticBlockStore:
volumeID: vol-XXXXXXXX
fsType: ext4
对持久性卷的声明如下:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: kube-registry-pvc
namespace: kube-system
labels:
kubernetes.io/cluster-service: "true"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 30Gi
复制控制器的指定方式如下:
apiVersion: v1
kind: ReplicationController
metadata:
name: kube-registry-v0
namespace: kube-system
labels:
k8s-app: kube-registry
version: v0
kubernetes.io/cluster-service: "true"
spec:
replicas: 1
selector:
k8s-app: kube-registry
version: v0
template:
metadata:
labels:
k8s-app: kube-registry
version: v0
kubernetes.io/cluster-service: "true"
spec:
containers:
- name: registry
image: registry:2
resources:
limits:
cpu: 100m
memory: 100Mi
env:
- name: REGISTRY_HTTP_ADDR
value: :5000
- name: REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY
value: /var/lib/registry
volumeMounts:
- name: image-store
mountPath: /var/lib/registry
ports:
- containerPort: 5000
name: registry
protocol: TCP
volumes:
- name: image-store
persistentVolumeClaim:
claimName: kube-registry-pvc
当我创建rc时,它成功启动了一个pod,但是pod无法安装该卷:
$ kubectl describe po kube-registry --namespace=kube-system
...
Events:
FirstSeen LastSeen Count From SubobjectPath Reason Message
───────── ──────── ───── ──── ───────────── ────── ───────
1m 1m 1 {scheduler } Scheduled Successfully assigned kube-registry-v0-3jobf to XXXXXXXXXXXXXXX.us-west-1.compute.internal
22s 22s 1 {kubelet XXXXXXXXXXXXXXX.us-west-1.compute.internal} FailedMount Unable to mount volumes for pod "kube-registry-v0-3jobf_kube-system": Timeout waiting for volume state
22s 22s 1 {kubelet XXXXXXXXXXXXXXX.us-west-1.compute.internal} FailedSync Error syncing pod, skipping: Timeout waiting for volume state
如果我不使用持久卷和持久卷声明,我就能成功挂载EBS卷。 以下工作没有错误,例如:
apiVersion: v1
kind: Pod
metadata:
name: test-ebs
spec:
containers:
- image: gcr.io/google_containers/test-webserver
name: test-container
volumeMounts:
- mountPath: /test-ebs
name: test-volume
volumes:
- name: test-volume
awsElasticBlockStore:
volumeID: vol-XXXXXXXX
fsType: ext4
我的两个问题是:
我想我可能会遇到https://github.com/kubernetes/kubernetes/issues/15073 。 (如果我创建一个新的EBS卷,我首先得到一个不同的失败,然后在pod尝试重新创建rc之后被杀死我得到了我在问题中提到的失败。)
此外,对于其他任何想知道在哪里寻找日志的人来说,kubelet上的/var/log/syslog
和/var/log/containers/XXX
是我最终不得不寻找的地方。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.