Giống như Anton đã nói, mặc dù chúng tôi không thể đặt UID bằng định nghĩa của Pod. Đây là một cách giải quyết khác cho chủ đề này.
Vui lòng tham khảo tài liệu chính thức của Kubernetes Cấu hình bối cảnh bảo mật cho Pod hoặc Container
Định nghĩa pod tôi đã sử dụng:
apiVersion: v1
kind: Pod
metadata:
name: nexus3
labels:
app: nexus3
spec:
securityContext:
fsGroup: 200
volumes:
- name: nexus-data-vol
emptyDir: {}
containers:
- name: nexus3-container
image: sonatype/nexus3
volumeMounts:
- name: nexus-data-vol
mountPath: /nexus-data
Định nghĩa dịch vụ:
apiVersion: v1
kind: Service
metadata:
name: nexus3-service
spec:
type: NodePort
ports:
- port: 8081
nodePort: 30390
protocol: TCP
targetPort: 8081
selector:
app: nexus3
Và sau đó tạo pod và dịch vụ mà không có sự cho phép từ chối hoặc các lỗi khác:
# kubectl create -f nexus3.yaml
# kubectl create -f nexus3-svc.yaml
Hãy thử đăng nhập bộ chứa Nexus3 và kiểm tra chủ sở hữu / quyền của / nexus-data:
# kubectl exec -it nexus3 -- sh
sh-4.2$ ls -ld /nexus-data/
drwxrwsrwx 16 root nexus 4096 Mar 13 09:00 /nexus-data/
sh-4.2$
Như bạn có thể thấy, thư mục thuộc về root: nexus và bạn cũng có thể kiểm tra các tệp trong thư mục:
sh-4.2$ cd /nexus-data/
sh-4.2$ ls -l
total 72
drwxr-sr-x 3 nexus nexus 4096 Mar 13 09:00 blobs
drwxr-sr-x 269 nexus nexus 12288 Mar 13 08:59 cache
drwxr-sr-x 8 nexus nexus 4096 Mar 13 09:00 db
drwxr-sr-x 3 nexus nexus 4096 Mar 13 09:00 elasticsearch
drwxr-sr-x 3 nexus nexus 4096 Mar 13 08:59 etc
drwxr-sr-x 2 nexus nexus 4096 Mar 13 08:59 generated-bundles
drwxr-sr-x 2 nexus nexus 4096 Mar 13 08:59 instances
drwxr-sr-x 3 nexus nexus 4096 Mar 13 08:59 javaprefs
drwxr-sr-x 2 nexus nexus 4096 Mar 13 08:59 kar
drwxr-sr-x 3 nexus nexus 4096 Mar 13 08:59 keystores
-rw-r--r-- 1 nexus nexus 8 Mar 13 08:59 lock
drwxr-sr-x 2 nexus nexus 4096 Mar 13 09:00 log
drwxr-sr-x 2 nexus nexus 4096 Mar 13 08:59 orient
-rw-r--r-- 1 nexus nexus 5 Mar 13 08:59 port
drwxr-sr-x 2 nexus nexus 4096 Mar 13 08:59 restore-from-backup
drwxr-sr-x 7 nexus nexus 4096 Mar 13 09:00 tmp
sh-4.2$ touch test-file
sh-4.2$ ls -l test-file
-rw-r--r-- 1 nexus nexus 0 Mar 13 09:13 test-file
sh-4.2$ mkdir test-dir
sh-4.2$ ls -l test-dir
total 0
sh-4.2$ ls -ld test-dir
drwxr-sr-x 2 nexus nexus 4096 Mar 13 09:13 test-dir
Đó là sức mạnh của SetGID :)
Bây giờ hãy kiểm tra dịch vụ có hoạt động hay không. Tôi sử dụng minikube để chạy một cụm kubernetes:
chris@XPS-13-9350 ~ $ minikube service nexus3-service --url
http://192.168.39.95:30390
chris@XPS-13-9350 ~ $ curl -u admin:admin123 http://192.168.39.95:30390/service/metrics/ping
pong
Dịch vụ đang hoạt động như mong đợi.