কুবেরনেটস পডে নির্দিষ্ট ইউআইডি দিয়ে কীভাবে ভলিউম মাউন্ট করবেন?


14

সুতরাং, আমি কুবেরনেটসে এই চিত্রটির ভিত্তিতে নেক্সাসকে চালিত করার চেষ্টা করছি , তবে এতে ব্যর্থ হচ্ছে:

mkdir: cannot create directory '../sonatype-work/nexus3/log': Permission denied
mkdir: cannot create directory '../sonatype-work/nexus3/tmp': Permission denied
Java HotSpot(TM) 64-Bit Server VM warning: Cannot open file ../sonatype-work/nexus3/log/jvm.log due to No such file or directory

ডকুমেন্টেশন থেকে বলা হয়েছে যে প্রক্রিয়াটি ইউআইডি 200 দিয়ে চলে এবং ভলিউমটি অবশ্যই সেই অনুমতিগুলির সাথে মাউন্ট করা উচিত:

A persistent directory, /nexus-data, is used for configuration,
logs, and storage. This directory needs to be writable by the Nexus
process, which runs as UID 200.

এই অনুমতিগুলির সাথে ভলিউম মাউন্ট করার কোনও উপায় খুঁজতে আমি ডকুমেন্টেশনের মাধ্যমে অনুসন্ধান করার চেষ্টা করেছি, তবে এটি করার কোনও উপায় আমি খুঁজে পেলাম না।

আপনি কি পিভিসি / পিভি বা ডিপ্লোয়মেন্টের জন্য কোনটি ইউআইডি দিয়ে ভলিউমটি মাউন্ট করতে পারেন তা কনফিগারেশনে নির্দিষ্ট করতে পারবেন কিনা তা কি কেউ জানেন? যদি তাই হয়, কিভাবে?

উত্তর:


31

UIDসংজ্ঞাটি ব্যবহার করে সেট করার কোনও উপায় নেই Podতবে কুবেরনেটস সর্দার খণ্ডের সঞ্চয় করে UID

সুতরাং, আপনি সেট করতে পারেন UIDদ্বারা InitContainer, যা মূল ধারক সামনে লঞ্চ, শুধু থেকে এটি যোগ containersপথ Deployment:

initContainers:
- name: volume-mount-hack
  image: busybox
  command: ["sh", "-c", "chown -R 200:200 /nexus"]
  volumeMounts:
  - name: <your nexus volume>
    mountPath: /nexus

দুর্দান্ত কাজ করে। এই হ্যাক জন্য ধন্যবাদ। ওরাকল ডিবি ইমেজ সহ এটি ব্যবহার করা।
থমাস হফম্যান

যদিও এটি কনফিগার ম্যাপস এবং সিক্রেটসের সাথে সহায়তা করে না।
টর্স্টেন ব্রোঞ্জার

এটি আমার পক্ষেও কাজ করেছিল (chmod সহ)। আমি আশা করি যে কেউ (বা কুবারনেটস) কম হ্যাকি পদ্ধতি প্রয়োগ করেছেন।
leeman24

আমি command: ["sh", "-c", "chmod 777 /nexus && chown 200:200 /nexus"]ফোল্ডারটি লিখিতযোগ্য তা নিশ্চিত করার মতো কিছু ব্যবহার করছি ।
মার্টিন ট্যাপ

তবে প্রশ্নটি হল, আমরা মূল পাত্রে প্রক্রিয়াটির ইউআইডি কীভাবে জানি? এটি 200 ছাড়াও কিছু হতে পারে, ঠিক আছে?
নওয়াজ

7

অ্যান্টন যেমন বলেছেন, যদিও আমরা পডের সংজ্ঞা ব্যবহার করে ইউআইডি সেট করতে পারি না। এই বিষয়টির জন্য এখানে আরও একতরফা কাজ আসে।

দয়া করে কোনও কুঁচির বা কনটেইনারটির জন্য সুরক্ষা বিষয়বস্তু কনফিগার করুন কুবেরনেটস অফিশিয়াল ডকুমেন্টটি দেখুন

আমি ব্যবহৃত পোড সংজ্ঞা:

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

পরিষেবা সংজ্ঞা:

apiVersion: v1
kind: Service
metadata:
  name: nexus3-service
spec:
  type: NodePort
  ports:
  - port: 8081
    nodePort: 30390
    protocol: TCP
    targetPort: 8081
  selector:
    app: nexus3

এবং তারপরে কোনও অনুমতি অস্বীকার বা অন্যান্য ত্রুটি ছাড়াই পোড এবং পরিষেবা তৈরি করুন:

# kubectl create -f nexus3.yaml
# kubectl create -f nexus3-svc.yaml

Nexus3 ধারকটিতে লগইন করার চেষ্টা করুন এবং / নেক্সাস-ডেটার মালিক / অনুমতি পরীক্ষা করুন:

# 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$

আপনি দেখতে পাচ্ছেন যে ডিরেক্টরিটি মূল: নেক্সাসের অন্তর্ভুক্ত এবং আপনি ডিরেক্টরিতে থাকা ফাইলগুলিও পরীক্ষা করতে পারেন:

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

এটি সেটজিডের শক্তি :)

এখন আসুন পরিষেবাটি কাজ করছে কিনা তা যাচাই করে দেখি। আমি একটি কুবেরনেটস ক্লাস্টার চালাতে মিনিক्यूब ব্যবহার করি:

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

পরিষেবাটি প্রত্যাশার মতো কাজ করছে।


0

সংক্রান্ত Torsten Bronger এর মন্তব্য , যখন আপনি শুঁটি বৈশিষ্ট ভলিউম অ্যারের মধ্যে ConfigMaps এবং সিক্রেটস কনফিগার, আপনি অ্যাক্সেস আপনি ব্যবহার করতে চান, অনুমতি অনুমতি নির্দিষ্ট করতে পারেন defaultModeসম্পত্তি, তাই যখন আপনি সেট গ্রুপ এবং ব্যবহারকারী মালিকানা না করতে পারেন, আপনি সেই মাউন্টগুলিতে পডের প্রক্রিয়াগুলিকে ফাইলগুলি পড়তে দেয়। কোনও গোপন বা কনফিগারেশন মানচিত্রে লেখার অর্থ আসলেই বোঝা যায় না এবং পূর্বনির্ধারিত অনুমতি মোডটি যাইহোক 755 হয় তাই কোনও ব্যবহারকারীর পক্ষে পড়া উচিত নয় an

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.