مینیو چیست؟
مینیو مخزن منبع باز سازگار با S3 است که می تواند در لینود میزبانی شود.
استقرار خوشه های کوبنتس در هر دو حالت مستقل و توزیع شده پشتیبانی می شوند.
در این آموزش ، از Kubespray برای استقرار یک خوشه Kubernetes بر روی سه سرور Ubuntu 04/16 استفاده شده است.
Kubespray با کتابهای playable (Ansible) همراه است که پیکربندی را در خوشه ساده می کند.
سپس ما مینیو را در خوشه به صورت آفلاین نصب می کنیم تا به شما نشان دهیم چگونه
خدمات را ایجاد کنید چگونه برای شروع
برای اهداف نمایشی ، این راهنما etc.d و جادوگر Kubernetes را در همان گره نصب می کند.
برای خوشه های در دسترس بالا ، پیکربندی متفاوتی مورد نیاز است که خارج از محدوده این راهنماست.
Y کاربر با امتیازات sudo باید باشد.
این خوشه می تواند به صورت محلی با استفاده از Minikube مدل شود تا به Kubernetes عادت کند.
sheet ورق تقلب Kubectl برای همه دستورات لازم Kubernetes قسمت 1
آدرس های IP هر گره در خوشه و نقش های آنها به عنوان kubernetes-master-IP نمایش داده می شود ، etc.d-ip و slave-IP
اگر شما ما را نمی خواهید برای نصب Ansible و سایر نرم افزارها به صورت محلی ، از سرور دیگری به عنوان سوئیسی که برای اتصال به هاست استفاده خواهد شد ، در نظر بگیرید.
نصب Ansible
به روز رسانی در صورت لزوم به روز کنید.
sudo apt-get install software-خصوصیات معمول
اضافه کردن PPA قابل اعتماد ؛ را فشار دهید Enter
را فشار دهید sudo apt-add-repartaory ppa: ansible / ansible
مجدداً بروزرسانی کنید ، سپس نصب کنید.
sudo به روزرسانی مناسب
sudo apt-get install ansible
نصب اضافی
Kubespray به عنوان یک مخزن Git وجود دارد و برای دستکاری آدرس شبکه نیاز به پایتون نتاددر دارد.
- نصب Git:
sudo apt install git - Python-netaddr را نصب کنید:
sudo apt نصب python-netaddr
Kubespray را دوباره پیکربندی کنید
Kubespray دارای چندین گزینه پیکربندی است که در این راهنما نشان داده نشده است.
برای اطلاعات بیشتر در مورد مباحثی از قبیل شبکه سازی با Flannel ، نصب Helm و استقرار در مقیاس بزرگ به اسناد مراجعه کنید.
cl خوشه Kubernetes تمام شده را با Ansible & Kubespray
کلون مخزن Kubespray را از Github بسازید ، سپس به repo بروید.
کلون git https://github.com/kubernetes-incubator/kubespray.git
cd kubespray
برچسب را برای نسخه مورد نظر Kubespray چک کنید.
این کتابچه راهنمای نسخه 2.4.0 نوشته شده است.
git checkout -b tag / v.2.4.0
run را تغییر دهید تا run / kubespray / ansible.cfg را اجرا کنید و به عنوان این کاربر ، لیست پخش Ansible را در میزبان ها اجرا کنید.
نام کاربری را با نام حساب Unix خود جایگزین کنید. remote_user = نام کاربری در [defaults].
[ssh_connection]
pipelining = True
ssh_args = -o ControlMaster = auto -o ControlPersist = 30m -o ConnectionAttempts = 100 -O UserKnostH / dev / null
#control_path = ~ / .ssh / ansible - ٪٪ r @ ٪٪ h: ٪٪ p
[defaults]
host_key_checking = جمع
غلط
جمع = هوشمند
fact_caching = jsonfile
= fact_ / tmp
stdout_callback = skippy
کتابخانه = ./ کتابخانه
callback_whitelist = profile_tasks [196543] = نقش ها: $ VIRTUAL_ENV / usr / local / share / kubespray / role: $ VIRTUAL_ENV / usr / local / share / ansible / role: / usr / share / kubespray / role
deprecation_warnings = ] False
remote_user = نام کاربری
فهرست موجودی را کپی کرده و نام آن را تغییر نام دهید:
cp -r inventory / sample inventory / minio
برای ایجاد لیستی از گره ها از مولد Kubespray استفاده کنید. برای Ansible.
لیستی از آدرس های IP را برای آنها اعلام کنید azhdogo سرور.
اعلام -a IPS = (kubernetes استاد-IP-IP etcd برده IP)
CONFIG_FILE = موجودی / minio / hosts.ini python3rib / inventory_builder / inventory.py $ {IPS [@]}
هنگام اعلام IPS $ از نام هاست استفاده نکنید. در حال حاضر ، تولیدکننده موجودی فقط از آدرس های IP پشتیبانی می کند.
نمونه ای از پیکربندی یک خوشه در این راهنما.
[all]
node1 ansible_host = kubernetes-master-ip ip = kubernetes-master-ip
node2 ansible_host = ip ip = etc.d-ip
node3 ansible_host = slave-ip ip = slave-ip
[kube-master]
گره 1
[kube-node]
گره 2
گره 3
[etcd]
گره 1
[k8s-cluster:children]
kube-node
kube-master
[calico-rr]
[vault]
node1
node2
node3
Uncomment the docker_dns_servers_strict: خط کاذب در ~ /kubernetes/inventory/minio/group_vars/allouplvars
قبل از اینکه Ansible بتواند Playbooks Kubespray را به طور صحیح راه اندازی کند ، باید پسورد ها را برای کاربر sudo در هاست فعال کنید و swap غیرفعال شود.
تأیید کنید که کاربر مشخص شده قبل از شروع این مراحل روی هر سرور وجود دارد.
این بخش چگونه می توان کلیدهای SSH را برای هر سرور کپی کرد و پرونده sudoers را از طریق SSH تغییر داد.
اگر یکی از آن ها را ندارید یک کلید خصوصی ایجاد کنید:
ssh-keygen -b 4 096
با استفاده از متغیر قبلاً اعلام شده $ IPS ، کلید SSH را در هر آدرس IP کپی کنید و نام کاربری را برای هر یک از میزبان ها جایگزین کنید.
برای IP در $ IPS $ [@]}؛ نام کاربری ssh-copy-id را انجام دهید @ $ IP؛ انجام شده
یک sudo بدون رمز را روی گره ها ایجاد کنید
شکل زیر یک حلقه است که نام کاربری ALL = (ALL: ALL) NOPASSWD را اضافه می کند: ALL خط به آخرین خط پرونده sudoers.
از شما خواسته می شود که رمز عبور را برای هر سرور وارد کنید. [19659017] برای IP در $ $ {IPS [@]}؛ ssh -t نام کاربری @ $ IP "echo" نام کاربری ALL = (ALL: ALL) NOPASSWD: ALL '| sudo EDITOR =' tee -a 'visudo "؛ انجام شده
مبادله را غیرفعال کنید
این قطعه قطعه را در زیر ~ / kubespray / role / bootstrap-os / jobs / main.yml اضافه کنید تا swap را با استفاده از Ansible غیرفعال کنید.
- name: swapfile from / etc / حذف کنید. fstab
سوار:
نام: مبادله
fstype: مبادله
حالت: غایب
- name: swap را غیرفعال کنید
دستور: swapoff -a
راه اندازی Playbook Ansible
قبل از شروع بازی Playible ، اطمینان حاصل کنید که فایروال ها غیرفعال شده اند تا از خطاهای پیش بینی نشده جلوگیری کنند.
cluster.yml را اجرا کنید.
اگر کلید خصوصی شما نامگذاری شده است به مکان دیگری یا در جای دیگر واقع شوید ، —private-key = / path / to / id_rsa
ansible-playbook -i inventory / minio / hosts.ini cluster.yml -b -v
این ممکن است تا 20 دقیقه طول بکشد.
نحوه اضافه کردن یا حذف هاست
به to / kubespray / inventory / minio / hosts.ini بروید و آدرس IP میزبان جدید را اضافه کنید. [19659010] برای کپی کردن کلید SSH در یک هاست جدید ، ssh-copy-id را اجرا کنید :
ssh-copy-id نام کاربری @ new-node-ip
اجرای scale.yml :
ansible-playbook -i inventory / minio / hosts.ini scale.yml -b -v
برای لیست گره های موجود ، SSH را به گره اصلی Kubernetes دنبال کنید:
kubectl گره ها را بدست آورید
برای حذف یک گره ، کافیست سرور را خاموش کنید و گره اصلی را پاک کنید با:
kubectl گره حذف
Minio on Kubernetes
دستورات این بخش باید بر روی گره kubernetes-master اجرا شوند
ایجاد یک حجم مداوم
حجم دائمی (PV) انتزاعی در Kubernetes است که نشان دهنده یک واحد ذخیره سازی است. اختصاص داده شده در خوشه.
PersistentVolumeClaim (PVC) به ماژول اجازه می دهد تا از حافظه اختصاص داده شده توسط PV استفاده کند.
در این بخش PV 15Gi (gibibytes) ایجاد می شود و سپس به Minio اجازه می دهد 10Gi فضای مصرف کند.
در گره اصلی Kubernetes ، یک پرونده با نام minio-volume.yaml ایجاد کنید. با YAML زیر نشان داده شده در زیر.
نام کاربری را با hostPath با مسیر مناسب جایگزین کنید.
نوع: PersistentVolume
apiVersion: v1
ابرداده:
نام: minio-pv-volume
برچسب ها:
نوع: محلی
مشخصات:
storeClassName: کتابچه راهنمای کاربر
ظرفیت:
ذخیره سازی: 15Gi
دسترسی به حالت ها:
- ReadWriteOnce
hostPath:
path: "/ home / username"
PV را بسازید:
kubectl ایجاد -f minio-volume.yaml
PVC را با استفاده از minio-pvc.yaml ایجاد کنید:
apiVersion: v1
kind: PersistentVolumeClaim
ابرداده:
نام: minio-pv-ادعا
برچسب ها:
برنامه: ادعای کوچک ذخیره سازی
مشخصات:
storeClassName: کتابچه راهنمای کاربر
دسترسی به حالت ها:
- ReadWriteOnce
منابع:
درخواست ها:
ذخیره سازی: 10Gi
PVC ایجاد کنید:
kubectl ایجاد -f minio-pvc.yaml
ایجاد یک استقرار
یک پیکربندی استقرار را در minio-deploy.yaml ایجاد کنید و نام کاربری را در آخرین خط جایگزین کنید.
دسترسی و کلید مخفی در پرونده YAML وجود دارد.
apiVersion: apps / v1 # برای نسخه های k8s قبل از 1.9.0 از برنامه ها / v1beta2 و قبل از 1.8.0 از الحاقات / v1beta1
نوع: استقرار
ابرداده:
# این نام به طور منحصر به فرد استقرار را مشخص می کند
نام: مینی استقرار
مشخصات:
انتخاب کننده:
لابلای مسابقه:
برنامه: مینیو
استراتژی:
نوع: ایجاد مجدد
الگوی:
ابرداده:
برچسب ها:
# لیبل به عنوان انتخاب در سرویس استفاده می شود.
برنامه: مینیو
مشخصات:
# رجوع شود به پی وی سی ایجاد شده در اوایل
جلد:
- نام: ذخیره سازی
مداوم VolumeClaim:
# نام PVC ایجاد شده در اوایل سال
pretendName: minio-pv-pretend
ظروف:
- نام: مینیو
# تصویر پیش فرض مینیو را از داکر هاب می کشد
تصویر: minio / minio: آخرین
استدلال می کند:
- سرور
- / ذخیره سازی
env:
# کلید دسترسی مینیو و کلید مخفی
- نام: MINIO_ACCESS_KEY
مقدار: "minio"
- نام: MINIO_SECRET_KEY
مقدار: "minio123"
پورت ها:
- bowlPort: 9000
hostPort: 9000
# حجم را به غلاف سوار كنید
میزان حجم:
- name: storage # باید با نام حجم مطابقت داشته باشد ، بالاتر از
mountPath: "/ home / username"
استقرار ایجاد کنید
kubectl ایجاد -f minio-deployment.yaml
ایجاد یک سرویس
لیستی از خدمات در حال اجرا را مشاهده کنید.
در زیر ستون PORT (S) ، می بینید که سرویس مینیو در داخل درگاه 9000 و 30593 کار می کند – این یک درگاه خارجی از طریق LoadBalancer است.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT (S) سن
kubernetes ClusterIP 10.233.0.1 443 / TCP 1d
minio-service LoadBalancer 10.233.28.163 9000: 30593 / TCP 20m
در مرورگر ، از هر سرور موجود در خوشه توسط پورت به آدرس IP عمومی بروید. (در مثال بالا 30593).
اعتبارهایی را که قبلاً نوشتید وارد کنید.
19659163] Minio عملکردی مشابه S3 دارد: بارگیری پرونده ها ، ایجاد بخش ها و ذخیره سایر داده ها.
