我需要把一个s3桶装在库伯奈特吊舱里。我正在使用本指南来帮助我。它工作得很完美,但是,当发出删除吊舱的命令时,吊舱将无限期地停留在“终止”状态。我不知道这是为什么。
这里是.yaml
apiVersion: v1
kind: Pod
metadata:
name: worker
spec:
volumes:
- name: mntdatas3fs
emptyDir: {}
- name: devfuse
hostPath:
path: /dev/fuse
restartPolicy: Always
containers:
- image: nginx
name: s3-test
securityContext:
privileged: true
volumeMounts:
- name: mntdatas3fs
mountPath: /var/s3fs:shared
- name: s3fs
image: meain/s3-mounter
imagePullPolicy: IfNotPresent
securityContext:
privileged: true
env:
- name: S3_REGION
value: "us-east-1"
- name: S3_BUCKET
value: "xxxxxxx"
- name: AWS_KEY
value: "xxxxxx"
- name: AWS_SECRET_KEY
value: "xxxxxx"
volumeMounts:
- name: devfuse
mountPath: /dev/fuse
- name: mntdatas3fs
mountPath: /var/s3fs:shared
这里是s3fs容器使用的meain/s3挂载器的Dockerfile。
FROM alpine:3.3
ENV MNT_POINT /var/s3fs
ARG S3FS_VERSION=v1.86
RUN apk --update --no-cache add fuse alpine-sdk automake autoconf libxml2-dev fuse-dev curl-dev git bash; \
git clone https://github.com/s3fs-fuse/s3fs-fuse.git; \
cd s3fs-fuse; \
git checkout tags/${S3FS_VERSION}; \
./autogen.sh; \
./configure --prefix=/usr; \
make; \
make install; \
make clean; \
rm -rf /var/cache/apk/*; \
apk del git automake autoconf;
RUN mkdir -p "$MNT_POINT"
COPY run.sh run.sh
CMD ./run.sh
这里,复制到容器中的run.sh
#!/bin/sh
set -e
echo "$AWS_KEY:$AWS_SECRET_KEY" > passwd && chmod 600 passwd
s3fs "$S3_BUCKET" "$MNT_POINT" -o passwd_file=passwd && tail -f /dev/null
发布于 2022-09-26 09:28:34
我有一个非常相似的设置的确切问题。s3fs将s3安装到/var/s3fs。吊舱必须先卸下,然后才能愉快地终止。这是用:umount /var/s3fs
完成的。请参阅https://manpages.ubuntu.com/manpages/xenial/man1/s3fs.1.html
所以在你的例子中添加
lifecycle:
preStop:
exec:
command: ["sh","-c","umount /var/mnts3fs"]
应该把它修好。
https://stackoverflow.com/questions/66907848
复制相似问题