এটি এই বিভাগটির বহু পৃষ্ঠার মুদ্রণযোগ্য দর্শন। মুদ্রণ করতে এখানে ক্লিক করুন.

এই পৃষ্ঠার নিয়মিত দৃশ্যে ফিরে আসুন.

ডকুমেন্টেশন

1 - কুবারনেটিস ডকুমেন্টেশন

কুবারনেটিস হলো একটি ওপেন সোর্স কন্টেইনার অর্কেস্ট্রেশন ইঞ্জিন যাতে কন্টেইনারাইজড অ্যাপ্লিকেশনের ডিপ্লয়মেন্ট, স্কেলিং এবং ম্যানেজমেন্ট করা যায়। ওপেন সোর্স প্রকল্পটি Cloud Native Computing Foundation দ্বারা হোস্ট করা হয়।

1.1 - উপলব্ধ ডকুমেন্টেশনের সংস্করণ

এই ওয়েবসাইটটিতে কুবারনেটিসের বর্তমান সংস্করণ এবং কুবারনেটিসের আগের চারটি সংস্করণের ডকুমেন্টেশন রয়েছে।

কুবারনেটিস সংস্করণের জন্য ডকুমেন্টেশনের প্রাপ্যতা সেই রিলিজটি বর্তমানে সাপোর্টেড কিনা তা থেকে আলাদা। কুবারনেটিসের কোন সংস্করণ আনুষ্ঠানিকভাবে সাপোর্টেড, এবং কতদিনের জন্য তা জানতে সাপোর্ট সময়কাল পড়ুন।

2 - শুরু করা যাক

এই বিভাগে কুবারনেটিস সেট আপ এবং চালানোর বিভিন্ন উপায় তালিকাভুক্ত করা হয়েছে। আপনি যখন কুবারনেটিস ইনস্টল করেন, তখন : রক্ষণাবেক্ষণের সহজতা, নিরাপত্তা, কন্ট্রোল, উপলব্ধ রিসোর্স, এবং একটি ক্লাস্টার পরিচালনা ও পরিচালনার জন্য প্রয়োজনীয় দক্ষতা এর উপর ভিত্তি করে একটি ইনস্টলেশন প্রকার নির্বাচন করুন ।

আপনি একটি কুবারনেটিস ক্লাস্টার স্থাপন করতে কুবারনেটিস ডাউনলোড করতে পারেন একটি স্থানীয় মেশিনে, ক্লাউডে বা আপনার নিজস্ব ডেটাসেন্টারের জন্য।

বেশ কিছু কুবারনেটিস উপাদান যেমন kube-apiserver বা kube-proxy কন্টেইনার ইমেজ হিসাবেও ক্লাস্টারের মধ্যে স্থাপন করা যায়।

যেখানেই সম্ভব কুবারনেটিস উপাদানগুলি কন্টেইনার ইমেজ হিসাবে রান করা , এবং কুবারনেটিস দ্বারা সেই উপাদানগুলি পরিচালনা করার সুপারিশ করা হয়েছে । যে উপাদানগুলি কন্টেইনার রান করে - বিশেষভাবে, kubelet - সেগুলিকে এই বিভাগে অন্তর্ভুক্ত করা যায় না।

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

লার্নিং পরিবেশ

আপনি যদি কুবারনেটিস শিখছেন, কুবারনেটিস কমিউনিটি দ্বারা সমর্থিত টুল ব্যবহার করে, ইকোসিস্টেম টুল ব্যবহার করে লোকাল মেশিনে কুবারনেটিস ক্লাস্টার সেট আপ করার জন্য তাহলে ইনস্টল টুলস দেখুন।

প্রোডাকশন পরিবেশ

একটি প্রোডাকশন পরিবেশ এর সমাধান মূল্যায়ন করার সময় বিবেচনা করুন কোন দিকগুলো একটি কুবারনেটিস ক্লাস্টার (বা abstractions) পরিচালনা করে আপনি নিজের মাধ্যমেে পরিচালনা করতে চান এবং কোন দিকগুলো আপনি একটি প্রদানকারীর কাছে হস্তান্তর করতে পছন্দ করেন।

নিজের থেকে একটি ক্লাস্টার পরিচালনার জন্য কুবারনেটিস হতে আনুষ্ঠানিকভাবে সমর্থিত টুল kubeadm রয়েছে।

এর পরের কি

কুবারনেটিস এর কন্ট্রোল প্লেন এর জন্য ডিজাইন করা হয়েছে যা লিনাক্সে চালান। আপনার ক্লাস্টারের মধ্যে আপনি লিনাক্স বা উইন্ডোজ সহ অন্যান্য অপারেটিং সিস্টেমে অ্যাপ্লিকেশন চালাতে পারেন ।

2.1 - লার্নিং এনভায়রনমেন্ট

2.2 - প্রোডাকশন এনভায়রনমেন্ট

একটি প্রোডাকশন-কোয়ালিটির কুবারনেটিস ক্লাস্টার তৈরি করুন

একটি প্রোডাকশন-কোয়ালিটির কুবারনেটিস ক্লাস্টারের জন্য পরিকল্পনা এবং প্রস্তুতি প্রয়োজন। আপনার কুবারনেটিস ক্লাস্টার যদি গুরুতর ওয়ার্কলোড চালাতে হয়, তাহলে এটি অবশ্যই সহনশীল হওয়ার জন্য কনফিগার করতে হবে। এই পৃষ্ঠাটি ব্যাখ্যা করে যে আপনি একটি প্রোডাকশন-রেডি ক্লাস্টার সেট আপ করতে নিতে পারেন, অথবা প্রোডাকশন ব্যবহারের জন্য একটি বিদ্যমান ক্লাস্টার প্রচার করতে পারেন। আপনি যদি ইতিমধ্যেই প্রোডাকশন সেটআপের সাথে পরিচিত হন এবং লিঙ্কগুলি চান তবে সরাসরি পরবর্তী কি তে যান।

প্রোডাকশন বিবেচনা

সাধারণত, ব্যক্তিগত শিক্ষা, ডেভেলপমেন্ট, বা টেস্ট এনভায়রনমেন্ট কুবারনেটিস এর চেয়ে বেশি প্রয়োজনীয়তা রয়েছে একটি প্রোডাকশন কুবারনেটিস ক্লাস্টার এনভায়রনমেন্টে। একটি প্রোডাকশন এনভায়রনমেন্টের প্রয়োজন হতে পারে অনেক ব্যবহারকারীর দ্বারা নিরাপদ অ্যাক্সেস, ধারাবাহিক প্রাপ্যতা, এবং চাহিদা পরিবর্তনে মানিয়ে নেওয়ার জন্য রিসোর্স।

আপনি যেখানে আপনার প্রোডাকশন কুবারনেটিস এনভায়রনমেন্ট লাইভ করাতে চান তা নির্ধারণ করুন (প্রেমিসেস বা একটি ক্লাউড) এবং আপনি যে পরিমাণ ব্যবস্থাপনা নিতে চান বা অন্যদের হাতে দিতে চান, বিবেচনা করুন কিভাবে একটি কুবারনেটিস ক্লাস্টারের জন্য আপনার প্রয়োজনীয়তাগুলি নিম্নলিখিত সমস্যাগুলির দ্বারা প্রভাবিত হয়:

  • প্রাপ্যতা: একটি একক-মেশিন কুবারনেটিস লার্নিং এনভায়রনমেন্ট ব্যর্থতার একক পয়েন্ট আছে। একটি অত্যন্ত প্রাপ্য ক্লাস্টার তৈরি করার অর্থ বিবেচনা করা:

    • ওয়ার্কার নোড থেকে কন্ট্রোল প্লেন আলাদা করা।
    • মাল্টিপল নোডের উপর কন্ট্রোল প্লেন কম্পোনেন্ট প্রতিলিপি করা।
    • ক্লাস্টারের API সার্ভার-এ ব্যালেন্সিং ট্রাফিক লোড করুন।
    • পর্যাপ্ত ওয়ার্কার নোড এভেইল্যাবল থাকা, বা দ্রুত এভেইল্যাবল হতে সক্ষম, কারণ পরিবর্তিত ওয়ার্কলোড এটি নিশ্চিত করে।
  • স্কেল: আপনি যদি আশা করেন আপনার প্রোডাকশন কুবারনেটিস এনভায়রনমেন্ট একটি স্থিতিশীল পরিমাণে চাহিদা পাবে, তাহলে আপনি আপনার প্রয়োজনীয় ক্ষমতার জন্য সেট আপ করতে সক্ষম হবেন এবং সম্পন্ন হবেন। কিন্তু, যদি সময়ের সাথে সাথে আপনার চাহিদা বাড়ে বা নাটকীয়ভাবে পরিবর্তন করে সিজন বা বিশেষ ইভেন্টের মতো জিনিসের উপর ভিত্তি করে, তাহলে আপনাকে পরিকল্পনা করতে হবে কিভাবে কন্ট্রোল প্লেন এবং ওয়ার্কার নোডগুলিতে আরও অনুরোধ থেকে বর্ধিত চাপ কমাতে বা অব্যবহৃত রিসোর্সগুলি কমাতে স্কেল কমাতে হবে।

  • নিরাপত্তা এবং অ্যাক্সেস ব্যবস্থাপনা: আপনার নিজের কুবারনেটিস লার্নিং ক্লাস্টারে আপনার সম্পূর্ণ অ্যাডমিন সুবিধা রয়েছে। কিন্তু গুরুত্বপূর্ণ ওয়ার্কলোড সহ ভাগ করা ক্লাস্টার, এবং এক বা দুইজনের বেশি ব্যবহারকারীর জন্য কে এবং কি ক্লাস্টার রিসোর্স অ্যাক্সেস করতে পারে তার জন্য আরও পরিমার্জিত পদ্ধতির প্রয়োজন। আপনি রোল-বেসড অ্যাক্সেস কন্ট্রোল (RBAC) এবং অন্যান্য নিরাপত্তা ব্যবস্থা ব্যবহার করতে পারেন যাতে ব্যবহারকারী এবং ওয়ার্কলোড তাদের প্রয়োজনীয় রিসোর্সগুলিতে অ্যাক্সেস পেতে পারে ওয়ার্কলোড, এবং ক্লাস্টার নিজেই নিরাপদ। পলিসি এবং কন্টেইনার রিসোর্স পরিচালনার মাধ্যমে ব্যবহারকারী এবং ওয়ার্কলোড যে রিসোর্সগুলি অ্যাক্সেস করতে পারে তার উপর আপনি সীমা নির্ধারণ করতে পারেন।

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

  • সার্ভারহীন: কোনও ক্লাস্টার পরিচালনা না করেই কেবল তৃতীয় পক্ষের টুলসগুলিতে ওয়ার্কলোড চালান। CPU ব্যবহার, মেমরি এবং ডিস্ক অনুরোধের মতো জিনিসগুলির জন্য আপনাকে চার্জ করা হবে।
  • ম্যানেজড কন্ট্রোল প্লেন: প্রদানকারীকে স্কেল এবং প্রাপ্যতা পরিচালনা করতে দিন ক্লাস্টারের কন্ট্রোল প্লেন, সেইসাথে প্যাচ এবং আপগ্রেড হ্যান্ডেল করতে দিন।
  • ম্যানেজড ওয়ার্কার নোড: আপনার প্রয়োজন মেটাতে নোডের পুল কনফিগার করুন, তারপর প্রদানকারী নিশ্চিত করে যে সেই নোডগুলি আয়ত্তগত এবং প্রয়োজনে আপগ্রেড বাস্তবায়নের জন্য প্রস্তুত।
  • ইন্টিগ্রেশন: এমন প্রদানকারী আছে যারা কুবারনেটিসকে অন্য সার্ভিসের সাথে একীভূত করে যা আপনার প্রয়োজন হতে পারে, যেমন স্টোরেজ, কন্টেইনার রেজিস্ট্রি, অথেনটিকেশন পদ্ধতি, এবং ডেভেলপমেন্ট টুলস।

আপনি নিজে একটি প্রোডাকশন কুবারনেটিস ক্লাস্টার তৈরি করুন বা অংশীদার এর সাথে কাজ করুন, নিম্নলিখিত বিভাগগুলি পর্যালোচনা করুন যাতে আপনার প্রয়োজনগুলি মূল্যায়ন করা যায় আপনার ক্লাস্টারের কন্ট্রোল প্লেন, ওয়ার্কার নোড, ইউজার অ্যাক্সেস, এবং ওয়ার্কলোড রিসোর্স

প্রোডাকশন ক্লাস্টার সেটআপ

একটি প্রোডাকশন-কোয়ালিটির কুবারনেটিস ক্লাস্টারে, কন্ট্রোল প্লেন সার্ভিসগুলি থেকে ক্লাস্টার পরিচালনা করে যা মাল্টিপল কম্পিউটারে ছড়িয়ে দেওয়া যেতে পারে বিভিন্ন উপায়ে. প্রতিটি ওয়ার্কার নোড, যাইহোক, একটি একক সত্তা প্রতিনিধিত্ব করে যে কুবারনেটিস পড চালানোর জন্য কনফিগার করা হয়েছে।

প্রোডাকশন কন্ট্রোল প্লেন

সহজতম কুবারনেটিস ক্লাস্টারে একই মেশিনে পুরো কন্ট্রোল প্লেন এবং ওয়ার্কার নোড সার্ভিসগুলি চলে। আপনি ওয়ার্কার নোডগুলি যোগ করে সেই এনভায়রনমেন্ট বাড়াতে পারেন, যেমনটি কুবারনেটিস কম্পোনেন্ট এ চিত্রিত চিত্রে প্রতিফলিত হয়েছে। যদি ক্লাস্টারটি অল্প সময়ের জন্য পাওয়া যায় বা কিছু গুরুতর ভুল হয়ে গেলে তা বাতিল করা যেতে পারে, তাহলে এটি আপনার প্রয়োজন মেটাতে পারে।

আপনার যদি আরও স্থায়ী, অত্যন্ত সহজলভ্য ক্লাস্টারের প্রয়োজন হয় তবে, আপনার কন্ট্রোল প্লেন প্রসারিত করার উপায়গুলি বিবেচনা করা উচিত। নকশা অনুসারে, একক মেশিনে চলমান এক-মেশিন কন্ট্রোল প্লেন সার্ভিসগুলি খুব বেশি সহজলভ্য নয়। যদি ক্লাস্টার চালু রাখা এবং চালানো এবং কিছু ভুল হয়ে গেলে তা মেরামত করা যায় তা নিশ্চিত করা গুরুত্বপূর্ণ, এই পদক্ষেপগুলি বিবেচনা করুন:

  • ডিপ্লয়মেন্ট টুল নির্বাচন করুন: আপনি kubeadm, kops, এবং kubespray-এর মতো টুল ব্যবহার করে একটি কন্ট্রোল প্লেন স্থাপন করতে পারেন। প্রতিটি ডিপ্লয়মেন্ট পদ্ধতি ব্যবহার করে প্রোডাকশন-কোয়ালিটির ডিপ্লয়মেন্টের জন্য টিপস শিখতে ডিপ্লয়মেন্ট টুলের সাথে কুবারনেটিস ইনস্টল করার পদ্ধতি দেখুন। বিভিন্ন কন্টেইনার রানটাইম আপনার ডিপ্লয়মেন্টের সাথে ব্যবহার করার জন্য সহজলভ্য।
  • সার্টিফিকেট পরিচালনা করুন: কন্ট্রোল প্লেন সার্ভিসগুলির মধ্যে সুরক্ষিত যোগাযোগ সার্টিফিকেট ব্যবহার করে প্রয়োগ করা হয়। সার্টিফিকেটগুলি স্থাপনের সময় স্বয়ংক্রিয়ভাবে তৈরি হয় বা আপনি আপনার নিজের সার্টিফিকেট কর্তৃপক্ষ ব্যবহার করে সেগুলি তৈরি করতে পারেন৷ বিস্তারিত জানার জন্য PKI সার্টিফিকেট এবং প্রয়োজনীয়তা দেখুন।
  • apiserver এর জন্য লোড ব্যালেন্সার কনফিগার করুন: বিভিন্ন নোডে চলমান apiserver সার্ভিস দৃষ্টান্তগুলিতে বহিরাগত API অনুরোধগুলি বিতরণ করতে একটি লোড ব্যালেন্সার কনফিগার করুন। দেখুন একটি বাহ্যিক লোড ব্যালেন্সার তৈরি করুন বিস্তারিত জানার জন্য.
  • পৃথক এবং ব্যাকআপ etcd সার্ভিস: etcd সার্ভিসগুলি হয় অন্যান্য কন্ট্রোল প্লেন সার্ভিসগুলির মতো একই মেশিনে চলতে পারে বা অতিরিক্ত নিরাপত্তা এবং প্রাপ্যতার জন্য আলাদা মেশিনে চলতে পারে। যেহেতু etcd ক্লাস্টার কনফিগারেশন ডেটা সঞ্চয় করে, তাই etcd ডাটাবেসের ব্যাকআপ নিয়মিত করা উচিত যাতে আপনি প্রয়োজনে সেই ডাটাবেসটি মেরামত করতে পারেন। etcd কনফিগার করা এবং ব্যবহার করার বিষয়ে বিস্তারিত জানার জন্য etcd FAQ দেখুন। কুবারনেটিস-এর জন্য অপারেটিং etcd ক্লাস্টার দেখুন এবং kubeadm-এর সাথে একটি উচ্চ প্রাপ্যতা etcd ক্লাস্টার সেট আপ করুন বিস্তারিত জানার জন্য।
  • মাল্টিপল কন্ট্রোল প্লেন সিস্টেম তৈরি করুন: উচ্চ প্রাপ্যতা জন্য, কন্ট্রোল প্লেন একটি একক মেশিনে সীমাবদ্ধ করা উচিত নয়। যদি কন্ট্রোল প্লেন সার্ভিসগুলি একটি init সার্ভিস দ্বারা চালিত হয় (যেমন systemd), প্রতিটি সার্ভিস কমপক্ষে তিনটি মেশিনে চালানো উচিত। যাইহোক, কুবারনেটিস-এ পড হিসাবে কন্ট্রোল প্লেন সার্ভিসগুলি চালানো নিশ্চিত করে যে আপনার অনুরোধ করা সার্ভিসগুলির প্রতিলিপিকৃত সংখ্যা সর্বদা সহজলভ্য থাকবে৷ সময়সূচী ত্রুটি সহনশীল হওয়া উচিত, কিন্তু অত্যন্ত সহজলভ্য নয়। কুবারনেটিস সার্ভিসগুলির লিডার নির্বাচন করার জন্য কিছু ডিপ্লয়মেন্টে টুলগুলি Raft সম্মতিমূলক অ্যালগরিদম সেট আপ করে৷ যদি প্রাইমারিটা চলে যায়, অন্য একটি সার্ভিস নিজেকে নির্বাচন করে এবং দখল করে নেয়।
  • মাল্টিপল জোন স্প্যান করুন: যদি আপনার ক্লাস্টারকে সর্বদা এভেইল্যাবল রাখা গুরুত্বপূর্ণ হয়, তবে একটি ক্লাস্টার তৈরি করার কথা বিবেচনা করুন যা মাল্টিপল ডেটা সেন্টার জুড়ে চলে, ক্লাউড এনভায়রনমেন্টে জোন হিসাবে উল্লেখ করা হয়। জোনের গ্রুপগুলিকে রিজিওন হিসাবে উল্লেখ করা হয়। একই রিজিওনে মাল্টিপল জোনে একটি ক্লাস্টার ছড়িয়ে দেওয়ার মাধ্যমে, এটি একটি জোন অপ্রাপ্য হয়ে গেলেও আপনার ক্লাস্টারটি কাজ করা চালিয়ে যাওয়ার সম্ভাবনাকে উন্নত করতে পারে। বিস্তারিত জানার জন্য মাল্টিপল জোনে চলমান দেখুন।
  • চলমান ফিচারগুলি পরিচালনা করুন: আপনি যদি সময়ের সাথে সাথে আপনার ক্লাস্টার রাখার পরিকল্পনা করেন তবে এর স্বাস্থ্য এবং নিরাপত্তা বজায় রাখার জন্য আপনাকে কিছু কাজ করতে হবে। উদাহরণস্বরূপ, আপনি যদি kubeadm-এর সাথে ইনস্টল করেন, তাহলে আপনাকে সার্টিফিকেট ম্যানেজমেন্ট এবং kubeadm ক্লাস্টার আপগ্রেড করা সাহায্য করার জন্য নির্দেশাবলী রয়েছে। কুবারনেটিস অ্যাডমিনিস্ট্রেটিভ কাজগুলির একটি দীর্ঘ তালিকার জন্য একটি ক্লাস্টার পরিচালনা দেখুন।

আপনি যখন কন্ট্রোল প্লেন সার্ভিসগুলি চালান তখন এভেইল্যাবল বিকল্পগুলি সম্পর্কে জানতে, kube-apiserver, kube-controller-manager দেখুন, এবং kube-scheduler কম্পোনেন্ট পৃষ্ঠা। হাইলি এভেইল্যাবল কন্ট্রোল প্লেন উদাহরণের জন্য, হাইলি এভেইল্যাবল টপোলজির বিকল্পগুলি, kubeadm-এর সাহায্যে হাইলি এভেইল্যাবল ক্লাস্টার তৈরি করা দেখুন, এবং অপারেটিং etcd ক্লাস্টার-এর জন্য কুবারনেটিস। একটি etcd ব্যাকআপ প্ল্যান তৈরির তথ্যের জন্য একটি etcd ক্লাস্টার ব্যাক আপ করা দেখুন।

প্রোডাকশন ওয়ার্কার নোড

প্রোডাকশন-কোয়ালিটির ওয়ার্কলোড স্থিতিস্থাপক হতে হবে এবং তারা যেকোন কিছুর উপর নির্ভর করে স্থিতিস্থাপক হতে হবে (যেমন CoreDNS)। আপনি নিজের কন্ট্রোল প্লেন পরিচালনা করুন বা একটি ক্লাউড প্রদানকারী আপনার জন্য এটা করে, আপনাকে বিবেচনা করতে হবে কিভাবে আপনি আপনার ওয়ার্কার নোডগুলি পরিচালনা করতে চান (এছাড়াও সহজভাবে নোড হিসাবে উল্লেখ করা হয়)।

  • নোডগুলি কনফিগার করুন: নোডগুলি ফিজিক্যাল বা ভার্চুয়াল মেশিন হতে পারে। আপনি যদি নিজের নোডগুলি তৈরি করতে এবং পরিচালনা করতে চান তবে আপনি একটি সমর্থিত অপারেটিং সিস্টেম ইনস্টল করতে পারেন, তারপরে উপযুক্ত নোড সার্ভিসগুলি যোগ করুন এবং চালান। বিবেচনা করুন:
    • উপযুক্ত মেমরি, সিপি উ, এবং ডিস্কের গতি এবং স্টোরেজ ক্ষমতা এভেইল্যাবল থাকার মাধ্যমে আপনি যখন নোড সেট আপ করেন তখন আপনার ওয়ার্কলোডের চাহিদা।
    • জেনেরিক কম্পিউটার সিস্টেমগুলি করবে কিনা বা আপনার কাছে এমন ওয়ার্কলোড আছে যেগুলির জন্য জিপিউ প্রসেসর, উইন্ডোজ নোড, বা ভিএম আইসোলেশন প্রয়োজন।
  • ভ্যালিডেট নোড: কিভাবে একটি নোড একটি কুবারনেটিস ক্লাস্টারে যোগদানের প্রয়োজনীয়তা পূরণ করে তা নিশ্চিত করার তথ্যের জন্য ভ্যালিড নোড সেটআপ দেখুন।
  • ক্লাস্টারে নোড যোগ করুন: আপনি যদি নিজের ক্লাস্টার পরিচালনা করেন তাহলে আপনি আপনার নিজস্ব মেশিন সেট আপ করে নোড যোগ করতে পারেন এবং হয় সেগুলিকে ম্যানুয়ালি যোগ করে অথবা ক্লাস্টারের apiserver এ নিজেদের নিবন্ধন করতে পারেন। এই উপায়ে নোড যোগ করার জন্য কুবারনেটিস কিভাবে সেট আপ করতে হয় সে সম্পর্কে তথ্যের জন্য নোডসমুহ বিভাগটি দেখুন।
  • নোড স্কেল করুন: আপনার ক্লাস্টারের শেষ পর্যন্ত যে ক্ষমতা প্রয়োজন তা প্রসারিত করার জন্য একটি পরিকল্পনা করুন। আপনার চালানোর জন্য কতগুলি পড এবং কন্টেইনার প্রয়োজন তার উপর ভিত্তি করে আপনার কতগুলি নোড প্রয়োজন তা নির্ধারণ করতে সাহায্য করতে বড় ক্লাস্টারগুলির জন্য বিবেচনা দেখুন। আপনি যদি নিজে নোড পরিচালনা করেন, তাহলে এর অর্থ হতে পারে আপনার নিজের ফিজিক্যাল টুল কেনা এবং ইনস্টল করা।
  • নোড অটোস্কেল করুন: আপনার নোডগুলি স্বয়ংক্রিয়ভাবে পরিচালনা করার জন্য উপলব্ধ সরঞ্জামগুলি এবং তাদের সরবরাহ করা ক্ষমতা সম্পর্কে জানতে ক্লাস্টার অটোস্কেলিং পড়ুন।
  • নোড স্বাস্থ্য পরীক্ষা সেট আপ করুন: গুরুত্বপূর্ণ ওয়ার্কলোডের জন্য, আপনি নিশ্চিত করতে চান যে সেই নোডগুলিতে চলমান নোড এবং পডগুলি স্বাস্থ্যকর। নোড প্রবলেম ডিটেক্টর daemon ব্যবহার করে, আপনি নিশ্চিত করতে পারেন আপনার নোডগুলি সুস্থ।

প্রোডাকশন ব্যবহারকারী ব্যবস্থাপনা

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

একটি প্রোডাকশন-কোয়ালিটির ক্লাস্টার নেওয়ার অর্থ হল আপনি কীভাবে বেছে বেছে অন্য ব্যবহারকারীদের অ্যাক্সেসের অনুমতি দিতে চান তা নির্ধারণ করা। বিশেষ করে, যারা আপনার ক্লাস্টার (অথেনটিকেশন) অ্যাক্সেস করার চেষ্টা করে তাদের পরিচয় যাচাই করার জন্য এবং তারা যা জিজ্ঞাসা করছে (অথোরাইজেশন) করার অনুমতি আছে কিনা তা নির্ধারণ করার জন্য আপনাকে কৌশল নির্বাচন করতে হবেঃ

  • অথেনটিকেশন: apiserver ব্যবহারকারীদের অথেনটিকেশন করতে পারে ক্লায়েন্ট সার্টিফিকেট, bearer টোকেন, একটি অথেনটিকেশন প্রক্সি, বা HTTP মৌলিক অথেনটিকেশন ব্যবহার করে। আপনি কোন অথেনটিকেশন পদ্ধতি ব্যবহার করতে চান তা নির্বাচন করতে পারেন। প্লাগইন ব্যবহার করে, apiserver আপনার প্রতিষ্ঠানের বিদ্যমান সুবিধা নিতে পারে অথেনটিকেশন পদ্ধতি, যেমন LDAP বা Kerberos। দেখা অথেনটিকেশন কুবারনেটিস ব্যবহারকারীদের অথেনটিকেশনের এই বিভিন্ন পদ্ধতির বর্ণনার জন্য।
  • অথোরাইজেশন: আপনি যখন আপনার নিয়মিত ব্যবহারকারীদের অথোরাইজেশন করার জন্য প্রস্তুত হন, আপনি সম্ভবত RBAC এবং ABAC অথোরাইজেশনের মধ্যে বেছে নেবেন। ব্যবহারকারীর অ্যাকাউন্ট অথোরাইজেশনের জন্য বিভিন্ন মোড পর্যালোচনা করতে অথোরাইজেশন ওভারভিউ দেখুন (সেইসাথে আপনার ক্লাস্টারে সার্ভিস অ্যাকাউন্ট অ্যাক্সেস):
    • রোল-বেসড অ্যাক্সেস কন্ট্রোল (RBAC): অথেন্টিকেটেড ব্যবহারকারীদের নির্দিষ্ট সেটের অনুমতি প্রদান করে আপনাকে আপনার ক্লাস্টারে অ্যাক্সেস বরাদ্দ করতে দেয়। একটি নির্দিষ্ট নেমস্পেস (Role) বা সমগ্র ক্লাস্টার জুড়ে (ClusterRole) অনুমতিগুলি বরাদ্দ করা যেতে পারে। তারপর RoleBindings এবং ClusterRoleBindings ব্যবহার করে, সেই অনুমতিগুলি নির্দিষ্ট ব্যবহারকারীদের সাথে সংযুক্ত করা যেতে পারে।
    • অ্যাট্রিবিউট-বেসড অ্যাক্সেস কন্ট্রোল (ABAC): আপনাকে ক্লাস্টারে রিসোর্স অ্যাট্রিবিউটের উপর ভিত্তি করে পলিসি তৈরি করতে দেয় এবং সেই অ্যাট্রিবিউটগুলির উপর ভিত্তি করে অ্যাক্সেসের অনুমতি দেয় বা অস্বীকার করে। একটি পলিসি ফাইলের প্রতিটি লাইন ভার্শনিং বৈশিষ্ট্য (apiVersion এবং kind) এবং বিষয় (ব্যবহারকারী বা গ্রুপ), রিসোর্স বৈশিষ্ট্য, নন-রিসোর্সে বৈশিষ্ট্য (/version বা /apis) এবং শুধুমাত্র পঠনযোগ্য বৈশিষ্ট্যের সাথে মেলে বিশেষ বৈশিষ্ট্যগুলির একটি মানচিত্র সনাক্ত করে। বিস্তারিত জানার জন্য উদাহরণ দেখুন.

যেহেতু কেউ আপনার প্রোডাকশন কুবারনেটস ক্লাস্টারে অথেনটিকেশন এবং অথোরাইজেশন সেট আপ করছে, এখানে কিছু বিষয় বিবেচনা করার আছেঃ

  • অথোরাইজেশন মোড সেট করুন: যখন Kubernetes API সার্ভার (kube-apiserver) শুরু হয়, তখন সমর্থিত অথেনটিকেশন মোডগুলি --authorization-mode ফ্ল্যাগ ব্যবহার করে সেট করতে হবে। উদাহরণস্বরূপ, kube-adminserver.yaml ফাইলে (/etc/kubernetes/manifests-এ) সেই ফ্ল্যাগটি Node,RBAC-তে সেট করা যেতে পারে। এটি অথেন্টিকেটেড অনুরোধের জন্য নোড এবং RBAC অথোরাইজেশনের অনুমতি দেবে।
  • ব্যবহারকারী সার্টিফিকেট এবং রোল বাইন্ডিং (RBAC)ভর্তি নিয়ন্ত্রক বিবেচনা করুন: আপনি যদি RBAC অথোরাইজেশন ব্যবহার করেন, ব্যবহারকারীরা একটি CertificateSigningRequest (CSR) তৈরি করতে পারে যা ক্লাস্টার CA দ্বারা স্বাক্ষরিত হতে পারে। তারপর আপনি প্রতিটি ব্যবহারকারীর রোল এবং ক্লাস্টার রোল বাইন্ড করতে পারেন। বিস্তারিত জানার জন্য সার্টিফিকেট স্বাক্ষরের অনুরোধ দেখুন।
  • অ্যাট্রিবিউটগুলিকে একত্রিত করে এমন পলিসি তৈরি করুন (ABAC): আপনি যদি ABAC অথোরাইজেশন ব্যবহার করেন, আপনি নির্দিষ্ট রিসোর্সগুলি (যেমন একটি পড), নেমস্পেস, বা apiGroup অ্যাক্সেস করার জন্য নির্বাচিত ব্যবহারকারী বা গ্রুপগুলিকে অথোরাইজেশন করার জন্য পলিসিগুলি গঠনের জন্য অ্যাট্রিবিউটগুলিকে সংমিশ্রণ বরাদ্দ করতে পারেন। আরও তথ্যের জন্য, উদাহরণ দেখুন।
  • অ্যাডমিশন কন্ট্রোলারদের বিবেচনা করুন: API সার্ভারের মাধ্যমে যে অনুরোধগুলি আসতে পারে তার অথোরাইজেশনের অতিরিক্ত ফর্মগুলির মধ্যে রয়েছে ওয়েবহুক টোকেন অথেনটিকেশন। API সার্ভারে অ্যাডমিশন কন্ট্রোলার যোগ করে ওয়েবহুক এবং অন্যান্য বিশেষ অথোরাইজেশনের ধরন সক্ষম করতে হবে।

ওয়ার্কলোডের রিসোর্সের সীমা নির্ধারণ করুন

প্রোডাকশন ওয়ার্কলোডের চাহিদা কুবারনেটিস কন্ট্রোল প্লেনের ভিতরে এবং বাইরে উভয় ক্ষেত্রেই চাপ সৃষ্টি করতে পারে। আপনার ক্লাস্টারের ওয়ার্কলোডের প্রয়োজনের জন্য সেট আপ করার সময় এই আইটেমগুলি বিবেচনা করুনঃ

  • নেমস্পেস সীমা সেট করুন: মেমরি এবং সিপিইউ এর মত জিনিসগুলিতে প্রতি-নেমস্পেস কোটা সেট করুন। বিস্তারিত জানার জন্য Manage Memory, CPU, and API Resources দেখুন। এছাড়াও আপনি উত্তরাধিকার সীমার জন্য হায়ারার্কিক্যাল নেমস্পেস সেট করতে পারেন।
  • ডিএনএস চাহিদার জন্য প্রস্তুত করুন: আপনি যদি আশা করেন যে ওয়ার্কলোড ব্যাপকভাবে বৃদ্ধি পাবে, আপনার DNS সার্ভিসটিও স্কেল বাড়াতে প্রস্তুত থাকতে হবে। দেখুন একটি ক্লাস্টারে DNS সার্ভিসটি অটোস্কেল করুন
  • অতিরিক্ত সার্ভিস অ্যাকাউন্ট তৈরি করুন: ব্যবহারকারীর অ্যাকাউন্টগুলি নির্ধারণ করে যে ব্যবহারকারীরা একটি ক্লাস্টারে কী করতে পারে, যখন একটি সার্ভিস অ্যাকাউন্ট একটি নির্দিষ্ট নেমস্পেসের মধ্যে পড অ্যাক্সেসকে সংজ্ঞায়িত করে। ডিফল্টরূপে, একটি পড তার নেমস্পেস থেকে ডিফল্ট সার্ভিস অ্যাকাউন্টে নেয়। একটি নতুন সার্ভিস অ্যাকাউন্ট তৈরি করার তথ্যের জন্য সার্ভিস অ্যাকাউন্ট পরিচালনা করা দেখুন। উদাহরণস্বরূপ, আপনি চাইতে পারেন:

এর পরের কি

2.2.1 - ডিপ্লয়মেন্টের টুল সহ কুবারনেটিস ইনস্টল করা

আপনার নিজস্ব প্রোডাকশন কুবারনেটিস ক্লাস্টার সেট আপ করার জন্য অনেক পদ্ধতি এবং সরঞ্জাম আছে। উদাহরণ স্বরূপ:

  • kubeadm

  • kops: একটি স্বয়ংক্রিয় ক্লাস্টার প্রভিশনিং টুল। টিউটোরিয়াল, সর্বোত্তম অনুশীলন, কনফিগারেশন বিকল্প এবং কমিউনিটির কাছে পৌঁছানো তথ্যের জন্য, অনুগ্রহ করে চেক করুন kOps ওয়েবসাইট বিস্তারিত জানতে।

  • Kubespray: Ansible প্লেবুকের একটি রচনা, ইনভেন্টরি, প্রভিশনিং টুলস, এবং জেনেরিক ওস/কুবারনেটিস ক্লাস্টার কনফিগারেশন ব্যবস্থাপনা কাজের জন্য ডোমেন জ্ঞান । আপনি স্ল্যাক চ্যানেলে সম্প্রদায়ের সাথে যোগাযোগ করতে পারেন #kubespray

2.2.1.1 - kubeadm এর সাহায্যে ক্লাস্টার বুটস্ট্রাপ করা

2.2.2 - Turnkey ক্লাউড সলিউশন

এই পৃষ্ঠাটি কুবারনেটিস প্রত্যয়িত সমাধান প্রদানকারীদের একটি তালিকা প্রদান করে। প্রতিটি প্রদানকারীর পৃষ্ঠা থেকে, আপনি প্রোডাকশন এর জন্য প্রস্তুত ক্লাস্টার ইনস্টল এবং সেটআপ করা শিখতে পারেন

2.3 - সেরা অনুশীলন

3 - ধারণা

ধারণা বিভাগটি আপনাকে কুবারনেটিস সিস্টেমের অংশগুলো এবং কুবারনেটিস আপনার ক্লাস্টারের প্রতিনিধিত্ব করার জন্য যে অ্যাবস্ট্রাকশনগুলো ব্যবহার করে সেগুলো সম্পর্কে শিখতে সাহায্য করে এবং কুবারনেটিস কীভাবে কাজ করে সে সম্পর্কে আপনাকে গভীরভাবে বুঝতে সাহায্য করে ।

3.1 - ওভারভিউ

কুবারনেটিস হল একটি পোর্টেবল, এক্সটেনসিবল, ওপেন সোর্স প্ল্যাটফর্ম যা কন্টেইনারাইজড ওয়ার্কলোড এবং সার্ভিসগুলি পরিচালনা করার জন্য, ঘোষণামূলক কনফিগারেশন এবং অটোমেশন উভয়কেই সহজতর করে। এটির একটি বড়, দ্রুত বর্ধনশীল ইকোসিস্টেম রয়েছে। কুবারনেটিস সার্ভিসগুলি, সাপোর্ট, এবং টুলস ব্যাপকভাবে সহজলভ্য।

এই পৃষ্ঠাটি কুবারনেটিসের একটি পরিপূর্ণ ধারণা প্রদান করে ।

কুবারনেটিস নামটি গ্রীক থেকে এসেছে, যার অর্থ হেলমসম্যান বা পাইলট। "K" এবং "s" এর মধ্যে আটটি অক্ষর গণনা করার ফলে একটি সংক্ষিপ্ত রূপ K8s। গুগল ২০১৪ সালে কুবারনেটিস প্রজেক্টটি ওপেন সোর্স করেছে। কুবারনেটিস 15 বছরেরও বেশি সময় ধরে Google-এর অভিজ্ঞতাকে একত্রিত করেছে যা কমিউনিটির সেরা আইডিয়া এবং অনুশীলনের সাথে স্কেলে উৎপাদন কাজের চাপ চালানোর।

আপনার কেন কুবারনেটিস দরকার এবং এটি কী করতে পারে

কন্টেইনারসমূহ অ্যাপ্লিকেশন একত্রকরণ এবং চালানোর একটি ভালো উপায়৷ একটি উৎপাদন পরিবেশে, কন্টেইনারসমূহ এমন ভাবে পরিচালনা করতে হবে যা অ্যাপ্লিকেশনগুলি চালানোর সময় যেন কোনো ডাউনটাইম না থাকে তা নিশ্চিত করবে। উদাহরণস্বরূপ, যদি একটি কন্টেইনার ডাউন হয়, তাহলে অন্য কন্টেইনার কে সেই মুহূর্তে চালু হতে হবে। আর এই অবস্থাটি একটি সিস্টেম দ্বারা পরিচালিত হলে এটি কি সহজ হবে না?

এভাবেই কুবারনেটস উদ্ধারে আসে!। কুবারনেটিস একটি কাঠামো প্রদান করে আপনাকে সিস্টেমগুলিকে স্থিতিস্থাপকভাবে চালানোর জন্য । এটি আপনার অ্যাপ্লিকেশনের জন্য স্কেলিং এবং ফেইলওভারের যত্ন নেয়, ডিপ্লয়মেন্টের নিদর্শন প্রদান করে এবং আরও অনেক কিছু করে। উদাহরণস্বরূপ, কুবারনেটিস সহজেই আপনার সিস্টেমের জন্য একটি ক্যানারি ডিপ্লয়মেন্ট পরিচালনা করতে পারে।

কুবারনেটিস আপনাকে সরবরাহ করে:

  • পরিষেবা আবিষ্কার এবং লোড ব্যালেন্সিং কুবারনেটিস ডিএনএস নাম ব্যবহার করে বা তাদের নিজস্ব আইপি ঠিকানা ব্যবহার করে একটি ধারক প্রকাশ করতে পারে। একটি কন্টেইনারে ট্রাফিক বেশি হলে, কুবারনেটিস লোড ব্যালেন্স এবং নেটওয়ার্ক ট্র্যাফিক বিতরণ করতে সক্ষম হয় যাতে ডিপ্লয়মেন্ট স্থিতিশীল থাকে।
  • স্টোরেজ অর্কেস্ট্রেশন কুবারনেটিস আপনাকে স্বয়ংক্রিয়ভাবে আপনার পছন্দের একটি স্টোরেজ সিস্টেম মাউন্ট করার অনুমতি দেয়, যেমন স্থানীয় স্টোরেজ, পাবলিক ক্লাউড প্রদানকারী এবং আরও অনেক কিছু।
  • স্বয়ংক্রিয় রোলআউট এবং রোলব্যাক আপনি কুবারনেটিস ব্যবহার করে আপনার স্থাপন করা কন্টেইনার জন্য পছন্দসই অবস্থা বর্ণনা করতে পারেন এবং এটি একটি নিয়ন্ত্রিত হারে প্রকৃত অবস্থাকে পছন্দসই অবস্থায় পরিবর্তন করতে পারে। উদাহরণস্বরূপ, আপনি কুবারনেটিস দিয়ে স্বয়ংক্রিয়ভাবে আপনার ডিপ্লয়মেন্টের জন্য নতুন কন্টেইনার তৈরি, বিদ্যমান কন্টেইনারগুলি সরাতে এবং নতুন কন্টেইনারে তাদের সমস্ত রিসোর্স গ্রহণ করতে পারেন।
  • স্বয়ংক্রিয় বিন প্যাকিং আপনি কুবারনেটিসকে নোডের একটি ক্লাস্টার প্রদান করেন যা এটি কন্টেইনারাইজড কাজ চালাতে ব্যবহার করতে পারে। আপনি কুবারনেটিসকেে বলুন প্রতিটি কন্টেইনারের কত CPU এবং মেমরি (RAM) প্রয়োজন। কুবারনেটিস আপনার সম্পদের সর্বোত্তম ব্যবহার করতে আপনার নোডগুলিতে কন্টেইনারে মানানসই করতে পারে।
  • স্ব-নিরাময় কুবারনেটিস ব্যর্থ কন্টেইনারগুলি পুনরায় চালু করে, কন্টেইনারগুলিকে প্রতিস্থাপন করে, এমন কন্টেইনারগুলিকে বন্ধ করে যেটি আপনার ব্যবহারকারী-সংজ্ঞায়িত স্বাস্থ্য পরীক্ষায় সাড়া দেয় না এবং ক্লায়েন্টদের কাছে তাদের বিজ্ঞাপন দেবেন না যতক্ষণ না এটি পরিবেশন করার জন্য প্রস্তুত।
  • গোপন এবং কনফিগারেশন ব্যবস্থাপনা কুবারনেটিস আপনাকে সংবেদনশীল তথ্য সংরক্ষণ এবং পরিচালনা করতে দেয়, যেমন পাসওয়ার্ড, ওঅথ (OAuth) টোকেন এবং এসএসএইচ (SSH) কী। আপনি গোপনীয়তা এবং অ্যাপ্লিকেশনের কনফিগারেশন স্থাপন এবং আপডেট করতে পারবেন আপনার কন্টেইনার চিত্রগুলি পুনর্নির্মাণ করা ছাড়াই, এবং আপনার স্ট্যাক কনফিগারেশনের গোপনীয়তা প্রকাশ না করে।
  • ব্যাচ এক্সেকিউশন পরিষেবাগুলি ছাড়াও, কুবারনেটস আপনার ব্যাচ এবং সিআই ওয়ার্কলোডগুলি পরিচালনা করতে পারে, যদি ইচ্ছা হয় তবে ব্যর্থ কন্টেইনারগুলি প্রতিস্থাপন করতে পারে।
  • অনুভূমিক স্কেলিং একটি সাধারণ কমান্ডের সাহায্যে, একটি UI সহ, বা স্বয়ংক্রিয়ভাবে CPU ব্যবহারের উপর ভিত্তি করে আপনার অ্যাপ্লিকেশনকে উপরে এবং নীচে স্কেল করুন।
  • IPv4/IPv6 ডুয়াল-স্ট্যাক পড এবং পরিষেবাগুলিতে IPv4 এবং IPv6 ঠিকানাগুলির বরাদ্দ৷
  • এক্সটেনসিবিলিটির জন্য ডিজাইন আপস্ট্রিম (upstream) সোর্স কোড পরিবর্তন না করে আপনার কুবারনেটিস ক্লাস্টারে বৈশিষ্ট্য যোগ করুন।

কুবারনেটিস কি নয়

কুবারনেটিস একটি ঐতিহ্যগত, সর্ব-অন্তর্ভুক্ত PaaS (পরিষেবা হিসাবে প্ল্যাটফর্ম) সিস্টেম নয়। যেহেতু Kubernetes হার্ডওয়্যার স্তরের পরিবর্তে কন্টেইনার স্তরে কাজ করে, তাই এটি PaaS অফারগুলির জন্য সাধারণভাবে কিছু প্রযোজ্য বৈশিষ্ট্য প্রদান করে, যেমন ডিপ্লয়মেন্ট, স্কেলিং, লোড ব্যালেন্সিং, এবং ব্যবহারকারীদের তাদের লগিং, পর্যবেক্ষণ এবং সতর্কতা সমাধানগুলিকে একীভূত করতে দেয়৷ যাইহোক, কুবারনেটিস একচেটিয়া নয়, এবং এই ডিফল্ট সমাধান ঐচ্ছিক এবং প্লাগযোগ্য। কুবারনেটিস বিকাশকারী প্ল্যাটফর্ম তৈরির জন্য বিল্ডিং ব্লক সরবরাহ করে, কিন্তু যেখানে এটি গুরুত্বপূর্ণ সেখানে ব্যবহারকারীর পছন্দ এবং নমনীয়তা সংরক্ষণ করে।

কুবারনেটিস:

  • সমর্থিত অ্যাপ্লিকেশনের ধরন সীমাবদ্ধ করে না। কুবারনেটিস একটি লক্ষ্য হল স্টেটলেস, স্টেটফুল এবং ডেটা-প্রসেসিং সহ অত্যন্ত বৈচিত্র্যময় কাজের চাপ কাজের ভার সমর্থন করা। যদি একটি অ্যাপ্লিকেশন একটি কন্টেইনারে চলতে পারে তবে কুবারনেটিসেও দুর্দান্ত চলা উচিত।
  • সোর্স কোড স্থাপন করে না এবং আপনার অ্যাপ্লিকেশন তৈরি করে না। একটানা ইন্টিগ্রেশন, ডেলিভারি, এবং ডিপ্লোয়মেন্ট (CI/CD) ওয়ার্কফ্লোগুলি প্রতিষ্ঠানের সংস্কৃতি এবং পছন্দের পাশাপাশি প্রযুক্তিগত প্রয়োজনীয়তা দ্বারা নির্ধারিত হয়।
  • অ্যাপ্লিকেশন-স্তরের পরিষেবা প্রদান করে না, যেমন মিডলওয়্যার (উদাহরণস্বরূপ, বার্তা বাস), ডেটা-প্রসেসিং ফ্রেমওয়ার্ক (উদাহরণস্বরূপ, স্পার্ক), ডাটাবেস (উদাহরণস্বরূপ, মাইএসকিউএল), ক্যাশে, বা বিল্ট-ইন পরিষেবা হিসাবে ক্লাস্টার স্টোরেজ সিস্টেম (উদাহরণস্বরূপ, Ceph)। এই ধরনের উপাদান চলতে পারে কুবারনেটিসে, এবং/অথবা পোর্টেবল মেকানিজমের মাধ্যমে কুবারনেটিস এ চলমান অ্যাপ্লিকেশন দ্বারা অ্যাক্সেস করা যেতে পারে, যেমন ওপেন সার্ভিস ব্রোকার
  • লগিং, মনিটরিং বা সতর্কতা সমাধান নির্দেশ করে না। এটি ধারণার প্রমাণ হিসাবে কিছু ইন্টিগ্রেশন প্রদান করে, এবং মেট্রিক্স সংগ্রহ এবং রপ্তানি করার প্রক্রিয়া।
  • এটি কনফিগারেশন ভাষা/সিস্টেম প্রদান বা আদেশ দেয় না (উদাহরণস্বরূপ, Jsonnet)। এটি একটি ঘোষণামূলক এপিআই প্রদান করে যা ঘোষণামূলক স্পেসিফিকেশনের নির্বিচারে ফর্ম দ্বারা লক্ষ্য করা যেতে পারে।
  • কোন ব্যাপক মেশিন কনফিগারেশন, রক্ষণাবেক্ষণ, ব্যবস্থাপনা প্রদান বা গ্রহণ করে না, বা স্ব-নিরাময় সিস্টেম।
  • উপরন্তু, কুবারনেটিস একটি নিছক অর্কেস্ট্রেশন সিস্টেম নয়। আসলে, এটি অর্কেস্ট্রেশনের জন্য প্রয়োজনীয়তা দূর করে। অর্কেস্ট্রেশনের প্রযুক্তিগত সংজ্ঞা হল একটি সংজ্ঞায়িত ওয়ার্কফ্লো কার্যকর করা: প্রথমে A, তারপর B, তারপর C করুন। বিপরীতে, কুবারনেটিস স্বাধীন, কম্পোজযোগ্য একটি সেট নিয়ে গঠিত নিয়ন্ত্রণ প্রক্রিয়া যা ক্রমাগত বর্তমান অবস্থাকে প্রদত্ত পছন্দসই অবস্থার দিকে চালিত করে। আপনি A থেকে C পর্যন্ত কিভাবে যাবেন তা বিবেচ্য নয়। কেন্দ্রীভূত নিয়ন্ত্রণেরও প্রয়োজন নেই। এই সিস্টেমের ফলাফল যা ব্যবহার করা সহজ এবং আরও শক্তিশালী, মজবুত, স্থিতিস্থাপক এবং এক্সটেনসিবল।

কুবারনেটিসের জন্য ঐতিহাসিক প্রেক্ষাপট

চলুন অতিতে যেয়ে এক নজরে দেখে নেওয়া যাক কেন কুবারনেটিস এতটা কাজে লাগে।

ডিপ্লয়মেন্টের বিবর্তন

ঐতিহ্যবাহী ডিপ্লয়মেন্টের যুগ:

প্রথম দিকে, সংস্থাগুলি ফিজিক্যাল সার্ভারগুলিতে অ্যাপ্লিকেশন চালাত। একটি ফিজিক্যাল সার্ভারে অ্যাপ্লিকেশনের জন্য রিসোর্স সীমানা নির্ধারণ করার কোন উপায় ছিল না, এবং এর ফলে রিসোর্স বরাদ্দ সমস্যা হয়েছে। উদাহরণস্বরূপ, যদি একটি ফিজিক্যাল সার্ভারে একাধিক অ্যাপ্লিকেশান চালিত হয়, এমন উদাহরণ হতে পারে যেখানে একটি অ্যাপ্লিকেশন বেশিরভাগ সংস্থান গ্রহণ করবে, এবং ফলস্বরূপ, অন্যান্য অ্যাপ্লিকেশনগুলি কম পারফর্ম করবে। এই জন্য একটি সমাধান একটি ভিন্ন ফিজিক্যাল সার্ভারে প্রতিটি অ্যাপ্লিকেশন চালানো হবে। কিন্তু সম্পদের অব্যবহৃত হওয়ার কারণে এটির মাপকাঠিি ঠিক করা যায়নি এবং অনেকগুলি ফিজিক্যাল সার্ভার বজায় রাখা সংস্থাগুলির জন্য ব্যয়বহুল ছিল।

ভার্চুয়ালাইজড ডিপ্লয়মেন্টর যুগ:

একটি সমাধান হিসাবে, ভার্চুয়ালাইজেশন চালু করা হয়েছিল। এটি আপনাকে একটি একক ফিজিক্যাল সার্ভারের CPU-তে একাধিক ভার্চুয়াল মেশিন (VMs) চালানো যায়। ভার্চুয়ালাইজেশন অ্যাপ্লিকেশনগুলিকে VM-এর মধ্যে বিচ্ছিন্ন করার অনুমতি দেয় এবং একটি স্তরের নিরাপত্তা প্রদান করে কারণ একটি অ্যাপ্লিকেশনের তথ্য অন্য অ্যাপ্লিকেশন দ্বারা অবাধে অ্যাক্সেস করা যায় না।

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

প্রতিটি VM হল একটি সম্পূর্ণ মেশিন যা ভার্চুয়ালাইজড হার্ডওয়্যারের উপরে নিজস্ব অপারেটিং সিস্টেম সহ সমস্ত উপাদান চালায়।

কন্টেইনার স্থাপনের যুগ:

কনটেইনারগুলি VM-এর মতোই, তবে অ্যাপ্লিকেশনগুলির মধ্যে অপারেটিং সিস্টেম (OS) ভাগ করার জন্য তাদের শিথিল বিচ্ছিন্নতা বৈশিষ্ট্য রয়েছে৷ অতএব, কন্টেইনারগুলোকে হালকা বলে মনে করা হয়। একটি VM-এর মতো, একটি কনটেইনারের নিজস্ব ফাইল সিস্টেম, CPU ভাগ, মেমরি, প্রক্রিয়া স্থান এবং আরও অনেক কিছু রয়েছে। যেহেতু এগুলি অন্তর্নিহিত অবকাঠামো থেকে আলাদা করা হয়েছে, তারা ক্লাউড এবং OS ডিস্ট্রিবিউশন জুড়ে বহনযোগ্য।

কন্টেইনারগুলো জনপ্রিয় হয়ে উঠেছে কারণ তারা অতিরিক্ত সুবিধা প্রদান করে, যেমন:

  • এজাইল (Agile) অ্যাপ্লিকেশন তৈরি এবং ডিপ্লয়মেন্টয়: ভিএম ইমেজ (VM Image) ব্যবহারের তুলনায় কন্টেইনার ইমেজ (Container Image) তৈরির সহজতা এবং দক্ষতা বেশি।
  • ক্রমাগত বিকাশ, একীকরণ এবং ডিপ্লয়মেন্ট: নির্ভরযোগ্য এবং ঘন ঘন কন্টেইনার ইমেজ তৈরি এবং ডিপ্লয়মেন্টের জন্য প্রদান করে দ্রুত এবং দক্ষ রোলব্যাকের (ইমেজ অপরিবর্তনীয়তার কারণে) সাথে ।
  • ডেভ (Dev) এবং অপস (Ops) উদ্বেগের বিচ্ছেদ: বিল্ড/রিলিজের সময়ে অ্যাপ্লিকেশন কন্টেইনার ইমেজ তৈরি করে ডিপ্লয়মেন্টের সময়ের তুলনায়, ফলস্বরূপ অ্যাপ্লিকেশনগুলি অবকাঠামো থেকে বিচ্ছিন্ন হয়।
  • পর্যবেক্ষণযোগ্যতা: শুধুমাত্র OS-স্তরের তথ্য এবং মেট্রিক্সই নয়, প্রয়োগের স্বাস্থ্য এবং অন্যান্য সংকেতও।
  • ডেভেলপমেন্ট, টেস্টিং এবং প্রোডাকশন জুড়ে পরিবেশগত সামঞ্জস্য: একটি ল্যাপটপে ক্লাউডের মতোই চলে।
  • ক্লাউড এবং ওএস ডিস্ট্রিবিউশন পোর্টেবিলিটি: উবুন্টু (Ubuntu), রেল (RHEL), কোরওস (CoreOS), অন-প্রিমিসেস (on-premises), প্রধান পাবলিক ক্লাউডসর উপর, এবং অন্য কোথাও চলে।
  • অ্যাপ্লিকেশন-কেন্দ্রিক ব্যবস্থাপনা: ভার্চুয়াল হার্ডওয়্যারে একটি OS চালানো থেকে লজিক্যাল রিসোর্স ব্যবহার করে একটি OS-এ একটি অ্যাপ্লিকেশন চালানো পর্যন্ত বিমূর্ততার স্তর বাড়ায়।
  • ঢিলেঢালাভাবে সংযুক্ত, বিতরণ করা, স্থিতিস্থাপক, মুক্ত মাইক্রো-পরিষেবা: অ্যাপ্লিকেশনগুলিকে ছোট, স্বাধীন টুকরোগুলিতে বিভক্ত করা হয় এবং গতিশীলভাবে স্থাপন ও পরিচালনা করা যায় – একটি বড় একক-উদ্দেশ্য মেশিনে চলমান একটি মনোলিথিক স্ট্যাক নয়।.
  • রিসোর্স আইসোলেশন: অনুমানযোগ্য অ্যাপ্লিকেশন কর্মক্ষমতা।
  • রিসোর্স ব্যবহার: উচ্চ দক্ষতা এবং ঘনত্ব।

এর পরের কি

3.1.1 - কুবারনেটিসে অবজেক্ট

কুবারনেটিস অবজেক্ট হল কুবারনেটিস সিস্টেমে স্থায়ী সত্তা। কুবারনেটিস আপনার ক্লাস্টারের অবস্থার প্রতিনিধিত্ব করতে এই সত্তাগুলি ব্যবহার করে। কুবারনেটিস অবজেক্ট মডেল এবং এই বস্তুর সাথে কিভাবে কাজ করতে হয় সে সম্পর্কে জানুন।

এই পৃষ্ঠাটি ব্যাখ্যা করে কুবারনেটিস API-তে কুবারনেটিস অবজেক্টগুলি কীভাবে প্রতিনিধিত্ব করা হয় এবং আপনি কিভাবে তা .yaml ফরম্যাটে প্রকাশ করতে পারেন।

কুবারনেটিস অবজেক্ট বোঝা

কুবারনেটিস অবজেক্ট হল কুবারনেটিস সিস্টেমের সত্তা সংরক্ষিত এন্টিটিগুলি। কুবারনেটিস এই এন্টিটিগুলি ব্যবহার করে আপনার ক্লাস্টারের অবস্থা প্রকাশ করতে। বিশেষভাবে, তারা বর্ণনা করতে পারে:

  • কোন কন্টেনার অ্যাপ্লিকেশন কি রান করছে (এবং কোন নোডগুলিতে)
  • ঐ অ্যাপ্লিকেশনগুলির জন্য রিসোর্স
  • ঐ অ্যাপ্লিকেশনগুলির কিভাবে ব্যবহার করতে হবে, উদাহরণস্বরূপ রিস্টার্ট নীতি, আপগ্রেড, এবং ফল্ট-টলারেন্স

একটি কুবারনেটিস অবজেক্ট হল একটি "উদ্দেশ্যের রেকর্ড" - একবার আপনি অবজেক্ট তৈরি করে দিলে, কুবারনেটিস সিস্টেম সরাসরি এই অবজেক্টটি থাকার নিশ্চয়তার জন্য কাজ করবে। অবজেক্ট তৈরি করে আপনি সাধারণত কুবারনেটিস সিস্টেমকে বলে দিচ্ছেন যে আপনার ক্লাস্টারের ওয়ার্কলোড কি হবে; এটা হল আপনার ক্লাস্টারের কাঙ্ক্ষিত অবস্থা

কুবারনেটিস অবজেক্টগুলির সাথে কাজ করতে - তা তৈরি, পরিবর্তন করতে বা মুছতে - আপনার কুবারনেটিস API ব্যবহার করতে হবে। উদাহরণস্বরূপ, যখন আপনি kubectl কমান্ড-লাইন ইন্টারফেস ব্যবহার করেন, তখন CLI আপনার জন্য প্রয়োজনীয় কুবারনেটিস API কল করে। আপনি একটি Client Libraries ব্যবহার করে নিজের প্রোগ্রামে কুবারনেটিস API সরাসরি ব্যবহার করতে পারেন।

অবজেক্ট স্পেক এবং স্ট্যাটাস

প্রায় সব কুবারনেটিস অবজেক্টের একটি spec এবং একটি status নেস্টেড অবজেক্ট ফিল্ড রয়েছে যা অবজেক্টের কনফিগারেশন নিয়ন্ত্রণ করে: অবজেক্টের spec এবং status। যে অবজেক্টগুলির spec থাকে, আপনার অবজেক্ট তৈরি করতে এটা নির্ধারণ করতে হবে যখন অবজেক্ট তৈরি করবেন, যে রিসোর্সের বৈশিষ্ট্য বর্ণনা প্রদান করবেন: এর কাঙ্ক্ষিত অবস্থা

status অবজেক্টের বর্তমান অবস্থা বর্ণনা করে, যা কুবারনেটিস সিস্টেম এবং এর উপাদানগুলি প্রদান এবং আপডেট করে। কুবারনেটিস control plane সরাসরি এবং সক্রিয়ভাবে প্রতিটি অবজেক্টের বর্তমান অবস্থা পরিচালনা করে যাতে আপনার প্রদত্ত অবস্থা মিলে।

উদাহরণস্বরূপ: কুবারনেটিসে, একটি ডিপ্লয়মেন্ট একটি অবজেক্ট যা আপনার ক্লাস্টারে চলমান একটি অ্যাপ্লিকেশন প্রতিনিধিত্ব করতে পারে। ডিপ্লয়মেন্ট তৈরি করতে যখন আপনি ডিপ্লয়মেন্ট তৈরি করেন, আপনি ডিপ্লয়মেন্ট spec সেট করতে পারেন যে আপনি চাইছেন অ্যাপ্লিকেশনের তিনটি রিপ্লিকা চলমান থাকুক। কুবারনেটিস সিস্টেম ডিপ্লয়মেন্ট স্পেক পড়ে এবং আপনার প্রদত্ত ডিপ্লয়মেন্ট এর তিনটি ইনস্ট্যান্স চালু করে, এই স্ট্যাটাস আপনার স্পেক অনুসারে আপডেট করে। যদি সেই ইনস্ট্যান্সগুলোর মধ্যে কোনওটি ব্যর্থ হয় (একটি স্ট্যাটাস পরিবর্তন), কুবারনেটিস সিস্টেম স্পেক এবং স্ট্যাটাস মধ্যে পার্থক্যের প্রতিক্রিয়া দিয়ে একটি সংশোধন করে এই ক্ষেত্রে, একটি প্রতিস্থাপন ইনস্ট্যান্স চালু করে।

বিস্তারিত তথ্যের জন্য অবজেক্ট স্পেক, স্ট্যাটাস এবং মেটাডেটা দেখুন, Kubernetes API Conventions.

একটি কুবারনেটিস অবজেক্ট বর্ণনা

যখন আপনি কুবারনেটিসে একটি অবজেক্ট তৈরি করবেন, আপনাকে অবজেক্ট spec প্রদান করতে হবে যা দরকার তার কাঙ্ক্ষিত অবস্থা বর্ণনা করে এবং অবজেক্ট সম্পর্কে কিছু মৌলিক তথ্য (যেমন নাম) প্রদান করতে হবে। যখন আপনি অবজেক্ট তৈরি করতে কুবারনেটিস API ব্যবহার করেন (এটা সরাসরি বা kubectl এর মাধ্যমে), তখন ঐ API অনুরোধটি এই তথ্যকে একটি JSON রিকোয়েস্ট বডি হিসেবে অন্তর্ভুক্ত করতে হবে। সাধারণত, আপনি একটি manifest নামে পরিচিত ফাইলে kubectl কে তথ্য প্রদান করেন। নিয়ম অনুসারে, ম্যানিফেস্ট হল YAML (আপনি JSON ফরম্যাটও ব্যবহার করতে পারেন)। HTTP-এর মাধ্যমে API অনুরোধ করার সময় টুল যেমন kubectl একটি ম্যানিফেস্ট থেকে তথ্যকে JSON বা অন্য সমর্থিত সিরিয়ালাইজেশন ফরম্যাটে রূপান্তর করে।

এখানে একটি উদাহরণ ম্যানিফেস্ট দেওয়া হল একটি কুবারনেটিস ডিপ্লয়মেন্টের জন্য প্রয়োজনীয় ক্ষেত্রগুলি এবং অবজেক্ট স্পেকের জন্যের একটি নমুনা:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2 # ডিপ্লয়মেন্টকে টেমপ্লেটের সাথে মিলে যাওয়া 2টি পড চালাতে বলে
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

একটি উপরের মতো ম্যানিফেস্ট ফাইল ব্যবহার করে একটি ডিপ্লয়মেন্ট তৈরি করার একটি উপায় হল kubectl apply কমান্ড ব্যবহার করা, kubectl এর কমান্ড-লাইন ইন্টারফেসে yaml ফাইলটি আর্গুমেন্ট হিসেবে পাঠানো। একটি উদাহরণ:

kubectl apply -f https://k8s.io/examples/application/deployment.yaml

আউটপুট এর অনুরূপ:

deployment.apps/nginx-deployment created

প্রয়োজনীয় ক্ষেত্র

আপনার কুবারনেটিস অবজেক্ট এর জন্য ম্যানিফেস্ট (YAML বা JSON ফাইল) এ নিম্নলিখিত ক্ষেত্রগুলির জন্য মান নির্ধারণ করতে হবে:

  • apiVersion - আপনি কোন ভার্সনের কুবারনেটিস API ব্যবহার করছেন তা উল্লেখ করতে হবে
  • kind - আপনি কোন ধরনের অবজেক্ট তৈরি করতে চান তা উল্লেখ করতে হবে
  • metadata - অবজেক্ট যে সাহায্য করে অনন্যভাবে সনাক্ত করা যায়, যেমন name স্ট্রিং, UID, এবং ঐচ্ছিক namespace
  • spec - অবজেক্টের জন্য আপনি কি অবস্থা চান

অবজেক্ট spec সুনির্দিষ্ট ফরম্যাট প্রতিটি কুবারনেটিস অবজেক্টের জন্য আলাদা, এবং সেই বস্তুর জন্য নির্দিষ্ট নেস্টেড ক্ষেত্র রয়েছে। Kubernetes API রেফারেন্স ব্যবহার করে আপনি যে সমস্ত অবজেক্ট তৈরি করতে পারেন তার জন্য নির্দিষ্ট ফরম্যাট খুঁজে পেতে সাহায্য করতে পারে।

উদাহরণস্বরূপ, দেখুন spec ফিল্ড Pod API রেফারেন্স এর জন্য। প্রতিটি Pod এর জন্য, .spec ক্ষেত্রটি পড এবং তার কাঙ্ক্ষিত অবস্থা (যেমন সেই পডের মধ্যে প্রতিটি কন্টেইনারের জন্য কন্টেইনার ইমেজের নাম) নির্দিষ্ট করে৷ আরও একটি অবজেক্ট স্পেসিফিকেশনের উদাহরণ হল spec ফিল্ড StatefulSet API এর জন্য। StatefulSet এর জন্য, .spec ফিল্ড নির্দিষ্ট করে এবং সেট করে এর অবস্থা। StatefulSet এর .spec এর মধ্যে একটি টেমপ্লেট পড অবজেক্টের জন্য । সেই টেমপ্লেটটি Pods বর্ণনা করে যা StatefulSet কন্ট্রোলার স্টেটফুলসেট স্পেসিফিকেশন সন্তুষ্ট করার জন্য তৈরি করবে। অন্যান্য প্রকারের অবজেক্ট গুলির জন্য বিভিন্ন .status থাকতে পারে; আবার, API রেফারেন্স পৃষ্ঠাগুলি এই .status ফিল্ডের গঠন এবং এর প্রত্যেক বিভিন্ন প্রকারের অবজেক্টের জন্য তার বিষয়বস্তু বিবরণ করে।

সার্ভার সাইড ফিল্ড ভেরিফিকেশন

কুবারনেটিস v1.25 থেকে শুরু করে, API সার্ভার সার্ভার সাইড field validation যা অব্যক্ত বা পুনরায় ফিল্ড অনুমান করে একটি অবজেক্টে। এটি সমস্ত কার্যকারিতা প্রদান করে kubectl --validate এর সার্ভার সাইড এ কর্মক্ষমতা।

kubectl টুলটি ব্যবহার করে --validate ফ্ল্যাগ ব্যবহার করে ফিল্ড ভেরিফিকেশনের স্তর সেট করে। এটি গ্রহণ করে মান ignore, warn, এবং strict এবং এটি true (strict এর সমান) এবং false ( ignore এর সমান) মান গ্রহণ করে। kubectl এর ডিফল্ট ভেরিফিকেশন সেটিং হল --validate=true

Strict
Strict ফিল্ড ভেরিফিকেশন, ভেরিফিকেশন ব্যর্থ হওয়ায় errors দেখায়
Warn
ফিল্ড ভেরিফিকেশন করা হয়, কিন্তু errors গুলি অনুরোধ ব্যর্থ হওয়ার পরিবর্তে সতর্কতা হিসাবে প্রকাশ করা হয়
Ignore
কোনো সার্ভার সাইড ফিল্ড ভেরিফিকেশন করা হয় না

যখন kubectl এর একটি API সার্ভারে সংযোগ করতে পারে না যে কোন ফিল্ড ভেরিফিকেশন সাপোর্ট করে তখন এটি ফেলে যায় ক্লায়েন্ট-সাইড ভেরিফিকেশন ব্যবহার করা হয়। কুবারনেটিস 1.27 এবং তারপরের সংস্করণ সবসময় ফিল্ড ভেরিফিকেশন প্রদান করে; পুরাতন কুবারনেটিস রিলিসেগুলিতে এটি হতে পারে না। যদি আপনার ক্লাস্টার v1.27 এর চেয়ে পুরানো হয় তবে এপনার কুবারনেটিস সংস্করণের জন্য ডকুমেন্টেশন চেক করুন।

এর পরের কি

যদি আপনি নতুন কুবারনেটিসে এসেছেন, তাহলে নিম্নলিখিত বিষয়গুলি সম্পর্কে আরো পড়ুন:

  • Pods যা হলে সবচেয়ে গুরুত্বপূর্ণ মৌলিক কুবারনেটিস অবজেক্ট।
  • Deployment অবজেক্টগুলি।
  • Controllers কুবারনেটিসে।
  • kubectl এবং kubectl কমান্ড

কুবারনেটিস অবজেক্ট ম্যানেজমেন্ট kubectl ব্যবহার করে অবজেক্ট পরিচালনা করার উপায়গুলি বিস্তারিত ভাবে বর্ণনা করে। আপনার কাছে যদি আগে থেকে না থাকে তাহলে kubectl ইনস্টল করুন

কুবারনেটিস API সাধারণভাবে সম্পর্কে জানতে, পড়ুন:

কুবারনেটিসে অবজেক্টগুলির বিস্তারিত জানতে, এই বিভাগে অন্যান্য পৃষ্ঠাগুলি পড়ুন:

3.2 - ক্লাস্টার আর্কিটেকচার

কুবারনেটিসের পিছনে আর্কিটেকচারের ধারণা ।
কুবারনেটিসের উপাদান

কুবারনেটিস ক্লাস্টার আর্কিটেকচার

3.3 - কন্টেইনার

রানটাইম নির্ভরতা সহ একটি অ্যাপ্লিকেশন প্যাকেজ করার প্রযুক্তি।

এই পৃষ্ঠাটি কন্টেইনার এবং কন্টেইনার ইমেজ, সেইসাথে অপারেশন এবং সমাধান ডেভেলপমেন্টে তাদের ব্যবহার নিয়ে আলোচনা করবে।

কন্টেইনার শব্দটি একটি ওভারলোডেড শব্দ। আপনি যখনই শব্দটি ব্যবহার করেন, আপনার শ্রোতা একই সংজ্ঞা ব্যবহার করেন কিনা তা চেক করুন।

আপনার চালানো প্রতিটি কন্টেইনার পুনরাবৃত্তিযোগ্য; নির্ভরতা অন্তর্ভুক্ত করা থেকে প্রমিতকরণের (standardization) অর্থ হলো আপনি যেখানেই এটি চালান সেখানই আপনি একই আচরণ পাবেন।

কন্টেইনার অন্তর্নিহিত হোস্ট পরিকাঠামো থেকে অ্যাপ্লিকেশনগুলোকে দ্বিগুণ করে৷ এটি বিভিন্ন ক্লাউড বা ওএস পরিবেশে ডিপ্লয়মেন্টকে সহজ করে তোলে।

একটি কুবারনেটিস ক্লাস্টারের প্রতিটি নোড , সেই নোডের জন্য নির্ধারিত পড গঠনকারী কন্টেইনারগুলো চালায়। একটি পডের কন্টেইনারগুলো একই নোডে চালানোর জন্য সহ-অবস্থিত (co-located) এবং সহ-নির্ধারিত (co-scheduled)।

কন্টেইনার ছবি

একটি কন্টেইনার ছবি হলো একটি রেডি-টু-রান সফ্টওয়্যার প্যাকেজ যাতে একটি অ্যাপ্লিকেশন চালানোর জন্য প্রয়োজনীয় সমস্ত কিছু থাকে: কোড এবং যেকোন রানটাইম, অ্যাপ্লিকেশন এবং সিস্টেম লাইব্রেরি এবং যেকোনো প্রয়োজনীয় সেটিংসের জন্য ডিফল্ট মান।

কন্টেইনারগুলো স্টেটলেস এবং অপরিবর্তনীয় হওয়ার উদ্দেশ্যে করা হয়েছে: আপনার এমন একটি কন্টেইনারের কোড পরিবর্তন করা উচিত নয় যা ইতিমধ্যেই চলছে ৷ আপনার যদি একটি কন্টেইনারাইজড অ্যাপ্লিকেশন থাকে এবং পরিবর্তন করতে চান, সঠিক প্রক্রিয়াটি হলো একটি নতুন ছবি তৈরি করা যাতে পরিবর্তনটি অন্তর্ভুক্ত থাকে, তারপর আপডেট করা ছবি থেকে শুরু করতে কন্টেইনারটি পুনরায় তৈরি করুন ।

কন্টেইনার রানটাইম

একটি মৌলিক উপাদান যা কুবারনেটিসকে কার্যকরভাবে কন্টেইনার চালানোর ক্ষমতা দেয়। এটি কুবারনেটিস পরিবেশের মধ্যে কন্টেইনারগুলির সম্পাদন এবং জীবনচক্র পরিচালনার জন্য দায়ী।

কুবারনেটস কনটেইনার রানটাইম সমর্থন করে যেমন containerd, CRI-O, এবং কুবারনেটিস CRI (কন্টেইনার রানটাইম ইন্টারফেস)

সাধারণত, আপনি আপনার ক্লাস্টারকে একটি পডের জন্য ডিফল্ট কন্টেইনার রানটাইম বাছাই করার অনুমতি দিতে পারেন। আপনি যদি আপনার ক্লাস্টারে একাধিক কন্টেইনার রানটাইম ব্যবহার করতে চান, আপনি একটি পডের জন্য রানটাইম ক্লাস নির্দিষ্ট করতে পারেন যাতে কুবারনেটিস একটি নির্দিষ্ট কন্টেইনার রানটাইম ব্যবহার করে সেই কন্টেইনারগুলো চালায়।

আপনি একই কন্টেইনার রানটাইম সহ বিভিন্ন পড চালানোর জন্য রানটাইম ক্লাস ব্যবহার করতে পারেন কিন্তু ভিন্ন সেটিংসের সাথে।

3.4 - ওয়ার্কলোড

পড বুঝুন, কুবারনেটিসের সবচেয়ে ছোট ডেপ্লয়বল কম্পিউট অবজেক্ট এবং উচ্চ-লেভেল অবস্ট্রাক্শন যা আপনাকে সেগুলো চালাতে সাহায্য করে ।

ওয়ার্কলোড হলো কুবারনেটিস-এ চলমান একটি অ্যাপ্লিকেশন। আপনার ওয়ার্কলোড একটি একক উপাদান বা একাধিক যা একসাথে কাজ করে, কুবারনেটিসে আপনি এটিকে pods এর একটি সেটের মধ্যে চালান। কুবারনেটিসে, একটি পড আপনার ক্লাস্টারে কন্টেইনারগুলোর চলমান একটি সেট উপস্থাপন করে৷

কুবারনেটিস পডের একটি সংজ্ঞায়িত জীবনচক্র. উদাহরণস্বরূপ, একবার আপনার ক্লাস্টারে একটি পড চলমান হলে নোড যেখানে সেই পডটি চলছে সেখানে একটি গুরুতর ত্রুটির অর্থ হলো সেই নোডের সমস্ত পড ব্যর্থ হয়েছে ৷ কুবারনেটিস ব্যর্থতার সেই লেভেলটিকে চূড়ান্ত হিসাবে বিবেচনা করে: আপনাকে পুনরুদ্ধার করার জন্য একটি নতুন পড তৈরি করতে হবে, এমনকি যদি নোডটি পরে সুস্থ হয়ে ওঠে।

যাইহোক, জীবনকে যথেষ্ট সহজ করতে, আপনাকে প্রতিটি পড সরাসরি পরিচালনা করতে হবে না। পরিবর্তে, আপনি ওয়ার্কলোড রিসোর্স ব্যবহার করতে পারেন যা আপনার পক্ষ থেকে পডের একটি সেট পরিচালনা করে। এই রিসোর্সগুলো কন্ট্রোলার কনফিগার করে যা নিশ্চিত করে যে সঠিক সংখ্যক পড চলছে, আপনার নির্দিষ্ট স্টেটের সাথে মেলে৷

কুবারনেটিস বেশ কয়েকটি বিল্ট ইন ওয়ার্কলোড রিসোর্স সরবরাহ করে:

  • ডিপ্লয়মেন্ট এবং রেপ্লিকাসেট, (ডিপ্লয়মেন্ট হলো একটি প্রতিস্থাপন ব্যবস্থা লিগেসি ReplicationController API এর) ক্লাস্টারে একটি স্টেটলেস অ্যাপ্লিকেশান ওয়ার্কলোড পরিচালনা করার জন্য ডিপ্লয়মেন্ট একটি উপযুক্ত ব্যবস্থা , যেখানে ডিপ্লয়মেন্টের যেকোনো পড বিনিময়যোগ্য এবং প্রয়োজনে প্রতিস্থাপন করা যেতে পারে।
  • স্টেটফুলসেট আপনাকে এক বা একাধিক সম্পর্কিত পড চালাতে দেয় যা কোনোভাবে ট্র্যাক স্টেট করে। উদাহরণস্বরূপ, যদি আপনার ওয়ার্কলোড ক্রমাগতভাবে ডেটা রেকর্ড করে, আপনি একটি স্টেটফুলসেট চালাতে পারেন যা প্রতিটি পডের সাথে একটি PersistentVolume এর সাথে মেলে। আপনার কোড, সেই স্টেটফুলসেটের জন্য পডগুলিতে চলমান, সামগ্রিক স্থিতিস্থাপকতা উন্নত করতে একই স্টেটফুলসেটের অন্যান্য পডগুলিতে ডেটা প্রতিলিপি করতে পারে।
  • একটি ডেমনসেট পডগুলোকে সংজ্ঞায়িত করে যা একটি নির্দিষ্ট নোড লোকাল সুবিধা প্রদান করে; প্রতিবার আপনি আপনার ক্লাস্টারে একটি নোড যুক্ত করেন যা একটি ডেমনসেটের স্পেসিফিকেশনের সাথে মেলে, কন্ট্রোল প্লেন সেই ডেমনসেটের জন্য একটি পডকে নতুন নোডে নির্ধারণ করে। ডেমনসেটের প্রতিটি পড একটি ক্লাসিক Unix / POSIX সার্ভারে সিস্টেম ডেমনের মতো একই ভূমিকা পালন করে। একটি ডেমনসেট আপনার ক্লাস্টার পরিচালনার জন্য গুরুত্বপূর্ণ হতে পারে, যেমন একটি প্লাগইন নোড অ্যাক্সেস করতে দেয় ক্লাস্টার নেটওয়ার্কিং, এটি আপনাকে নোড পরিচালনা করতে সাহায্য করতে পারে, অথবা এটি ঐচ্ছিক আচরণ প্রদান করতে পারে যা আপনি যে কন্টেইনার প্ল্যাটফর্মটি চালাচ্ছেন তা উন্নত করে।
  • আপনি একটি Job এবং / বা একটি CronJob ব্যবহার করতে পারেন যা কাজগুলোকে চিহ্নিত করবে যা সমাপ্তির জন্য চলবে পরে থামবে। একটি Job একটি একক টাস্কের প্রতিনিধিত্ব করে, যেখানে প্রতিটি CronJob একটি শিডিউল অনুযায়ী পুনরাবৃত্তি করে।

বৃহত্তর কুবারনেটস ইকোসিস্টেমে, আপনি তৃতীয় পক্ষের ওয়ার্কলোডের রিসোর্সগুলো খুঁজে পেতে পারেন যা অতিরিক্ত আচরণ প্রদান করে। একটি কাস্টম রিসোর্স ডেফিনিশন ব্যবহার করে, আপনি যদি কুবারনেটসের মূল অংশ নয় এমন একটি নির্দিষ্ট আচরণ চান তাহলে আপনি একটি তৃতীয় পক্ষের ওয়ার্কলোডের রিসোর্স যোগ করতে পারেন । উদাহরণস্বরূপ, আপনি যদি আপনার অ্যাপ্লিকেশনের জন্য পডগুলির একটি গ্রুপ চালাতে চান কিন্তু কাজ বন্ধ করতে চান যদি না সব পডগুলো উপলব্ধ হয় (সম্ভবত কিছু উচ্চ-থ্রুপুট ডিস্ট্রিবিউট করা কাজের জন্য), তাহলে আপনি সেই ফিচারটি প্রদান করে এমন একটি এক্সটেনশন বাস্তবায়ন বা ইনস্টল করতে পারেন।

এর পরের কি

ওয়ার্কলোড ম্যানেজমেন্টের জন্য প্রতিটি API ধরণের সম্পর্কে পড়ার পাশাপাশি, আপনি কীভাবে নির্দিষ্ট কাজগুলো করতে হবে তা পড়তে পারেন:

কনফিগারেশন থেকে কোড আলাদা করার জন্য কুবারনেটিসের প্রক্রিয়া সম্পর্কে জানতে, কনফিগারেশন দেখুন।

কুবারনেটিস কীভাবে অ্যাপ্লিকেশনগুলির জন্য পডগুলো পরিচালনা করে সে সম্পর্কে পটভূমি প্রদান করে এমন দুটি সাপোর্টকারী ধারণা রয়েছে:

  • গার্বেজ কালেকশন আপনার ক্লাস্টার থেকে বস্তুগুলিকে তাদের মালিকানাধীন রিসোর্স সরিয়ে ফেলার পরে পরিষ্কার করে।
  • time-to-live after finished কন্ট্রোলার কাজগুলো সম্পূর্ণ করার পর একটি নির্দিষ্ট সময় পেরিয়ে গেলে তা সরিয়ে দেয়।

একবার আপনার অ্যাপ্লিকেশানটি চালু হয়ে গেলে, আপনি এটিকে একটি সার্ভিস হিসাবে ইন্টারনেটে উপলব্ধ করতে চাইতে পারেন বা, শুধুমাত্র ওয়েব অ্যাপ্লিকেশনের জন্য, একটি ইনগ্রেস ব্যবহার করে ।

3.4.1 - পড

পড হলো কম্পিউটিংয়ের ক্ষুদ্রতম স্থাপনযোগ্য একক যা আপনি কুবারনেটিসে তৈরি এবং পরিচালনা করতে পারেন।

একটি পড (তিমি বা মটর শুঁটির একটি পডের মতো) এক বা একাধিক কন্টেইনার এর একটি গ্রুপ , শেয়ার্ড স্টোরেজ এবং নেটওয়ার্ক রিসোর্স গুলির সাথে, এবং কন্টেইনার কীভাবে চালানো যায় তার জন্য একটি স্পেসিফিকেশন। একটি পডের সামগ্রী সর্বদা সহ-অবস্থিত এবং সহ-নির্ধারিত, এবং একটি শেয়ার্ড প্রসঙ্গে চালে। একটি পড মডেল একটি অ্যাপ্লিকেশন-নির্দিষ্ট "লজিক্যাল হোস্ট": এটিতে এক বা একাধিক অ্যাপ্লিকেশন রয়েছে কন্টেইনার যা তুলনামূলকভাবে শক্তভাবে মিলিত হয়। নন-ক্লাউড প্রেক্ষাপটে, একই ভৌত (ফিজিক্যাল) বা ভার্চুয়াল মেশিনে সঞ্চালিত অ্যাপ্লিকেশনগুলি একই লজিক্যাল হোস্টে নির্বাহিত ক্লাউড অ্যাপ্লিকেশনগুলির সাথে সাদৃশ্যপূর্ণ।

পাশাপাশি অ্যাপ্লিকেশন কন্টেইনারে, একটি পড থাকতে পারে init কন্টেইনার যেটি চলে পড স্টার্টআপের সময়। আপনি ইনজেকশনও করতে পারেন ephemeral কন্টেইনার একটি চলমান পড ডিবাগ করার জন্য।

পড কি ?

একটি পডের শেয়ার্ড প্রসঙ্গ হল লিনাক্স নেমস্পেস(namespaces), cgroups এবং বিচ্ছিন্নতার সম্ভাব্য অন্যান্য দিক - একই জিনিস যা একটি কন্টেইনার বিচ্ছিন্ন করে। একটি পডের প্রেক্ষাপটের মধ্যে, পৃথক অ্যাপ্লিকেশন থাকতে পারে আরও উপ-বিচ্ছিন্নতা প্রয়োগ করা হয়েছে।

একটি পড শেয়ার্ড নেমস্পেস এবং শেয়ার্ড ফাইল সিস্টেম ভলিউম সহ কন্টেইনারগুলির সেটের অনুরূপ।

কুবারনেটিস ক্লাস্টারের পড প্রধানত দুটি উপায়ে ব্যবহৃত হয়:

  • পড যা একটি একক কন্টেইনার চালায়" এক-কন্টেইনার-প্রতি-পড" মডেলটি কুবারনেটিসের সবচেয়ে সাধারণ ব্যবহার; এই ক্ষেত্রে, আপনি একটি একক কন্টেইনারর চারপাশে একটি মোড়ক হিসাবে একটি পডকে ভাবতে পারেন; কুবারনেটিস সরাসরি কন্টেইনারগুলি পরিচালনা করার পরিবর্তে পডগুলি পরিচালনা করে।

  • পডগুলি যা একাধিক কন্টেইনার চালায় যা একসাথে কাজ করা দরকার একটি পড একাধিক সহ-অবস্থিত কন্টেইনার দ্বারা গঠিত একটি অ্যাপ্লিকেশনকে এনক্যাপসুলেট(encapsulate) করতে পারে যেগুলি শক্তভাবে সংযুক্ত এবং রিসোর্স ভাগ করতে হবে৷ এই সহ-অবস্থিত কন্টেইনারগুলি একটি একক সমন্বিত ইউনিট গঠন করে।

    একটি একক পডে একাধিক সহ-অবস্থিত এবং সহ-পরিচালিত কন্টেইনারে গোষ্ঠীবদ্ধ করা একটি অপেক্ষাকৃত উন্নত ব্যবহারের ক্ষেত্রে। আপনার এই প্যাটার্নটি কেবলমাত্র নির্দিষ্ট ক্ষেত্রে ব্যবহার করা উচিত যেখানে আপনার কন্টেইনারে শক্তভাবে সংযুক্ত করা হয়েছে।

    প্রতিলিপি প্রদানের জন্য আপনাকে একাধিক কন্টেইনার চালানোর দরকার নেই (স্থিতিস্থাপকতার জন্য বা ক্ষমতা); আপনার একাধিক প্রতিলিপি প্রয়োজন হলে, দেখুন ওয়ার্কলোড ম্যানেজমেন্ট

পডের ব্যবহার

নিচে একটি পডের উদাহরণ দেওয়া হল যেটিতে একটি কন্টেইনার রয়েছে যা nginx:1.14.2 ইমেজটি চালাচ্ছে।

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

উপরে দেখানো পড তৈরি করতে, নিম্নলিখিত কমান্ডটি চালান:

kubectl apply -f https://k8s.io/examples/pods/simple-pod.yaml

পড সাধারণত সরাসরি তৈরি করা হয় না এবং ওয়ার্কলোড রিসোর্স ব্যবহার করে তৈরি করা হয়। কিভাবে পডগুলিব্যবহার করা হয় ওয়ার্কলোড রিসোর্স সহ সে সম্পর্কে আরও তথ্যের জন্য পডগুলির সাথে কাজ দেখুন।

পড পরিচালনার জন্য ওয়ার্কলোডের রিসোর্স

সাধারণত আপনাকে সরাসরি পড তৈরি করতে হবে না, এমনকি সিঙ্গেলটন পডও। পরিবর্তে, ওয়ার্কলোড রিসোর্সগুলি ব্যবহার করে সেগুলি তৈরি করুন যেমন ডিপলয়ম্যান্ট বা জব। আপনার পডের অবস্থা ট্র্যাক করার প্রয়োজন হলে, বিবেচনা করুন স্টেটফুলসেট রিসোর্স।

প্রতিটি পড একটি প্রদত্ত অ্যাপ্লিকেশনের একটি একক উদাহরণ চালানোর জন্য বোঝানো হয়। যদি আপনি চান আপনার অ্যাপ্লিকেশনকে অনুভূমিকভাবে স্কেল করতে (আরো উদাহরণ চালানোর মাধ্যমে আরো সামগ্রিক রিসোর্স প্রদান করতে), আপনার একাধিক পড ব্যবহার করা উচিত, প্রতিটি উদাহরণের জন্য একটি। কুবারনেটিসে-এ, এটিকে সাধারণত প্রতিলিপি হিসাবে উল্লেখ করা হয়। প্রতিলিপিকৃত পডগুলি সাধারণত একটি ওয়ার্কলোড রিসোর্স কন্ট্রোলার দ্বারা একটি গ্রুপ হিসাবে তৈরি এবং পরিচালিত হয়।

দেখুন পড এবং কন্ট্রোলার আরও তথ্যের জন্য কিভাবে কুবারনেটিস অ্যাপ্লিকেশন স্কেলিং এবং অটো-হিলিং বাস্তবায়নের জন্য ওয়ার্কলোড রিসোর্স এবং তাদের কন্ট্রোলার ব্যবহার করে।

পডগুলি স্থানীয়ভাবে তাদের উপাদান কন্টেইনারের জন্য দুই ধরণের ভাগ করা রিসোর্স সরবরাহ করে: নেটওয়ার্কিং এবং স্টোরেজ

পডগুলি নিয়ে কাজ করা

আপনি খুবই কম সময় সরাসরি কুবারনেটিস-এ এমনকি সিঙ্গেলটন পডগুলি-তে পৃথক পড তৈরি করবেন। এই কারণে পডগুলি তুলনামূলকভাবে অল্পক্ষণস্থায়ী, নিষ্পত্তিযোগ্য(disposable) হিসাবে ডিজাইন করা হয়েছে। যখন একটি পড তৈরি করা হয় (প্রত্যক্ষভাবে আপনার দ্বারা বা পরোক্ষভাবে একটি কন্ট্রোলার) দ্বারা, নতুন পডটি আপনার ক্লাস্টারে একটি নোড চালানোর জন্য নির্ধারিত হয়। পডটি সেই নোডে থাকে যতক্ষণ না পড এক্সিকিউশন শেষ করে, পড অবজেক্টটি মুছে ফেলা হয়, পডটিকে রিসোর্সের অভাবের জন্য উচ্ছেদ করা হয়, বা নোড ব্যর্থ হয়।

একটি পডের নাম অবশ্যই একটি বৈধ DNS সাবডোমেন মান হতে হবে, তবে এটি পড হোস্টনামের জন্য অপ্রত্যাশিত ফলাফল তৈরি করতে পারে। সর্বোত্তম সামঞ্জস্যের জন্য, নামের আরো সীমাবদ্ধ নিয়ম অনুসরণ করা উচিত DNS লেবেলএর জন্য।

পড অপারেটিং সিস্টেম(OS)

ফিচার স্টেট: কুবারনেটিস v1.25 [stable]

আপনি যে OS-এ পড চালাতে চান তা নির্দেশ করার জন্য আপনাকে .spec.os.name যে কোনো একটি ক্ষেত্রে windows বা linux-তে সেট করতে হবে। এই দুটিই একমাত্র অপারেটিং সিস্টেম যা এখন কুবারনেটিস দ্বারা সমর্থিত। ভবিষ্যতে, এই তালিকা প্রসারিত করা হতে পারে।

কুবারনেটিস v1.31 -এ, এই ক্ষেত্রের জন্য আপনি যে মান সেট করেছেন তা পডগুলির জন্য শিডিউলিং কোনও প্রভাব ফেলবে না ৷ সেট করা .spec.os.name পড অপারেটিং সিস্টেমকে প্রামাণিকভাবে সনাক্ত করতে সহায়তা করে এবং বৈধতার জন্য ব্যবহৃত হয়। Kubelet একটি পড চালাতে প্রত্যাখ্যান করে যেখানে আপনি একটি পড এর অপারেটিং সিস্টেম নির্দিষ্ট করেছেন, যদি এটি সেই নোডের অপারেটিং সিস্টেমের মতো না হয় যেখানে সেই Kubelet চলছে। পডের নিরাপত্তা মান সেই অপারেটিং সিস্টেমের সাথে প্রাসঙ্গিক নয় এমন নীতি প্রয়োগ করা এড়াতে এই ক্ষেত্রটিও ব্যবহার করা হয়৷

পড এবং কন্ট্রোলার

আপনি আপনার জন্য একাধিক পড তৈরি এবং পরিচালনা করতে ওয়ার্কলোড রিসোর্স ব্যবহার করতে পারেন। পড ব্যর্থতার ক্ষেত্রে রিসোর্স জন্য একটি কন্ট্রোলার প্রতিলিপি এবং রোলআউট এবং স্বয়ংক্রিয় নিরাময় পরিচালনা করে। উদাহরণস্বরূপ, যদি একটি নোড ব্যর্থ হয়, একটি কন্ট্রোলার লক্ষ্য করে যে সেই নোডের পডগুলি কাজ করা বন্ধ করে দিয়েছে এবং একটি প্রতিস্থাপন পড তৈরি করে। শিডিউলার একটি সুস্থ নোডে প্রতিস্থাপন পড স্থাপন করে।

এখানে ওয়ার্কলোড রিসোর্সগুলির কিছু উদাহরণ রয়েছে যা এক বা একাধিক পডগুলি পরিচালনা করে:

পড টেমপ্লেট

রিসোর্সগুলির জন্য ওয়ার্কলোড কন্ট্রোলাররা একটি পড টেমপ্লেট থেকে পড তৈরি করে এবং আপনার পক্ষে সেই পডগুলি পরিচালনা করে৷

পড টেমপ্লেটগুলি হল পড তৈরির জন্য স্পেসিফিকেশন, এবং ওয়ার্কলোড রিসোর্সগুলির অন্তর্ভুক্ত যেমন ডিপলয়ম্যান্টস, জব, এবং ডেমোনসেট

ওয়ার্কলোড রিসোর্সের প্রতিটি কন্ট্রোলার প্রকৃত পড তৈরি করতে ওয়ার্কলোড অবজেক্টের ভিতরে পড টেম্পলেট ব্যবহার করে। পড টেম্পলেট হল আপনার অ্যাপ চালানোর জন্য যে কোনো ওয়ার্কলোড রিসোর্স ব্যবহার করা সেই কাঙ্ক্ষিত অবস্থার অংশ।

নিচের নমুনাটি একটি সাধারণ কাজের জন্য একটি টেমপ্লেট সহ একটি ম্যানিফেস্ট যা একটি কন্টেইনার শুরু করে। সেই পডের কন্টেইনারটি একটি বার্তা প্রিন্ট করে তারপর বিরতি দেয়।

apiVersion: batch/v1
kind: Job
metadata:
  name: hello
spec:
  template:
    # This is the pod template
    spec:
      containers:
      - name: hello
        image: busybox:1.28
        command: ['sh', '-c', 'echo "Hello, Kubernetes!" && sleep 3600']
      restartPolicy: OnFailure
    # The pod template ends here

পড টেমপ্লেট পরিবর্তন করা বা একটি নতুন পড টেমপ্লেটে স্যুইচ করা আগে থেকেই বিদ্যমান পডগুলিতে সরাসরি প্রভাব ফেলে না। আপনি যদি কোনও ওয়ার্কলোড রিসোর্সের জন্য পড টেমপ্লেট পরিবর্তন করেন তবে সেই রিসোর্সটি এর প্রতিস্থাপন পড তৈরি করতে হবে যা আপডেট করা টেমপ্লেট ব্যবহার করে।

উদাহরণস্বরূপ, স্টেটফুলসেট কন্ট্রোলার নিশ্চিত করে যে চলমান পডগুলি প্রতিটি স্টেটফুলসেট অবজেক্টের বর্তমান পড টেমপ্লেটের একই । আপনি যদি স্টেটফুলসেট ইডিট করেন তার পড টেমপ্লেট পরিবর্তন করতে, স্টেটফুলসেট আপডেট করা টেমপ্লেটের উপর ভিত্তি করে নতুন পড তৈরি করা শুরু করে। অবশেষে, সমস্ত পুরানো পড নতুন পড দিয়ে প্রতিস্থাপিত হয় এবং আপডেট সম্পূর্ণ হয়।

প্রতিটি ওয়ার্কলোড রিসোর্স পড টেমপ্লেটের পরিবর্তনগুলি পরিচালনা করার জন্য নিজস্ব নিয়মগুলি প্রয়োগ করে৷ আপনি যদি বিশেষভাবে স্টেটফুলসেট সম্পর্কে আরও পড়তে চান, স্টেটফুলসেট বেসিক টিউটোরিয়ালটিতে
আপডেট কৌশল পড়ুন।

নোডগুলিতে, kubelet পড টেমপ্লেট এবং আপডেটগুলির আশেপাশে কোনও বিবরণ সরাসরি পর্যবেক্ষণ বা পরিচালনা করে না; এই বিবরণগুলি দূরে এব্যস্ট্রাক হয় ৷ উদ্বেগের এব্যস্ট্রাকশন এবং বিচ্ছেদ সিস্টেমের শব্দার্থিকে সরল করে, এবং বিদ্যমান কোড পরিবর্তন না করে ক্লাস্টারের আচরণকে প্রসারিত করা সম্ভবপর করে তোলে।

পড আপডেট এবং প্রতিস্থাপন

পূর্ববর্তী সেকশনে উল্লিখিত হিসাবে, যখন একটি ওয়ার্কলোড রিসোর্সের জন্য পড টেমপ্লেট পরিবর্তন করা হয়, তখন কন্ট্রোলার বিদ্যমান পডগুলিকে আপডেট বা প্যাচ করার পরিবর্তে আপডেট করা টেমপ্লেটের উপর ভিত্তি করে নতুন পড তৈরি করে।

কুবারনেটিস আপনাকে সরাসরি পড পরিচালনা করতে বাধা দেয় না। এটি একটি চলমান পডের কিছু ক্ষেত্র আপডেট করা সম্ভব। যাইহোক, পড আপডেটের ক্রিয়াকলাপ যেমন প্যাচ, এবং প্রতিস্থাপন কিছু সীমাবদ্ধতা রয়েছে :

  • একটি পড সম্পর্কে বেশিরভাগ মেটাডেটা অপরিবর্তনীয়। উদাহরণস্বরূপ আপনি namespace, name, uid, বা creationTimestamp ক্ষেত্র পরিবর্তন করতে পারবেন না; generation ক্ষেত্রটি অনন্য। এটি কেবলমাত্র সেই আপডেটগুলি গ্রহণ করে যা ক্ষেত্রের বর্তমান মান বৃদ্ধি করে।

  • যদি metadata.deletionTimestamp সেট করা থাকে, তবে metadata.finalizers তালিকায় কোনো নতুন এন্ট্রি যোগ করা যাবে না।

  • পড আপডেটগুলি spec.containers[*].image, spec.initContainers[*].image, spec.activeDeadlineSeconds বা spec.tolerations ব্যতীত অন্য কোনো ক্ষেত্র পরিবর্তন করতে পারে না। spec.tolerations এর জন্য, আপনি শুধুমাত্র নতুন এন্ট্রি যোগ করতে পারেন।

  • spec.activeDeadlineSeconds ক্ষেত্র আপডেট করার সময়, দুই ধরনের আপডেটের অনুমতি দেওয়া হয়:

    1. একটি ধনাত্মক সংখ্যায় আনঅ্যাসাইন করা ক্ষেত্র সেট করা;
    2. ক্ষেত্রটিকে একটি ধনাত্মক সংখ্যা থেকে একটি ছোট, অ-ঋণাত্মক সংখ্যায় আপডেট করা।

রিসোর্স ভাগাভাগি এবং যোগাযোগ

পডগুলি তাদের উপাদান কন্টেইনারর মধ্যে ডেটা ভাগ করে নেওয়া এবং যোগাযোগ করতে সক্ষম করে।

পডগুলিতে স্টোরেজ

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

পড নেটওয়ার্কিং

প্রতিটি পড প্রতিটি এড্রেস পরিবারের জন্য একটি একক আইপি এড্রেস বরাদ্দ করা হয় । একটি পডের প্রতিটি কন্টেইনার আইপি এড্রেস এবং নেটওয়ার্ক পোর্ট সহ নেটওয়ার্ক নেমস্পেস শেয়ার করে । একটি পডের ভিতরে (এবং শুধুমাত্র তখন), পডের অন্তর্গত কন্টেইনারগুলি লোকালহোস্ট ব্যবহার করে একে অপরের সাথে যোগাযোগ করতে পারে। যখন একটি পডের কন্টেইনারগুলি পডের বাইরে এনটিটির সাথে যোগাযোগ করে, তখন তাদের অবশ্যই সমন্বয় করতে হবে যে তারা কীভাবে ভাগ করা নেটওয়ার্ক রিসোর্সগুলি (যেমন পোর্ট) ব্যবহার করে। একটি পডের মধ্যে, কন্টেইনারগুলি একটি আইপি ঠিকানা এবং পোর্ট স্পেস ভাগ করে এবং একে অপরকে লোকালহোস্ট এর মাধ্যমে খুঁজে পেতে পারে। একটি পডের কন্টেইনারগুলি যেমন SystemV semaphores বা POSIX শেয়ার্ড মেমরির সাথে স্ট্যান্ডার্ড ইন্টার-প্রসেস ব্যবহার করে একে অপরের সাথে যোগাযোগ করতে পারে। বিভিন্ন পডের কন্টেইনারগুলির ইউনিক IP এড্রেস থাকে এবং বিশেষ কনফিগারেশন ছাড়া OS-লেভেলের IPC দ্বারা যোগাযোগ করতে পারে না। যে কন্টেইনারগুলি একটি ভিন্ন পডে চলমান একটি কন্টেইনারের সাথে ইন্টারঅ্যাক্ট করতে চায় তারা যোগাযোগের জন্য আইপি নেটওয়ার্কিং ব্যবহার করতে পারে।

পডের মধ্যে থাকা কন্টেইনারগুলি সিস্টেমের হোস্টনামটিকে পডের জন্য কনফিগার করা নাম-এর মতই দেখতে পায়। এই সেকশনে networking এই বিষয়ে আরো আছে।

কন্টেইনারগুলির জন্য বিশেষাধিকার মোড

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

লিনাক্স বিশেষাধিকার কন্টেইনার

লিনাক্সে, পডের যেকোনো কনটেইনার স্পেকের নিরাপত্তা প্রসঙ্গ তে privileged (লিনাক্স) ফ্লাগ ব্যবহার করে সুবিধাপ্রাপ্ত মোড সক্রিয় করতে পারে। এটি এমন কন্টেইনারগুলির জন্য দরকারী যেগুলি অপারেটিং সিস্টেমের প্রশাসনিক ক্ষমতাগুলি ব্যবহার করতে চায় যেমন নেটওয়ার্ক স্ট্যাক নিপূণভাবে ব্যবহার করা বা হার্ডওয়্যার ডিভাইসগুলি অ্যাক্সেস করা।

উইন্ডোজ বিশেষাধিকার কন্টেইনার

ফিচার স্টেট: কুবারনেটিস v1.26 [stable]

উইন্ডোজে, আপনি পড স্পেকের নিরাপত্তা প্রসঙ্গে windowsOptions.hostProcess ফ্লাগ সেট করে একটি উইন্ডোজে HostProcess পড তৈরি করতে পারেন। এই পডের সমস্ত কন্টেইনার অবশ্যই উইন্ডোজ HostProcess কন্টেইনার হিসাবে চালাতে হবে। HostProcess পডগুলি সরাসরি হোস্টে চলে এবং লিনাক্স সুবিধাপ্রাপ্ত কন্টেইনারগুলির মতো প্রশাসনিক কাজ সম্পাদন করতেও ব্যবহার করা যেতে পারে।

স্ট্যাটিক পডগুলি

স্ট্যাটিক পডগুলি একটি নির্দিষ্ট নোডে kubelet daemon দ্বারা সরাসরি পরিচালিত হয়, API সার্ভার তাদের পর্যবেক্ষণ করে না। যেখানে বেশিরভাগ পড নিয়ন্ত্রণ কন্ট্রোল প্লেন দ্বারা পরিচালিত হয় (উদাহরণস্বরূপ, একটি ডিপ্লয়মেন্ট), স্ট্যাটিক পডগুলির জন্য, kubelet সরাসরি প্রতিটি স্ট্যাটিক পডের তত্ত্বাবধান করে (এবং এটি ব্যর্থ হলে পুনরায় চালু করে)।

একটি নির্দিষ্ট নোডে স্ট্যাটিক পডগুলি সবসময় একটি Kubelet এর সাথে আবদ্ধ থাকে। স্ট্যাটিক পডের প্রধান ব্যবহার হল একটি স্ব-হোস্টেড কন্ট্রোল প্লেনে চালানো: অন্য কথায়, ব্যক্তিগত কন্ট্রোল প্লেন উপাদান তত্ত্বাবধানে kubelet ব্যবহার করা।

kubelet স্বয়ংক্রিয়ভাবে প্রতিটি স্ট্যাটিক পডের জন্য কুবারনেটিস API সার্ভারে একটি মিরর পড তৈরির চেষ্টা করে। এর মানে হল যে একটি নোডে চলমান পডগুলি API সার্ভারে দৃশ্যমান, তবে সেখান থেকে নিয়ন্ত্রণ করা যায় না। আরও তথ্যের জন্য স্থির পড তৈরি করুন গাইডটি দেখুন।

একাধিক কন্টেইনার সহ পড

পডগুলি একাধিক সহযোগিতা প্রক্রিয়া (কন্টেইনার হিসাবে) সমর্থন করার জন্য ডিজাইন করা হয়েছে যা পরিষেবার একটি সমন্বিত একক গঠন করে। একটি পডের কন্টেইনারগুলি ক্লাস্টারের একই ফিজিক্যাল বা ভার্চুয়াল মেশিনে স্বয়ংক্রিয়ভাবে সহ-অবস্থিত এবং সহ-নির্ধারিত। কন্টেইনারগুলি রিসোর্স এবং নির্ভরতা ভাগ করে নিতে পারে, একে অপরের সাথে যোগাযোগ করতে পারে এবং কখন এবং কীভাবে সেগুলি বন্ধ করা হয় তা সমন্বয় করতে পারে।

কুবারনেটিস ক্লাস্টারের পড দুটি প্রধান উপায়ে ব্যবহৃত হয়:

  • পড যা একটি একক কন্টেইনার চালায়। "এক-কন্টেইনার-প্রতি-পড" মডেলটি কুবারনেটিসের সবচেয়ে সাধারণ ব্যবহারের ক্ষেত্রে; এই ক্ষেত্রে, আপনি একটি একক কন্টেইনারের চারপাশে একটি মোড়ক হিসাবে একটি পডকে ভাবতে পারেন; কুবারনেটস সরাসরি কন্টেইনারগুলি পরিচালনা করার পরিবর্তে পডগুলি পরিচালনা করে।
  • পড যা একাধিক কন্টেইনার চালায় যেগুলি একসাথে কাজ করতে হবে। একটি পড একাধিক সহ-অবস্থিত কন্টেইনারে গঠিত একটি অ্যাপ্লিকেশনকে এনক্যাপসুলেট করতে পারে যা শক্তভাবে সংযুক্ত থাকে এবং রিসোর্স ভাগ করে নেওয়ার প্রয়োজন হয়। এই সহ-অবস্থিত কন্টেইনারগুলি পরিষেবার একটি একক সমন্বিত ইউনিট গঠন করে—উদাহরণস্বরূপ, একটি কন্টেইনার জনসাধারণের কাছে ভাগ করা ভলিউমে ডেটা সংরক্ষণ করে, যখন একটি পৃথক সাইডকার কন্টেইনার সেই ফাইলগুলিকে রিফ্রেশ বা আপডেট করে৷ পড এই কন্টেইনার, স্টোরেজ রিসোর্স এবং একটি ক্ষণস্থায়ী নেটওয়ার্ক পরিচয়কে একক ইউনিট হিসাবে একত্রে মোড়ক করে।

উদাহরণস্বরূপ, আপনার কাছে একটি কন্টেইনার থাকতে পারে যেটি একটি শেয়ার্ড ভলিউমের ফাইলগুলির জন্য একটি ওয়েব সার্ভার হিসাবে কাজ করে এবং একটি পৃথক সাইডকার কন্টেইনার যা একটি দূরবর্তী উৎস থেকে সেই ফাইলগুলিকে আপডেট করে, যেমনটি নিম্নলিখিত চিত্রে রয়েছে:

পড তৈরির চিত্র

কিছু পডের আছে init কন্টেইনার পাশাপাশি অ্যাপ কন্টেইনার। ডিফল্টরূপে, init কন্টেইনারগুলি অ্যাপ কন্টেইনারগুলি শুরু হওয়ার আগে চলে এবং সম্পূর্ণ হয়।

আপনার কাছে সাইডকার কন্টেইনার থাকতে পারে যেগুলি প্রধান অ্যাপ্লিকেশন পডকে সহায়ক পরিষেবা প্রদান করে (উদাহরণস্বরূপ: একটি পরিষেবা মেশ)।

ফিচার স্টেট: কুবারনেটিস v1.29 [beta]

ডিফল্টরূপে সক্রিয় করা হয়েছে, SidecarContainers ফিচার গেট init কন্টেইনারগুলির জন্য আপনাকে restartPolicy: Always নির্দিষ্ট করতে দেয়। Always পুনঃসূচনা নীতি সেট করা নিশ্চিত করে যে কন্টেইনারগুলি যেখানে আপনি এটি সেট করেছেন সেগুলিকে sidecars হিসাবে গণ্য করা হয় যেগুলি পডের পুরো জীবনকাল চলা অবস্থায় থাকে। যে কন্টেইনারগুলিকে আপনি স্পষ্টভাবে সাইডকার কন্টেনার হিসাবে সংজ্ঞায়িত করেছেন সেগুলি মূল অ্যাপ্লিকেশন পডের আগে শুরু হয় এবং পড বন্ধ না হওয়া পর্যন্ত চলমান থাকে।

কন্টেইনার probes

একটি probe একটি ডায়াগনস্টিক যা একটি কন্টেইনার kubelet দ্বারা পর্যায়ক্রমে সম্পাদিত হয়। একটি ডায়গনিস্টিক সঞ্চালনের জন্য, kubelet বিভিন্ন ক্রিয়াকলাপ করতে পারে:

  • ExecAction (কন্টেইনারের রানটাইমের সাহায্যে সম্পাদিত হয়েছে)
  • TCPSocketAction (kubelet দ্বারা সরাসরি চেক করা হয়েছে)
  • HTTPGetAction (kubelet দ্বারা সরাসরি চেক করা হয়েছে)

আপনি পডের জীবনচক্র ডকুমেন্টেশনে probes সম্পর্কে আরও পড়তে পারেন।

এর পরের কি

  • একটি পডের জীবনচক্র সম্পর্কে জানুন।
  • RuntimeClass সম্পর্কে জানুন এবং আপনি কীভাবে এটি ব্যবহার করতে পারেন বিভিন্ন কন্টেইনারের রানটাইম কনফিগারেশন সহ বিভিন্ন পড কনফিগার করুন।
  • PodDisruptionBudget সম্পর্কে পড়ুন এবং প্রতিবন্ধকতার সময় অ্যাপ্লিকেশনের প্রাপ্যতা পরিচালনা করার জন্য আপনি কীভাবে এটি ব্যবহার করতে পারেন।
  • Pod হল Kubernetes REST API-এর একটি শীর্ষ-স্তরের রিসোর্স। Pod অবজেক্টের সংজ্ঞা বস্তুর বিস্তারিত বর্ণনা করে।
  • ডিস্ট্রিবিউটেড সিস্টেম টুলকিট: কম্পোজিট কন্টেইনারগুলির জন্য প্যাটার্ন একাধিক কন্টেইনার সহ পডগুলির জন্য সাধারণ লেআউটগুলি ব্যাখ্যা করে।
  • [পড টপোলজি স্প্রেড সীমাবদ্ধতা] (/docs/concepts/scheduling-eviction/topology-spread-constraints/) সম্পর্কে পড়ুন।

কুবারনেটিস কেন অন্যান্য রিসোর্সগুলিতে মোড়ানোর প্রসঙ্গটি বোঝার জন্য একটি সাধারণ পড API (যেমন স্টেটফুল সেট) বা ডিপলয়মেন্ট) তে , আপনি পূর্ববর্তী আর্ট সম্পর্কে পড়তে পারেন, যার মধ্যে রয়েছে:

3.4.1.1 - সাইডকার কন্টেইনার

ফিচার স্টেট: কুবারনেটিস v1.29 [beta]

সাইডকার কন্টেইনার হল সেকেন্ডারি কন্টেইনার যা একই পড এর মধ্যে প্রধান অ্যাপ্লিকেশন কন্টেইনারের সাথে চলে। এই কন্টেইনারগুলি প্রাথমিক অ্যাপ্লিকেশন কোডটি সরাসরি পরিবর্তন না করেই অতিরিক্ত পরিষেবা, বা লগিং, মনিটরিং, নিরাপত্তা বা ডেটা সিঙ্ক্রোনাইজেশনের মতো কার্যকারিতা প্রদান করে প্রধান অ্যাপ্লিকেশন কন্টেইনারের কার্যকারিতা বাড়াতে বা প্রসারিত করতে ব্যবহৃত হয়।

সাধারণত, আপনার একটি পডে শুধুমাত্র একটি অ্যাপ কন্টেইনার থাকে। উদাহরণস্বরূপ, যদি আপনার কাছে একটি ওয়েব অ্যাপ্লিকেশন থাকে যার জন্য একটি লোকাল ওয়েবসার্ভার প্রয়োজন, লোকাল ওয়েব সার্ভারটি একটি সাইডকার এবং ওয়েব অ্যাপ্লিকেশনটি নিজেই অ্যাপ কন্টেইনার৷

কুবারনেটিসের মধ্যে সাইডকার কন্টেইনার

কুবারনেটিস একটি বিশেষ ক্ষেত্রে init কন্টেইনারে; পড স্টার্টআপের পরে সাইডকারের কন্টেইনারগুলি চলমান থাকে। এই নথিটি regular init containers শব্দটি ব্যবহার করে স্পষ্টভাবে সেই কন্টেইনারগুলিকে বোঝাতে যা শুধুমাত্র পড স্টার্টআপের সময় চলে।

আপনার ক্লাস্টারে SidecarContainers ফিচার গেট এনেবলড করা থাকলে (কুবারনেটস v1.29 থেকে ফিচারটি ডিফল্টরূপে সক্রিয় থাকে), আপনি একটি restartPolicy নির্দিষ্ট করতে পারেন পডের initContainers ক্ষেত্রে তালিকাভুক্ত কন্টেইনারগুলির জন্য। এই রিস্টার্টেবল sidecar কন্টেইনারগুলি অন্যান্য init কন্টেইনার থেকে এবং একই পডের মধ্যে প্রধান অ্যাপ্লিকেশন কন্টেইনার(গুলি) থেকে স্বাধীন। এগুলি মূল অ্যাপ্লিকেশন কন্টেইনার এবং অন্যান্য init কন্টেইনারগুলিকে প্রভাবিত না করেই শুরু, বন্ধ এবং পুনরায় চালু করা যেতে পারে।

আপনি একাধিক কন্টেইনারে একটি পড চালাতে পারেন যেগুলি init বা সাইডকার কন্টেইনার হিসাবে চিহ্নিত নয়৷ এটি উপযুক্ত যদি পডের মধ্যে থাকা কন্টেইনারগুলি পডের সামগ্রিকভাবে কাজ করার জন্য প্রয়োজন হয়, তবে আপনার কোন কন্টেইনারগুলি প্রথমে শুরু হবে বা থামবে তা নিয়ন্ত্রণ করার দরকার নেই৷ আপনি যদি কুবারনেটিসের পুরানো ভার্শনসগুলিকে সমর্থন করতে চান যা একটি কন্টেইনার-স্তরের restartPolicy ষেত্র সমর্থন করে না তবে আপনি এটিও করতে পারেন।

উদাহরণ অ্যাপ্লিকেশন

এখানে দুটি কন্টেইনার সহ একটি ডেপ্লয়মেন্টের একটি উদাহরণ রয়েছে, যার মধ্যে একটি সাইডকার:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
  labels:
    app: myapp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
        - name: myapp
          image: alpine:latest
          command: ['sh', '-c', 'while true; do echo "logging" >> /opt/logs.txt; sleep 1; done']
          volumeMounts:
            - name: data
              mountPath: /opt
      initContainers:
        - name: logshipper
          image: alpine:latest
          restartPolicy: Always
          command: ['sh', '-c', 'tail -F /opt/logs.txt']
          volumeMounts:
            - name: data
              mountPath: /opt
      volumes:
        - name: data
          emptyDir: {}

সাইডকার কন্টেইনার এবং পড জীবনচক্র (Pod lifecycle)

যদি একটি init কন্টেইনার তৈরি করা হয় তার restartPolicy Always সেট করে, তাহলে এটি শুরু হবে এবং পডের পুরো জীবনকালে চলতে থাকবে। এটি প্রধান অ্যাপ্লিকেশন কন্টেইনারগুলি থেকে আলাদা করে সহায়ক সেবা চালানোর জন্য সহায়ক হতে পারে৷

যদি এই init কন্টেইনারের জন্য একটি readinessProbe নির্দিষ্ট করা হয়, তাহলে এর ফলাফল পডের রেডি অবস্থা নির্ধারণ করতে ব্যবহার করা হবে।

যেহেতু এই কন্টেইনারগুলিকে init কন্টেইনার হিসাবে সংজ্ঞায়িত করা হয়, তাই তারা অন্যান্য init কন্টেইনারগুলির মতো একই ক্রম এবং অনুক্রমিক গ্যারান্টি থেকে উপকৃত হয়, যাতে সেগুলিকে জটিল পড ইনিশিয়ালাইজেশন প্রবাহে অন্যান্য init কন্টেইনার মিশ্রিত করা যায়।

রেগুলার init কন্টেইনারগুলির তুলনায়, initContainers-এর মধ্যে সংজ্ঞায়িত সাইডকারগুলি শুরু হওয়ার পরে চলতে থাকে। এটি গুরুত্বপূর্ণ যখন একটি পডের জন্য .spec.initContainers এর ভিতরে একাধিক এন্ট্রি থাকে। একটি সাইডকার-স্টাইলের init কন্টেইনার চালু হওয়ার পরে (কুবেলেট (kubelet) সেই init কন্টেইনারের জন্য start স্ট্যাটাসটিকে সত্যে সেট করেছে), কুবেলেট (kubelet) তারপর অর্ডারকৃত .spec.initContainers তালিকা থেকে পরবর্তী init কন্টেইনার শুরু করে। সেই স্ট্যাটাসটি হয় সত্য হয়ে যায় কারণ কন্টেইনারে একটি প্রক্রিয়া চলছে এবং কোনো স্টার্টআপ প্রোব (probe) সংজ্ঞায়িত করা হয়নি, অথবা এর startupProbe সফল হওয়ার ফলে।

Pod টার্মিনেশন হওয়ার পরে, kubelet প্রধান অ্যাপ্লিকেশন কন্টেইনার সম্পূর্ণরূপে বন্ধ না হওয়া পর্যন্ত সাইডকার কন্টেইনার বন্ধ করা স্থগিত করে। সাইডকার কন্টেইনারগুলি তখন পড স্পেসিফিকেশনে তাদের উপস্থিতির বিপরীত ক্রমে বন্ধ করা হয়। এই পদ্ধতিটি নিশ্চিত করে যে সাইডকারগুলি সচল থাকে, পডের মধ্যে অন্যান্য কন্টেইনার সাপোর্ট করে, যতক্ষণ না তাদের সার্ভিসের আর প্রয়োজন হয় না।

সাইডকার কন্টেইনারে জবস (Jobs with sidecar containers)

আপনি যদি কুবারনেটস-স্টাইলের init কন্টেইনার ব্যবহার করে সাইডকার ব্যবহার করে এমন একটি জব (job) ডিফাইন করেন, তবে প্রতিটি পডের সাইডকার কন্টেইনার মূল কন্টেইনার শেষ হওয়ার পরে কাজটি সম্পূর্ণ হতে বাধা দেয় না।

এখানে দুটি কন্টেইনার সহ একটি কাজের উদাহরণ রয়েছে, যার মধ্যে একটি সাইডকার:

apiVersion: batch/v1
kind: Job
metadata:
  name: myjob
spec:
  template:
    spec:
      containers:
        - name: myjob
          image: alpine:latest
          command: ['sh', '-c', 'echo "logging" > /opt/logs.txt']
          volumeMounts:
            - name: data
              mountPath: /opt
      initContainers:
        - name: logshipper
          image: alpine:latest
          restartPolicy: Always
          command: ['sh', '-c', 'tail -F /opt/logs.txt']
          volumeMounts:
            - name: data
              mountPath: /opt
      restartPolicy: Never
      volumes:
        - name: data
          emptyDir: {}

অ্যাপ্লিকেশন কন্টেইনার থেকে পার্থক্য

সাইডকার কন্টেইনারগুলি একই পডে app containers পাশাপাশি চলে৷ যাইহোক, তারা প্রাইমারি প্রয়োগ যুক্তি এক্সিকিউট না করে; পরিবর্তে, তারা প্রধান অ্যাপ্লিকেশনে সহায়ক কার্যকারিতা প্রদান করে।

সাইডকার কন্টেইনারদের নিজস্ব স্বাধীন জীবনচক্র আছে। এগুলি রেগুলার কন্টেইনারে স্বাধীনভাবে শুরু, বন্ধ এবং পুনরায় চালু করা যেতে পারে। এর মানে আপনি প্রাইমারি অ্যাপ্লিকেশনকে প্রভাবিত না করেই আপডেট, স্কেল বা মেইনটেইন করতে পারবেন।

সাইডকার কন্টেইনার প্রাইমারি কন্টেইনারের সাথে একই নেটওয়ার্ক এবং স্টোরেজ নেমস্পেস শেয়ার করে। এই সহ-অবস্থান তাদের ঘনিষ্ঠভাবে ইন্টারঅ্যাক্ট করতে এবং সম্পদ শেয়ার করতে দেয়।

init কন্টেইনার থেকে পার্থক্য

সাইডকার কন্টেইনার প্রধান কন্টেইনারের পাশাপাশি কাজ করে, এর কার্যকারিতা প্রসারিত করে এবং অতিরিক্ত পরিষেবা প্রদান করে।

সাইডকার কন্টেইনার প্রধান অ্যাপ্লিকেশন কন্টেইনারের সাথে একযোগে চালান। তারা পডের জীবনচক্র জুড়ে সক্রিয় থাকে এবং মূল কন্টেইনার থেকে স্বাধীনভাবে শুরু এবং বন্ধ করা যেতে পারে। init কন্টেইনার থেকে ভিন্ন, সাইডকার কন্টেইনার সমর্থন probe নিয়ন্ত্রণ করতে তাদের জীবনচক্র।

সাইডকার কন্টেইনারগুলি প্রধান অ্যাপ্লিকেশন কন্টেইনারগুলির সাথে সরাসরি ইন্টারঅ্যাক্ট করতে পারে, কারণ init কন্টেইনারগুলির মতো তারা সবসময় একই নেটওয়ার্ক ভাগ করে এবং ঐচ্ছিকভাবে ভলিউম (ফাইলসিস্টেম) ভাগ করতে পারে।

Init কন্টেইনারগুলি মূল পাত্রে শুরু হওয়ার আগে বন্ধ হয়ে যায়, তাই init কন্টেইনারগুলি একটি Pod-এ অ্যাপ কন্টেইনারের সাথে মেসেজেস বিনিময় করতে পারে না। যে কোনো ডেটা পাসিং একমুখী হয় (উদাহরণস্বরূপ, একটি init কন্টেইনার একটি emptyDir ভলিউমের মধ্যে তথ্য রাখতে পারে)।

কন্টেইনারে সম্পদ ভাগাভাগি

init, sidecar এবং অ্যাপ কন্টেইনারগুলির জন্য কার্যকর করার আদেশ দেওয়া হলে, সম্পদ ব্যবহারের জন্য নিম্নলিখিত নিয়মগুলি প্রযোজ্য:

  • সমস্ত init কন্টেইনার সংজ্ঞায়িত কোনো নির্দিষ্ট রিসোর্স অনুরোধ বা সীমার মধ্যে সর্বোচ্চ হল এফেক্টিভ রিকোয়েস্ট/লিমিট। যদি কোন সম্পদের কোন সম্পদ সীমা নির্দিষ্ট না থাকে তবে এটি সর্বোচ্চ সীমা হিসাবে বিবেচিত হয়।
  • একটি সম্পদের জন্য Pod এর এফেক্টিভ রিকোয়েস্ট/লিমিট হল pod overhead এর সমষ্টি এবং এর উচ্চতর:
    • সমস্ত non-init কন্টেইনারের সমষ্টি (অ্যাপ এবং সাইডকার কন্টেইনার) রিসোর্সের জন্য অনুরোধ/সীমা
    • একটি সম্পদের জন্য এফেক্টিভ রিকোয়েস্ট/লিমিট
  • সময়সূচী কার্যকরী অনুরোধ/সীমার উপর ভিত্তি করে করা হয়, যার অর্থ init কন্টেইনারগুলি প্রারম্ভিকতার জন্য সংস্থান সংরক্ষণ করতে পারে যা পডের জীবদ্দশায় ব্যবহৃত হয় না।
  • পডের কার্যকর QoS টিয়ার এর QoS (পরিষেবার গুণমান) স্তর হল সমস্ত init, সাইডকার এবং অ্যাপ কন্টেইনারগুলির জন্য QoS স্তর।

কার্যকর পড অনুরোধ এবং সীমার উপর ভিত্তি করে কোটা এবং সীমা প্রয়োগ করা হয়।

সাইডকার কন্টেইনার এবং লিনাক্স cgroups

লিনাক্সে, পড লেভেল কন্ট্রোল গ্রুপের (cgroups) জন্য রিসোর্স বরাদ্দ করা হয় কার্যকর পড রিকোয়েস্ট এবং লিমিট উপর ভিত্তি করে, যেমন শিডিউলারের মতো।

এর পরের কি

3.4.2 - ওয়ার্কলোড ম্যানেজমেন্ট

কুবারনেটিস বিভিন্ন বিল্ট ইন API দেয় ঘোষণামূলক ম্যানেজমেন্ট ওয়ার্কলোড এবং ওয়ার্কলোডের উপাদানের জন্য।

অবশেষে, আপনার অ্যাপ্লিকেশন পডের মধ্যে রান হয় কন্টেইনার হিসেবে; যাইহোক, একক পড ম্যানেজ করা কষ্টসাধ্য। উদাহরণস্বরূপ, যদি একটি পড ব্যর্থ হয়, আপনি তাহলে নতুন পড চালিয়ে এটিকে রিপ্লেস করতে চাইবেন। কুবারনেটিস আপনার জন্য এটি করে দিবে।

আপনি ওয়ার্ক লোড তৈরি করার জন্য কুবারনেটিস API ব্যবহার করতে পারেন অবজেক্ট যা পড থেকে বেশি অবস্ট্রাক্শন লেভেল প্রদর্শন করে, তারপর কুবারনেটিস কন্ট্রোল প্লেন স্বয়ংক্রিয়ভাবে আপনার পক্ষ থেকে পড অবজেক্ট পরিচালনা করে, আপনার সংজ্ঞায়িত ওয়ার্কলোড অবজেক্টের স্পেসিফিকেশনের উপর ভিত্তি করে।

ওয়ার্কলোড পরিচালনার জন্য বিল্ট ইন API গুলো হলো:

ডিপ্লয়মেন্ট (এবং, পরোক্ষভাবে, রেপ্লিকাসেট), আপনার ক্লাস্টারে একটি অ্যাপ্লিকেশন চালানোর সবচেয়ে সাধারণ উপায়। ক্লাস্টারে একটি স্টেটলেস অ্যাপ্লিকেশান ওয়ার্কলোড পরিচালনা করার জন্য ডিপ্লয়মেন্ট একটি উপযুক্ত ব্যবস্থা , যেখানে ডিপ্লয়মেন্টের যেকোনো পড বিনিময়যোগ্য এবং প্রয়োজনে প্রতিস্থাপন করা যেতে পারে। (ডিপ্লয়মেন্ট হলো একটি প্রতিস্থাপন ব্যবস্থা লিগেসি ReplicationController API এর).

একটি স্টেটফুলসেট আপনাকে অনুমতি দেয় এক বা একাধিক পড পরিচালনা করার – সব একই অ্যাপ্লিকেশন কোড চালায় – যেখানে পড একটি স্বতন্ত্র পরিচয় রাখতে চায়। এটি ডিপ্লয়মেন্ট থেকে ভিন্ন যেখানে পড বিনিময়যোগ্য হয়ে থাকে । স্টেটফুলসেটের সাধারণ কাজ হলো পড এবং পারসিসটেন্ট স্টোরেজ এর মধ্যে একটি লিঙ্ক তৈরি করা। উদাহরণস্বরূপ, আপনি একটি স্টেটফুল সেট চালাতে পারেন যা প্রতিটি পডকে সংযুক্ত করে একটি PersistentVolume এর সাহায্যে।যদি স্টেটফুলসেটের একটি পডও ব্যর্থ হয়, তাহলে কুবারনেটিস একটি প্রতিস্থাপন পড তৈরি করে যা একই PersistentVolume এর সাথে সংযুক্ত থাকে।

একটি ডেমনসেট পডগুলোকে সংজ্ঞায়িত করে যা একটি নির্দিষ্ট নোড লোকাল সুবিধা প্রদান করে; উদাহরণস্বরূপ, ড্রাইভার নোডের কন্টেইনারগুলোকে স্টোরেজ সিস্টেম অ্যাক্সেস করতে দেয়। আপনি তখন ডেমনসেট ব্যবহার করতে পারেন যখন ড্রাইভার, বা অন্যান্য নোড-লেভেলের সার্ভিস,নোডে চালাতে হবে যেখানে এটি দরকারী। ডেমনসেটের প্রতিটি পড একটি ক্লাসিক Unix / POSIX সার্ভারে সিস্টেম ডেমনের মতো একই ভূমিকা পালন করে। একটি ডেমনসেট আপনার ক্লাস্টার পরিচালনার জন্য গুরুত্বপূর্ণ হতে পারে, যেমন একটি প্লাগইন নোড অ্যাক্সেস করতে দেয় ক্লাস্টার নেটওয়ার্কিং, এটি আপনাকে নোড পরিচালনা করতে সাহায্য করতে পারে, বা এটি কম সুবিধা প্রদান করতে পারে যা আপনি যে কন্টেইনার প্ল্যাটফর্মটি চালাচ্ছেন তা উন্নত করে। আপনি আপনার ক্লাস্টারের প্রতিটি নোড জুড়ে বা শুধুমাত্র একটি উপসেট জুড়ে ডেমনসেট (এবং তাদের পড) চালাতে পারেন (উদাহরণস্বরূপ, শুধুমাত্র GPU ইনস্টল করা নোডগুলিতে GPU এক্সিলারেটর ড্রাইভার ইনস্টল করুন)।

আপনি একটি Job এবং / বা একটি CronJob ব্যবহার করতে পারেন যা কাজগুলোকে চিহ্নিত করবে যা সমাপ্তির জন্য চলবে পরে থামবে। একটি Job একটি একক টাস্কের প্রতিনিধিত্ব করে, যেখানে প্রতিটি CronJob একটি শিডিউল অনুযায়ী পুনরাবৃত্তি করে।

এই বিভাগে অন্যান্য বিষয়:

3.5 - সার্ভিস, লোড ব্যালেন্সিং এবং নেটওয়ার্কিং

কুবারনেটিসে নেটওয়ার্কিংয়ের পিছনে থাকা ধারণা এবং রিসোর্স।

কুবারনেটিস নেটওয়ার্ক মডেল

একটি ক্লাস্টারের প্রতিটি পড তার নিজস্ব ক্লাস্টার-ওয়াইড আইপি ঠিকানা পায় (প্রতি আইপি এড্রেস ফ্যামিলিতে একটি আইপি এড্রেস)। এর অর্থ হলো আপনাকে পডের মধ্যে স্পষ্টভাবে লিঙ্ক তৈরি করার দরকার নেই এবং পোর্টগুলো হোস্ট করার জন্য আপনাকে ম্যাপিং কন্টেইনার পোর্টগুলোর সাথে মোকাবিলা করতে হবে না। এটি একটি পরিষ্কার, পিছনের-সামঞ্জস্যপূর্ণ মডেল (backwards-compatible model) তৈরি করে যেখানে পোর্ট বরাদ্দকরণ, নামকরণ, সার্ভিস আবিষ্কার (service discovery), লোড ব্যালেন্সিং, অ্যাপ্লিকেশন কনফিগারেশন এবং মাইগ্রেশনের দৃষ্টিকোণ থেকে পডগুলোকে অনেকটা ভিএম (Virtual Machine) বা ফিজিক্যাল হোস্টের মতোই বিবেচনা করা যেতে পারে।

কুবারনেটিস যেকোন নেটওয়ার্কিং বাস্তবায়নে নিম্নলিখিত মৌলিক প্রয়োজনীয়তাগুলো আরোপ করে (যেকোনো ইচ্ছাকৃত নেটওয়ার্ক বিভাজন নীতি ব্যতীত):

  • পড NAT ছাড়া অন্য কোনো নোডে অন্য সব পডের সঙ্গে যোগাযোগ করতে পারে
  • একটি নোডের এজেন্ট (যেমন system daemons, kubelet) সেই নোডের সমস্ত পডের সাথে যোগাযোগ করতে পারে

এই মডেলটি শুধুমাত্র সামগ্রিকভাবে কম জটিল নয়, এটি প্রধানত কুবারনেটিসের ইচ্ছার সাথে সামঞ্জস্যপূর্ণ যাতে ভিএম থেকে কন্টেইনারে অ্যাপের লো-ফ্রিকশন পোর্টিং সক্ষম করা যায়। যদি আপনার কাজ আগে কোনো ভিএম-এ চলত, তাহলে আপনার ভিএম-এর IP ছিল এবং আপনার প্রোজেক্টের অন্যান্য ভিএম-এর সাথে কথা বলতে পারে। এটি একই মৌলিক মডেল।

কুবারনেটিস আইপি ঠিকানাগুলো পড স্কোপে বিদ্যমান - একটি পডের মধ্যে থাকা কন্টেনারগুলো তাদের নেটওয়ার্ক নেমস্পেসগুলো ভাগ করে - তাদের IP ঠিকানা এবং MAC ঠিকানা সহ। এর মানে হলো যে একটি পডের মধ্যে থাকা কন্টেইনারগুলো একে অপরের পোর্টে লোকালহোস্টে পৌঁছাতে পারে। এটি আরো বোঝায় যে একটি পডের মধ্যে থাকা কন্টেইনারগুলোকে পোর্ট ব্যবহারের সমন্বয় করতে হবে, তবে এটি একটি ভিএম-এর প্রক্রিয়াগুলোর থেকে আলাদা নয়। এটিকে "IP-per-pod" মডেল বলা হয়।

এটি কীভাবে প্রয়োগ করা হয় তা ব্যবহার করা নির্দিষ্ট কন্টেইনার রানটাইমের একটি ডিটেইল।

নোডেই পোর্টের জন্য অনুরোধ করা সম্ভব যা আপনার পডে ফরোয়ার্ড করা হয় (যাকে হোস্ট পোর্ট বলা হয়), কিন্তু এটি একটি খুব বিশিষ্ট অপারেশন। সেই ফরোয়ার্ডিং কীভাবে বাস্তবায়িত হয় তাও কন্টেইনার রানটাইমের ডিটেইল। পড নিজেই হোস্ট পোর্টের অস্তিত্ব বা অ-অস্তিত্ব সম্পর্কে অন্ধ।

কুবারনেটিস নেটওয়ার্কিং চারটি উদ্বেগের সমাধান করে:

কানেক্টিং অ্যাপ্লিকেশানস উইথ সার্ভিস টিউটোরিয়াল আপনাকে একটি হ্যান্ডস-অন উদাহরণ সহ পরিষেবা এবং কুবারনেটিস নেটওয়ার্কিং সম্পর্কে শিখতে দেয়।

ক্লাস্টার নেটওয়ার্কিং ব্যাখ্যা করে কিভাবে আপনার ক্লাস্টারের জন্য নেটওয়ার্কিং সেট আপ করতে হয় এবং এর সাথে জড়িত প্রযুক্তিগুলোর একটি ওভারভিউ প্রদান করে।

3.6 - স্টোরেজ

আপনার ক্লাস্টারে পডগুলোতে দীর্ঘমেয়াদী এবং অস্থায়ী উভয় স্টোরেজ সরবরাহ করার উপায়।

3.7 - কনফিগারেশন

পডস কনফিগার করার জন্য কুবারনেটিস যে রিসোর্সগুলো প্রদান করে ।

3.8 - নিরাপত্তা

ক্লাউড-নেটিভ ওয়ার্কলোডকে নিরাপত্তা রক্ষা করার প্রস্তুতির জন্য ধারণাগুলি।

এই কুবারনেটিস ডকুমেন্টেশনের এই অংশের উদ্দেশ্য আপনাকে ক্লাউড-নেটিভ প্রযুক্তিতে নিরাপত্তামুলকভাবে ওয়ার্কলোডগুলি পরিচালনা শেখানোর সাহায্য করা এবং একটি কুবারনেটিসের ক্লাস্টার নিরাপত্তামুলকভাবে রাখার গুরুত্বপূর্ণ দিক সম্পর্কে জানানো।

কুবারনেটিস ক্লাউড-নেটিভ স্থাপত্যের উপর ভিত্তি করে এবং ক্লাউড-নেটিভ তথ্য নিরাপত্তা সম্পর্কে ভাল অনুশীলনের জন্য CNCF থেকে পরামর্শ প্রদান করে।

আপনার ক্লাস্টার এবং অ্যাপ্লিকেশনগুলিকে কীভাবে সুরক্ষিত করবেন সে সম্পর্কে বিস্তৃত প্রেক্ষাপটের জন্য ক্লাউড নেটিভ নিরাপত্তা এবং কুবারনেটিস পড়ুন।

কুবারনেটিসের নিরাপত্তা ব্যবস্থা

কুবারনেটিসের মধ্যে বেশ কয়েকটি API এবং নিরাপত্তা কন্ট্রোল রয়েছে, সেইসাথে পলিসিগুলি সংজ্ঞায়িত করার উপায় যা আপনি কীভাবে তথ্য সুরক্ষা পরিচালনা করেন তার অংশ গঠন করতে পারে।

কন্ট্রোল প্লেন সুরক্ষা

কোন কুবারনেটিসের ক্লাস্টারের জন্য একটি প্রধান নিরাপত্তা ব্যবস্থা হলো কুবারনেটিস API-এ অ্যাক্সেস কন্ট্রোল করা।

কুবারনেটিস আশা করে যে আপনি কন্ট্রোল প্লেনের মধ্যে এবং কন্ট্রোল প্লেন এবং এর ক্লায়েন্টদের মধ্যে ট্রানজিটে ডেটা এনক্রিপশন প্রদান করতে TLS কনফিগার করবেন এবং ব্যবহার করবেন। আপনি কুবারনেটিস কন্ট্রোল প্লেনের মধ্যে সংরক্ষিত ডেটার জন্য এনক্রিপশন এট রেস্ট(encryption at rest) সক্ষম করতে পারেন; এটি আপনার নিজের ওয়ার্কলোডের ডেটার জন্য এনক্রিপশন এট রেস্ট ব্যবহার করা থেকে আলাদা, যা একটি ভাল আইডিয়াও হতে পারে

সিক্রেট

সিক্রেট API কনফিগারেশন ভ্যালুগুলির জন্য মৌলিক সুরক্ষা প্রদান করে যার জন্য গোপনীয়তা প্রয়োজন ।

ওয়ার্কলোড সুরক্ষা

পড এবং তাদের কন্টেনারগুলি যথাযথভাবে আইসোলেট নিশ্চিত করতে পড নিরাপত্তা স্ট্যান্ডার্ডস আপনার প্রয়োজন হলে কাস্টম আইসোলেশন নির্ধারণ করার জন্য আপনি RuntimeClasses ব্যবহার করতে পারেন।

নেটওয়ার্ক পলিসি আপনাকে পডগুলির মধ্যে, অথবা আপনার ক্লাস্টারের বাইরের নেটওয়ার্ক মধ্যে নেটওয়ার্ক ট্রাফিক নিয়ন্ত্রণ করতে দেয়।

আপনি পড, তাদের কন্টেনারগুলি এবং তাদের মধ্যে চলা ইমেজগুলির চারপাশে প্রতিরোধমূলক বা ডিটেক্টিভ কন্ট্রোলগুলি প্রয়োগ করতে বিস্তৃত ইকোসিস্টেম থেকে সিকিউরিটি কন্ট্রোল স্থাপন করতে পারেন ।

অডিটিং

কুবারনেটিস অডিটিং লগিং একটি নিরাপত্তা-সংশ্লিষ্ট, সময়ানুক্রমিক সেট অফ রেকর্ড সরবরাহ করে যা ক্লাস্টারের ক্রিয়াকলাপের অনুক্রমিক ডকুমেন্ট করে। ক্লাস্টার ব্যবহারকারীদের দ্বারা উত্পন্ন ক্রিয়াকলাপ, কুবার্নিটিস API ব্যবহার করা অ্যাপ্লিকেশন এবং নিয়ন্ত্রণ প্লেন নিজস্ব ক্রিয়াকলাপগুলি অডিট করে।

ক্লাউড প্রোভাইডার নিরাপত্তা

আপনি যদি আপনার নিজের হার্ডওয়্যার বা অন্য কোনো ক্লাউড প্রোভাইডার এ একটি কুবারনেটিস ক্লাস্টার চালান, তাহলে নিরাপত্তার সর্বোত্তম অনুশীলনের জন্য আপনার ডকুমেন্টেশনের সাথে পরামর্শ করুন। এখানে কিছু জনপ্রিয় ক্লাউড প্রোভাইডার এর নিরাপত্তা ডকুমেন্টেশনের লিঙ্ক রয়েছে :

ক্লাউড প্রদায়কের নিরাপত্তা
IaaS প্রদায়কলিঙ্ক
আলিবাবা ক্লাউডhttps://www.alibabacloud.com/trust-center
আমাজন ওয়েব সার্ভিসhttps://aws.amazon.com/security
গুগল ক্লাউড প্ল্যাটফর্মhttps://cloud.google.com/security
হুয়াওয়ে ক্লাউডhttps://www.huaweicloud.com/intl/en-us/securecenter/overallsafety
আইবিএম ক্লাউডhttps://www.ibm.com/cloud/security
মাইক্রোসফট আজওরhttps://docs.microsoft.com/en-us/azure/security/azure-security
অরাকেল ক্লাউড ইন্ফ্রাস্ট্রাকচারhttps://www.oracle.com/security
VMware vSpherehttps://www.vmware.com/security/hardening-guides

পলিসি

আপনি কুবারনেটিস-নেটিভ মেকানিজম ব্যবহার করে নিরাপত্তা পলিসি নির্ধারণ করতে পারেন, যেমন NetworkPolicy (নেটওয়ার্ক প্যাকেট ফিল্টারিং উপর ঘোষণামূলক কন্ট্রোল) বা ValidatingAdmissionPolicy (কুবারনেটিস API ব্যবহার করে কেউ কী পরিবর্তন করতে পারে তার ঘোষণামূলক সীমাবদ্ধতা)।

তবে, আপনি কুবারনেটিস পরিবেশের চারপাশে পলিসি কার্যান্বয়নে নির্ভর করতে পারেন। কুবারনেটিস এক্সটেনশন মেকানিজম সরবরাহ করে এই পরিবেশ প্রকল্পগুলির উপর তাদের নিজস্ব পলিসি নিয়ন্ত্রণ সাধারণের জন্য উন্মোচনের সুযোগ প্রদান করতে। এগুলি উদাহরণ হিসেবে উল্লেখ করা যেতে পারে: সোর্স কোড পর্যালোচনা, কন্টেনার ইমেজ অনুমোদন, এপিআই অ্যাক্সেস নিয়ন্ত্রণ, নেটওয়ার্কিং, এবং অন্যান্য।

পলিসি মেকানিজম এবং কুবারনেটিসের সম্পর্কে আরও তথ্য জানতে, পলিসি পড়ুন।

এর পরের কি

সম্পর্কিত কুবারনেটিস নিরাপত্তা বিষয়গুলি জানুন:

প্রসঙ্গ জানুন:

সার্টিফাইড:

এই অধ্যায়ে আরো পড়ুন:

3.9 - নীতিমালা

নীতিগুলির সাথে সুরক্ষা এবং সর্বোত্তম-অনুশীলনগুলি পরিচালনা করুন

কুবারনেটিস নীতিগুলি এমন কনফিগারেশন যা অন্যান্য কনফিগারেশন বা রানটাইম আচরণগুলি পরিচালনা করে। কুবারনেটিস বিভিন্ন ধরণের নীতি সরবরাহ করে নীচে তা বর্ণিত হলো:

এপিআই (API) অবজেক্ট ব্যবহার করে পলিসি প্রয়োগ করুন

কিছু API অবজেক্ট নীতি হিসাবে কাজ করে। এখানে কিছু উদাহরণ দেওয়া হল:

ভর্তি নিয়ন্ত্রক ব্যবহার করে নীতিমালা প্রয়োগ করুন

একটি ভর্তি নিয়ন্ত্রক API সার্ভারে চলে এবং API অনুরোধগুলিকে যাচাই বা পরিবর্তন করতে পারে। কিছু ভর্তি নিয়ন্ত্রক নীতি প্রয়োগ করার জন্য কাজ করে। উদাহরণস্বরূপ, অলওয়েজইমেজপুল অ্যাডমিশন কন্ট্রোলার ইমেজ পুল পলিসি অলওয়েজ এ সেট করতে একটি নতুন পড সংশোধন করে।

কুবারনেটিস বেশ কয়েকটি অন্তর্নির্মিত ভর্তি নিয়ামক রয়েছে যা API সার্ভারের মাধ্যমে কনফিগারযোগ্য --enable-admission-plugin ফ্লাগ।

ভর্তি নিয়ন্ত্রকদের বিবরণ, উপলব্ধ ভর্তি নিয়ন্ত্রকদের সম্পূর্ণ তালিকা সহ, একটি ডেডিকেটেড অংশে নথিভুক্ত ( ডকুমেন্ট) করা হয়েছে।

ভ্যালিডেটিংএডমিশনপলিসি ব্যবহার করে নীতিগুলি প্রয়োগ করুন

ভর্তি নীতিগুলি যাচাই করা কমন এক্সপ্রেশন ল্যাঙ্গুয়েজ (সিইএল) ব্যবহার করে API সার্ভারে কনফিগারযোগ্য বৈধতা চেকগুলি কার্যকর করার অনুমতি দেয়। উদাহরণস্বরূপ, সর্বশেষ চিত্র ট্যাগের ব্যবহার নিষিদ্ধ করতে একটি ভ্যালিডেটিংঅ্যাডমিশনপলিসি ব্যবহার করা যেতে পারে।

একটি ভ্যালিডেটিঅ্যাডমিশনপলিসি একটি API অনুরোধের ভিত্তিতে কাজ করে এবং ব্যবহারকারীদের অ-সম্মতিযুক্ত কনফিগারেশন সম্পর্কে ব্লক, নিরীক্ষণ (হিসাবনিকাশ) এবং সতর্ক করতে ব্যবহার করা যেতে পারে।

উদাহরণ সহ ভ্যালিডেটিংএডমিশনপলিসি API সম্পর্কে বিশদ বিবরণ একটি ডেডিকেটেড অংশে নথিভুক্ত (ডকুমেন্ট) করা হয়েছে:

ডাইনামিক ভর্তি নিয়ন্ত্রণ ব্যবহার করে নীতিমালা প্রয়োগ করুন

ডায়নামিক অ্যাডমিশন কন্ট্রোলার (বা অ্যাডমিশন ওয়েবহুক) এপিআই সার্ভারের বাইরে পৃথক অ্যাপ্লিকেশন হিসাবে চালিত হয় যা এপিআই অনুরোধগুলির বৈধতা বা মিউটেশন সম্পাদনের জন্য ওয়েবহুক অনুরোধগুলি গ্রহণ করতে নিবন্ধন করে।

ডায়নামিক অ্যাডমিশন কন্ট্রোলারগুলি এপিআই অনুরোধগুলিতে নীতি প্রয়োগ করতে এবং অন্যান্য নীতি-ভিত্তিক কর্মপ্রবাহকে ট্রিগার করতে ব্যবহার করা যেতে পারে। একটি ডায়নামিক ভর্তি কন্ট্রোলার অন্যান্য ক্লাস্টার সংস্থান এবং বহিরাগত ডেটা পুনরুদ্ধারের প্রয়োজন সহ জটিল চেকগুলি সম্পাদন করতে পারে। উদাহরণস্বরূপ, একটি ইমেজ যাচাইকরণ কন্টেইনার চিত্রের স্বাক্ষর এবং প্রত্যয়নগুলি যাচাই করতে ওসিআই (OCI) রেজিস্ট্রি থেকে ডেটা খুঁজতে পারে।

ডায়নামিক ভর্তি নিয়ন্ত্রণের বিশদ বিবরণ একটি নিয়োজিত (ডেডিকেটেড) অংশে নথিভুক্ত ( ডকুমেন্ট) করা হয়েছে:

বাস্তবায়ন

নমনীয় নীতি ইঞ্জিন হিসাবে কাজ করে এমন ডায়নামিক অ্যাডমিশন কন্ট্রোলারগুলি কুবারনেটিস ইকোসিস্টেমে উন্নত(ডেভলাপ) করা হচ্ছে, যেমন:

Kubelet কনফিগারেশন ব্যবহার করে নীতি প্রয়োগ করুন

কুবারনেটিস প্রতিটি ওর্য়াকার নোডে Kubelet কনফিগার করার অনুমতি দেয়। কিছু Kubelet কনফিগারেশন নীতি হিসাবে কাজ করে:

3.10 - শিডিউলিং, প্রিএম্পশন এবং ইভিকশন (Scheduling, Preemption and Eviction)

কুবারনেটিসে, শিডিউলিং মানে হল নিশ্চিত করা যে পডগুলি নোডগুলির সাথে মিলিত হয়েছে কিনা যাতে kubelet তাদের রান করতে পারে। প্রিএম্পশন হল স্বল্প অগ্রাধিকার পডগুলি বাতিল করার প্রক্রিয়া যাতে উচ্চ অগ্রাধিকার পডগুলি নোডগুলিতে শিডিউল করতে পারে। ইভিকশন হল রিসোর্স-ক্ষুধার্ত নোডগুলিতে এক বা একাধিক পডগুলি প্রত্যাহার করার প্রক্রিয়া।

শিডিউলিং

পডস এর ভাঙ্গন

পড-ব্যঘাত হলো সেই প্রক্রিয়া যার
মাধ্যমে নোডের পডগুলো স্বেচ্ছায় বা অনিচ্ছাকৃতভাবে বন্ধ করা হয়।

অ্যাপ্লিকেশন মালিক বা ক্লাস্টার অ্যাডমিনিস্ট্রেটররা ইচ্ছাকৃতভাবে স্বেচ্ছায় ব্যাঘাত শুরু করে। অনিচ্ছাকৃত ব্যাঘাতগুলি অনিচ্ছাকৃত এবং নোডের রিসোর্স ফুরিয়ে যাওয়ার মতো অনিবার্য সমস্যার কারণে বা দুর্ঘটনাবশত মুছে ফেলার কারণে ট্রিগার হতে পারে।

3.11 - ক্লাস্টার অ্যাডমিনিস্ট্রেশন

একটি কুবারনেটিস ক্লাস্টার তৈরি বা পরিচালনার জন্য প্রাসঙ্গিক নিম্ন-স্তরের ডিটেইল।

ক্লাস্টার অ্যাডমিনিস্ট্রেশন ওভারভিউ(overview) যে কেউ একটি কুবারনেটিস ক্লাস্টার তৈরি বা পরিচালনা করছেন তাঁর জন্য। এটি মূল কুবারনেটিসের ধারণাগুলোর সাথে কিছু পরিচিতি আশা করে ।।

একটি ক্লাস্টার পরিকল্পনা

সেট আপ এ নির্দেশিকাগুলি দেখুন কুবারনেটিস ক্লাস্টারগুলি কীভাবে পরিকল্পনা, সেট আপ এবং কনফিগার করতে হয় তার উদাহরণগুলির জন্য৷ এই নিবন্ধে তালিকাভুক্ত সমাধানগুলিকে বলা হয় distros

একটি গাইড নির্বাচন করার আগে, এখানে কিছু বিবেচনা আছে:

  • আপনি কি আপনার কম্পিউটারে কুবারনেটিস ব্যবহার করে দেখতে চান, বা আপনি একটি উচ্চ-উপলব্ধতা(availability) তৈরি করতে চান, মাল্টি-নোড ক্লাস্টার ? আপনার প্রয়োজনের জন্য সবচেয়ে উপযুক্ত ডিস্ট্রো বেছে নিন।
  • আপনি কি ব্যবহার করবেন হোস্ট করা কুবারনেটিস ক্লাস্টার , যেমন গুগল কুবারনেটিস ইঞ্জিন, অথবা আপনার নিজস্ব ক্লাস্টার হোস্ট করছেন?
  • আপনার ক্লাস্টার কি অন-প্রিমিসেস, বা ক্লাউডে (IaaS) হবে ? কুবারনেটিস হাইব্রিড ক্লাস্টারগুলিকে সরাসরি সমর্থন করে না। এর পরিবর্তে, আপনি একাধিক ক্লাস্টার সেট আপ করতে পারেন।
  • যদি আপনি কুবারনেটিস অন-প্রিমিসেস কনফিগার করছেন, তাহলে বিবেচনা করুন নেটওয়ার্কিং মডেল সবচেয়ে উপযুক্ত।
  • আপনি কি "বেয়ার মেটাল(bare metal)" হার্ডওয়্যার অথবা ভার্চুয়াল মেশিনে (VMs) চালাবেন?
  • আপনি কি একটি ক্লাস্টার চালাতে চান, অথবা আপনি কি কুবারনেটিস প্রজেক্ট কোডের সক্রিয় বিকাশ করার আশা করছেন? যদি পরেরটি হয়, একটি সক্রিয়ভাবে-বিকশিত ডিস্ট্রো নির্বাচন করুন। কিছু ডিস্ট্রো শুধুমাত্র বাইনারি রিলিজ ব্যবহার করে,কিন্তু, পছন্দের একটি বৃহত্তর বৈচিত্র অফার করে।
  • একটি ক্লাস্টার চালানোর জন্য প্রয়োজনীয় উপাদান এর সাথে নিজেকে পরিচিত করুন৷

একটি ক্লাস্টার পরিচালনা করা

একটি ক্লাস্টার সুরক্ষিত করা

Kubelet সুরক্ষিত করা

অপশনাল ক্লাস্টার সার্ভিস

3.12 - কুবারনেটিসে উইন্ডোজ

কুবারনেটিস নোড সমর্থন করে যা মাইক্রোসফ্ট উইন্ডোজ চালায়।

কুবারনেটিস ওয়ার্কার নোড লিনাক্স বা মাইক্রোসফ্ট উইন্ডোজ চালাতে সহায়তা করে।

CNCF এবং এর মূল লিনাক্স ফাউন্ডেশন সামঞ্জস্যের প্রতি বিক্রেতা-নিরপেক্ষ পদ্ধতি গ্রহণ করে। আপনার উইন্ডোজ সার্ভার এ একটি কুবারনেটিস ক্লাস্টারে একটি ওয়ার্কার নোড হিসাবে যোগদান করা সম্ভব।

আপনি উইন্ডোজে kubectl ইনস্টল এবং সেট আপ করতে পারেন আপনার ক্লাস্টারের মধ্যে যে কোন অপারেটিং সিস্টেম ব্যবহার করেন না কেন।

আপনি যদি উইন্ডোজে নোড ব্যবহার করেন তবে আপনি পড়তে পারেন:

অথবা, একটি ওভারভিউ জন্য, পড়ুন:

3.13 - কুবারনেটিস প্রসারিত করা

আপনার কুবারনেটিস ক্লাস্টারের আচরণ পরিবর্তন করার বিভিন্ন উপায়।

কুবারনেটিস খুবই কনফিগারযোগ্য এবং সম্প্রসারণযোগ্য। ফলস্বরূপ, কুবারনেটিস প্রজেক্ট কোডে ফর্ক(fork) বা প্যাচ জমা দেওয়ার খুব কমই প্রয়োজন হয়।

এই নির্দেশিকাটি একটি কুবারনেটিস ক্লাস্টার কাস্টমাইজ করার উপায়গুলো বর্ণনা করে ৷ এই নির্দেশিকাটি ক্লাস্টার অপারেটরদের লক্ষ্য করে বানানো যারা তাদের কুবারনেটিস ক্লাস্টারকে তাদের কাজের পরিবেশের প্রয়োজনের সাথে কীভাবে মানিয়ে নিতে হয় তা বুঝতে চায়। ডেভেলপাররা যারা সম্ভাব্য প্ল্যাটফর্ম ডেভেলপকারী বা কুবারনেটিস প্রজেক্ট কন্ট্রিবিউটরা , এক্সটেনশন পয়েন্ট (extension points) কি এবং প্যাটার্ন বিদ্যমান এর পরিচিতি হিসাবে এবং তাদের ট্রেড-অফ আর সীমাবদ্ধতা জানার জন্য এই নির্দেশিকাটিকে দরকারী হিসেবে পাবে।

কাস্টমাইজেশন পন্থাগুলিকে বিস্তৃতভাবে কনফিগারেশনে বিভক্ত করা যেতে পারে, যার মধ্যে শুধুমাত্র কমান্ড লাইন আর্গুমেন্ট, লোকাল কনফিগারেশন ফাইল বা API রিসোর্স পরিবর্তন করা জড়িত; এবং এক্সটেনশন, যার মধ্যে অতিরিক্ত প্রোগ্রাম চালানো, অতিরিক্ত নেটওয়ার্ক সার্ভিস বা উভয়ই জড়িত। এই ডকুমেন্টটি মূলত এক্সটেনশন সম্পর্কে।

কনফিগারেশন

কনফিগারেশন ফাইল এবং কমান্ড আর্গুমেন্ট অনলাইন ডকুমেন্টেশনের রেফারেন্স বিভাগে ডকুমেন্টেড করা হয়েছে, প্রতিটি বাইনারির জন্য একটি পৃষ্ঠা রয়েছে :

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

বিল্ট-ইন পলিসি API গুলো, যেমন ResourceQuota, NetworkPolicy এবং Role-based Access Control (RBAC), হলো বিল্ট-ইন কুবারনেটিস API যা ঘোষণামূলকভাবে কনফিগার করা পলিসি সেটিংস প্রদান করে। API গুলো সাধারণত হোস্ট করা কুবারনেটিস সার্ভিস এবং পরিচালিত কুবারনেটিস ইনস্টলেশনগুলোর সাথে ব্যবহারযোগ্য। বিল্ট-ইন পলিসি API গুলো অন্যান্য কুবারনেটিস রিসোর্স যেমন পডের মতো একই নিয়ম অনুসরণ করে। আপনি যখন স্থিতিশীল একটি পলিসি API ব্যবহার করেন, তখন আপনি অন্যান্য কুবারনেটিস API-এর মতো একটি সংজ্ঞায়িত সাপোর্ট পলিসি থেকে উপকৃত হন। এই কারণে, পলিসি API গুলো কনফিগারেশন ফাইল এবং কমান্ড আর্গুমেন্ট এর বদলে যেখানে উপযুক্ত সেখানে সুপারিশ করা হয় ।

এক্সটেনশন

এক্সটেনশন হলো সফ্টওয়্যার উপাদান যা কুবারনেটিসের সাথে প্রসারিত এবং গভীরভাবে একত্রিত হয়। তারা এটিকে নতুন টাইপের এবং নতুন ধরণের হার্ডওয়্যার সাপোর্ট করার জন্য মানিয়ে নেয়।

অনেক ক্লাস্টার অ্যাডমিনিস্ট্রেটর কুবারনেটিসের হোস্টেড বা ডিস্ট্রিবিউশন উদাহরণ ব্যবহার করে। এই ক্লাস্টারগুলো পূর্বে ইনস্টল করা এক্সটেনশনগুলোর সাথে আসে। ফলস্বরূপ, বেশিরভাগ কুবারনেটিস ব্যবহারকারীদের এক্সটেনশন ইনস্টল করার প্রয়োজন হবে না এবং এমনকি কম ব্যবহারকারীদের নতুন বানাতে হবে।

এক্সটেনশন প্যাটার্ন

কুবারনেটিস ডিজাইন করা হয়েছে ক্লায়েন্ট প্রোগ্রাম লিখার মাধ্যমে স্বয়ংক্রিয় হতে । কুবারনেটিস API-তে পড়া এবং/অথবা লেখা যে কোনো প্রোগ্রাম দরকারী অটোমেশন প্রদান করতে পারে। অটোমেশন ক্লাস্টারে চলতে পারে বা এটি বন্ধ করতে পারে। এই ডকুমেন্টের নির্দেশিকা অনুসরণ করে আপনি অত্যন্ত উপলব্ধ এবং শক্তিশালী অটোমেশন লিখতে পারেন। অটোমেশন সাধারণত হোস্ট করা ক্লাস্টার এবং পরিচালিত ইনস্টলেশন সহ যেকোন কুবারনেটিস ক্লাস্টারের সাথে কাজ করে।

ক্লায়েন্ট প্রোগ্রাম লেখার জন্য একটি নির্দিষ্ট প্যাটার্ন রয়েছে যা কুবারনেটিসের সাথে ভালভাবে কাজ করে যাকে কন্ট্রোলার প্যাটার্ন বলা হয়। কন্ট্রোলাররা সাধারণত একটি অবজেক্টের .spec পড়ে, সম্ভবত জিনিসগুলি করে এবং তারপর অবজেক্টের .status আপডেট করে ৷

একটি কন্ট্রোলার হল কুবারনেটিস API-এর ক্লায়েন্ট। যখন কুবারনেটিস ক্লায়েন্ট হয় এবং একটি রিমোট সার্ভিসে কল করে, কুবারনেটিস এটিকে একটি webhook বলে। রিমোট সার্ভিসকে webhook backend বলা হয়। কাস্টম কন্ট্রোলারের মতো, webhook গুলো ব্যর্থতার একটি পয়েন্ট যোগ করে।

webhook মডেলে, কুবারনেটিস একটি রিমোট সার্ভিসে একটি নেটওয়ার্ক অনুরোধ করে। বিকল্প binary Plugin মডেলের সাথে, কুবারনেটস একটি বাইনারি (প্রোগ্রাম) চালায়। বাইনারি প্লাগইনগুলো kubelet দ্বারা ব্যবহৃত হয় (উদাহরণস্বরূপ, CSI storage plugins এবং CNI network plugins), এবং kubectl দ্বারা (প্লাগইনগুলোর সাথে প্রসারিত kubectl দেখুন)।

এক্সটেনশন পয়েন্ট

এই ডায়াগ্রামটি একটি কুবারনেটিস ক্লাস্টারের এক্সটেনশন পয়েন্ট এবং এটি অ্যাক্সেসকারী ক্লায়েন্টদের দেখায়।

কুবারনেটিসের জন্য সাতটি সংখ্যাযুক্ত এক্সটেনশন পয়েন্টের প্রতীকী উপস্থাপনা

কুবারনেটিস এক্সটেনশন পয়েন্ট

চিত্রের চাবিকাঠি

  1. ব্যবহারকারীরা প্রায়ই kubectl ব্যবহার করে কুবারনেটিস API এর সাথে যোগাযোগ করে। প্লাগইন ক্লায়েন্টদের আচরণ কাস্টমাইজ করে। জেনেরিক এক্সটেনশন রয়েছে যা বিভিন্ন ক্লায়েন্টের জন্য প্রযোজ্য হতে পারে, সেইসাথেkubectl প্রসারিত করার নির্দিষ্ট উপায়ও ।

  2. API সার্ভার সমস্ত অনুরোধ পরিচালনা করে। API সার্ভারে বিভিন্ন ধরণের এক্সটেনশন পয়েন্টগুলো তাদের কনটেন্টের উপর ভিত্তি করে অনুরোধগুলো অথেন্টিকেটিং(authenticating), বা তাদের ব্লক করার অনুমতি দেয়, বিষয়বস্তু পরিবর্তন করে এবং মুছে ফেলার ব্যবস্থা করে। এগুলো API অ্যাক্সেস এক্সটেনশন বিভাগে বর্ণিত হয়েছে।

  3. এপিআই সার্ভার বিভিন্ন ধরণের রিসোর্স সরবরাহ করে। বিল্ট-ইন রিসোর্স ধরনের, যেমন pods, কুবারনেটিস প্রজেক্ট দ্বারা সংজ্ঞায়িত করা হয় এবং পরিবর্তন করা যায় না। কুবারনেটিস API প্রসারিত করার বিষয়ে জানতে API এক্সটেনশন পড়ুন।

  4. কুবারনেটিস শিডিউলার কোন নোডগুলোতে পড স্থাপন করবে তা নির্ধারণ করে। শিডিউলিং প্রসারিত করার বিভিন্ন উপায় রয়েছে, যা শিডিউলিং এক্সটেনশন বিভাগে বর্ণিত করা হয়েছে।

  5. কুবারনেটিসের বেশিরভাগ আচরণ কন্ট্রোলার নামক প্রোগ্রাম দ্বারা বাস্তবায়িত হয়, যেগুলো API সার্ভারের ক্লায়েন্ট। কন্ট্রোলারগুলো প্রায়ই কাস্টম রিসোর্সগুলোর সাথে একত্রে ব্যবহৃত হয়। আরও জানতে অটোমেশনের সাথে নতুন API-এর সমন্বয় এবং বিল্ট-ইন রিসোর্স পরিবর্তন পড়ুন।

  6. kubelet সার্ভারে (নোড) চলে এবং ক্লাস্টার নেটওয়ার্কে তাদের নিজস্ব আইপি সহ ভার্চুয়াল সার্ভারের মতো পডগুলোকে দেখাতে সহায়তা করে। নেটওয়ার্ক প্লাগইনগুলো পড নেটওয়ার্কিং এর বিভিন্ন বাস্তবায়নের অনুমতি দেয়।

  7. আপনি কাস্টম হার্ডওয়্যার বা অন্যান্য বিশেষ নোড-লোকাল সুবিধাগুলো একীভূত করতে ডিভাইস প্লাগইনগুলো ব্যবহার করতে পারেন এবং আপনার ক্লাস্টারে চলমান পডগুলোতে এগুলো উপলব্ধ করতে পারেন৷ kubelet ডিভাইস প্লাগইনগুলোর সাথে কাজ করার জন্য সাপোর্ট অন্তর্ভুক্ত করে।

    kubelet পড এবং তাদের কন্টেইনারের জন্য ভলিউম মাউন্ট এবং আনমাউন্ট করে। আপনি নতুন ধরনের স্টোরেজ এবং অন্যান্য ভলিউম টাইপের জন্য সাপোর্ট যোগ করতে স্টোরেজ প্লাগইন ব্যবহার করতে পারেন।

এক্সটেনশন পয়েন্ট চয়েস ফ্লোচার্ট

আপনি কোথা থেকে শুরু করবেন তা নিশ্চিত না হলে, এই ফ্লোচার্টটি সাহায্য করতে পারবে৷ মনে রাখবেন কিছু সমাধানে বিভিন্ন ধরনের এক্সটেনশন জড়িত থাকতে পারে।

প্রয়োগকারীদের জন্য ব্যবহারের ক্ষেত্র এবং নির্দেশিকা সম্পর্কে প্রশ্ন সহ ফ্লোচার্ট। সবুজ বৃত্ত হ্যাঁ নির্দেশ করে; লাল বৃত্ত না নির্দেশ করে।

একটি এক্সটেনশন পদ্ধতি নির্বাচন করতে ফ্লোচার্ট গাইড


ক্লায়েন্ট এক্সটেনশন

kubectl-এর জন্য প্লাগইন হলো পৃথক বাইনারি যা নির্দিষ্ট সাবকমান্ডের আচরণ যোগ বা প্রতিস্থাপন করে। kubectl টুলটি ক্রেডেনশিয়াল(credential) প্লাগইনগুলোর সাথেও একীভূত করতে পারে। এই এক্সটেনশনগুলো শুধুমাত্র একটি একক ব্যবহারকারীর লোকাল পরিবেশকে প্রভাবিত করে, এবং তাই সাইট-ব্যাপী পলিসিগুলো প্রয়োগ করতে পারে না।

আপনি যদি kubectl টুল প্রসারিত করতে চান, তাহলে প্লাগইন সহ kubectl প্রসারিত করা পড়ুন।

API এক্সটেনশন

কাস্টম রিসোর্স সংজ্ঞা

আপনি যদি নতুন কন্ট্রোলার, অ্যাপ্লিকেশন কনফিগারেশন অবজেক্ট বা অন্যান্য ডিক্লারেটিভ API সংজ্ঞায়িত করতে চান এবং কুবারনেটিস টুলস যেমন kubectl ব্যবহার করে সেগুলো পরিচালনা করতে চান তাহলে কুবারনেটিসে একটি কাস্টম রিসোর্স যোগ করার কথা বিবেচনা করুন।

কাস্টম রিসোর্স সম্পর্কে আরও জানতে, কাস্টম রিসোর্স কনসেপ্ট গাইড দেখুন।

API এগ্রিগেশন লেয়ার(aggregation layer)

আপনি কুবারনেটিস API এগ্রিগেশন লেয়ার ব্যবহার করতে পারেন কুবারনেটিস API-কে মেট্রিক্সের মতো অতিরিক্ত সার্ভিসের সাথে একীভূত করতে।

অটোমেশনের সাথে নতুন API-এর সমন্বয়

একটি কাস্টম রিসোর্স API এবং একটি কন্ট্রোল লুপের সংমিশ্রণকে কন্ট্রোলার প্যাটার্ন বলা হয়। যদি আপনার কন্ট্রোলার একটি কাঙ্ক্ষিত অবস্থার উপর ভিত্তি করে অবকাঠামো স্থাপনকারী মানব অপারেটরের স্থান নেয়, তাহলে কন্ট্রোলারও অপারেটর প্যাটার্ন অনুসরণ করতে পারে। অপারেটর প্যাটার্ন নির্দিষ্ট অ্যাপ্লিকেশন পরিচালনা করতে ব্যবহৃত হয়; সাধারণত, এগুলো হলো এমন অ্যাপ্লিকেশন যা অবস্থা বজায় রাখে এবং সেগুলোকে কীভাবে পরিচালনা করা হয় তার যত্নের প্রয়োজন হয়৷

আপনি আপনার নিজস্ব কাস্টম API এবং কন্ট্রোল লুপগুলোও তৈরি করতে পারেন যা অন্যান্য রিসোর্সগুলো পরিচালনা করতে পারে, যেমন স্টোরেজ, বা পলিসিগুলো সংজ্ঞায়িত করতে (যেমন একটি অ্যাক্সেস কন্ট্রোল রেস্ট্রিকশন)।

বিল্ট-ইন রিসোর্স পরিবর্তন

আপনি যখন কাস্টম রিসোর্স যোগ করে কুবারনেটিস API প্রসারিত করেন, তখন যোগ করা রিসোর্স সবসময় একটি নতুন API গ্রুপে পড়ে। আপনি বিদ্যমান API গ্রুপগুলোকে প্রতিস্থাপন বা পরিবর্তন করতে পারবেন না ৷ একটি API যোগ করলে আপনাকে বিদ্যমান API-এর আচরণকে সরাসরি প্রভাবিত করতে দেওয়া না (যেমন পড), যেখানে API অ্যাক্সেস এক্সটেনশানগুলো করে।

API অ্যাক্সেস এক্সটেনশন

যখন একটি অনুরোধ কুবারনেটিস API সার্ভারে পৌঁছায়, এটি প্রথমে অথেন্টিকেটেড(authenticated) করা হয়, তারপর অনুমোদিত(authorized) হয় এবং তারপরে আসে বিভিন্ন ধরণের অ্যাডমিশন কন্ট্রোলের(admission control) বিষয় (কিছু অনুরোধ প্রকৃতপক্ষে অথেন্টিকেটেড(authenticated) নয়, এবং স্পেশাল ট্রিটমেন্ট পান)। এই প্রবাহ সম্পর্কে আরও জানতে কুবারনেটিস API-এ অ্যাক্সেস কন্ট্রোল করা দেখুন।

কুবারনেটিস অথেন্টিকেশন/অথোরাইজেশন প্রবাহের প্রতিটি ধাপ এক্সটেনশন পয়েন্ট অফার করে।

অথেন্টিকেশন(Authentication)

ক্লায়েন্ট অনুরোধ করার জন্য একটি ব্যবহারকারীর নামের সমস্ত অনুরোধে অথেন্টিকেশন শিরোনাম বা সার্টিফিকেট যুক্ত করে।

কুবারনেটিস এর বেশ কয়েকটি বিল্ট-ইন অথেন্টিকেশন পদ্ধতি রয়েছে যা এটি সাপোর্ট করে। এটি একটি অথেন্টিকেটিং প্রক্সির পিছনেও বসতে পারে এবং এটি একটি অথোরাইজেশন(Authorization) টোকেন পাঠাতে পারে যাচাইয়ের জন্য: শিরোনাম থেকে একটি রিমোট সার্ভিসে (একটি অথেন্টিকেশন webhook) যদি সেগুলো আপনার প্রয়োজনগুলো পূরণ না করে৷

অথোরাইজেশন(Authorization)

অথোরাইজেশন নির্ধারণ করে যে নির্দিষ্ট ব্যবহারকারীরা API রিসোর্সগুলোতে পড়তে, লিখতে এবং অন্যান্য ক্রিয়াকলাপ করতে পারে কিনা। এটি সম্পূর্ণ রিসোর্সের লেভেলে কাজ করে -- এটি ইচ্ছামত অবজেক্টের ফিল্ডের উপর ভিত্তি করে বৈষম্য করে না।

যদি বিল্ট-ইন অথোরাইজেশনের উপায়গুলো আপনার চাহিদা পূরণ না করে, তাহলে একটি অথোরাইজেশন webhook কাস্টম কোডে কল করার অনুমতি দেয় যা একটি অথোরাইজেশনের সিদ্ধান্ত নেয়।

ডাইনামিক অ্যাডমিশন কন্ট্রোল

একটি অনুরোধ অনুমোদিত হওয়ার পরে, যদি এটি একটি লিখিত অপারেশন হয়, তবে এটি অ্যাডমিশন কন্ট্রোলের পদক্ষেপগুলোর মধ্য দিয়ে যায়। বিল্ট-ইন পদক্ষেপগুলো ছাড়াও, বেশ কয়েকটি এক্সটেনশন রয়েছে:

  • ইমেজ পলিসি webhook কন্টেইনারে কোন ইমেজ চালানো যাবে তা সীমাবদ্ধ করে।
  • ইচ্ছামত অ্যাডমিশন কন্ট্রোলের সিদ্ধান্ত নিতে, একটি সাধারণ অ্যাডমিশন webhook ব্যবহার করা যেতে পারে। অ্যাডমিশন webhook সৃষ্টি বা আপডেট প্রত্যাখ্যান করতে পারে। কিছু অ্যাডমিশন webhook ইনকামিং রিকোয়েস্ট ডেটা পরিবর্তন করে কুবারনেটিস দ্বারা আরও পরিচালনা করার আগে।

অবকাঠামো এক্সটেনশন

ডিভাইস প্লাগইন

ডিভাইস প্লাগইনগুলো একটি ডিভাইস প্লাগইনের মাধ্যমে একটি নোডকে নতুন নোড রিসোর্সগুলো (CPU এবং মেমরির মতো বিল্টইনগুলো ছাড়াও) আবিষ্কার করতে দেয় ।

স্টোরেজ প্লাগইন

কন্টেইনার স্টোরেজ ইন্টারফেস(Container Storage Interface) (CSI) প্লাগইনগুলো নতুন ধরনের ভলিউমের জন্য সাপোর্ট সহ কুবারনেটিস প্রসারিত করার একটি উপায় প্রদান করে। ভলিউমগুলো টেকসই এক্সটার্নাল স্টোরেজ দ্বারা সাহায্যপ্রাপ্ত করা যেতে পারে, বা ক্ষণস্থায়ী স্টোরেজ(ephemeral storage) প্রদান করতে পারে, অথবা তারা একটি ফাইল সিস্টেম প্যারাডাইম ব্যবহার করে তথ্যের জন্য একটি রিড-অনলি ইন্টারফেস দিতে পারে ।

কুবারনেটিস এছাড়াও FlexVolume প্লাগইনগুলোর জন্য সাপোর্ট অন্তর্ভুক্ত করে, যা কুবারনেটিস v1.23 (CSI-এর পক্ষে) থেকে অবমূল্যায়িত(deprecated) করা হয়েছে ।

FlexVolume প্লাগইনগুলো ব্যবহারকারীদের ভলিউম প্রকারগুলো মাউন্ট করার অনুমতি দেয় যা সাধারণত কুবারনেটিস দ্বারা সাপোর্টেড নয়। আপনি যখন FlexVolume স্টোরেজের উপর নির্ভর করে এমন একটি পড চালান, তখন kubelet ভলিউম মাউন্ট করার জন্য একটি বাইনারি প্লাগইন কল করে। আর্কাইভ করা FlexVolume ডিজাইন প্রস্তাবে এই পদ্ধতির আরও বিশদ বিবরণ রয়েছে।

The Kubernetes Volume Plugin FAQ for Storage Vendors তে স্টোরেজ প্লাগইনগুলোর সাধারণ তথ্য অন্তর্ভুক্ত রয়েছে ।

নেটওয়ার্ক প্লাগইন

আপনার কুবারনেটিস ক্লাস্টারের একটি নেটওয়ার্ক প্লাগইন প্রয়োজন যাতে একটি কার্যকরী পড নেটওয়ার্ক থাকে এবং কুবারনেটিস নেটওয়ার্ক মডেলের অন্যান্য দিকগুলোকে সাপোর্ট করতে পারে৷

নেটওয়ার্ক প্লাগইনগুলো কুবারনেটিসকে বিভিন্ন নেটওয়ার্কিং টপোলজি এবং প্রযুক্তির সাথে কাজ করার অনুমতি দেয়।

Kubelet ইমেজ ক্রেডেনশিয়াল প্রোভাইডার প্লাগইন (Kubelet image credential provider plugins)

ফিচার স্টেট: কুবারনেটিস v1.26 [stable]
Kubelet ইমেজ ক্রেডেনশিয়াল প্রোভাইডাররা হলো Kubelet এর জন্য প্লাগইন যা ডাইনামিকভাবে ইমেজ রেজিস্ট্রি ক্রেডেনশিয়ালগুলো পুনরুদ্ধার করতে পারে। কন্টেইনার ইমেজ রেজিস্ট্রি থেকে ইমেজ তোলার সময় ক্রেডেনশিয়ালগুলো ব্যবহার করা হয় যা কনফিগারেশনের সাথে মেলে।

প্লাগইনগুলো বহিরাগত সার্ভিসগুলোর সাথে যোগাযোগ করতে পারে বা ক্রেডেনশিয়ালগুলো পেতে লোকাল ফাইলগুলো ব্যবহার করতে পারে ৷ এইভাবে, kubelet এর প্রতিটি রেজিস্ট্রির জন্য স্ট্যাটিক ক্রেডেনশিয়ালের প্রয়োজন নেই এবং বিভিন্ন অথেন্টিকেশন পদ্ধতি এবং প্রোটোকল সাপোর্ট করতে পারে ।

প্লাগইন কনফিগারেশনের বিশদ বিবরণের জন্য, একটি Kubelet ইমেজ ক্রেডেনশিয়াল প্রোভাইডার কনফিগার দেখুন।

শিডিউলিং এক্সটেনশন

শিডিউলার হলো একটি বিশেষ ধরনের কন্ট্রোলার যা পডগুলো দেখে এবং নোডগুলোতে পড বরাদ্দ করে। অন্যান্য কুবারনেটিস উপাদানগুলো ব্যবহার করা চালিয়ে যাওয়ার সময় ডিফল্ট শিডিউলার সম্পূর্ণরূপে প্রতিস্থাপন করা যেতে পারে, অথবা একাধিক শিডিউলার একই সময়ে চলতে পারে।

এটি একটি উল্লেখযোগ্য উদ্যোগ, এবং প্রায় সমস্ত কুবারনেটিস ব্যবহারকারীরা দেখতে পান যে তাদের শিডিউলার পরিবর্তন করার প্রয়োজন নেই।

আপনি কোন শিডিউলার প্লাগইনগুলো সক্রিয় তা নিয়ন্ত্রণ করতে পারেন বা বিভিন্ন নামযুক্ত শিডিউলার প্রোফাইলের সাথে প্লাগইনগুলোর সেটগুলোকে সংযুক্ত করতে পারেন ৷ আপনি আপনার নিজস্ব প্লাগইনও লিখতে পারেন যা এক বা একাধিক kube-scheduler এর এক্সটেনশন পয়েন্টের সাথে একত্রিত হয় ।

অবশেষে, বিল্ট-ইন kube-scheduler উপাদানটি একটি webhookকে সাপোর্ট করে যা একটি রিমোট HTTP ব্যাকএন্ড (শিডিউলার এক্সটেনশন) ফিল্টার এবং/অথবা নোডগুলোকে অগ্রাধিকার দেওয়ার অনুমতি দেয় যা kube-scheduler একটি পডের জন্য বেছে নেয়।

এর পরের কি

3.13.1 - কম্পিউট, স্টোরেজ, এবং নেটওয়ার্কিং এক্সটেনশন

এই বিভাগটি আপনার ক্লাস্টারের এক্সটেনশনগুলোকে কভার করে যা কুবারনেটিসের অংশ হিসাবে আসে না। আপনি এই এক্সটেনশনগুলো আপনার ক্লাস্টারে নোডগুলোকে উন্নত করতে বা পডকে একসাথে লিঙ্ক করে এমন নেটওয়ার্ক ফ্যাব্রিক প্রদান করতে ব্যবহার করতে পারেন।

  • CSI এবং FlexVolume স্টোরেজ প্লাগইন

    কন্টেইনার স্টোরেজ ইন্টারফেস (CSI) প্লাগইনগুলো নতুন ধরনের ভলিউমের জন্য সাপোর্ট সহ কুবারনেটিসকে প্রসারিত করার একটি উপায় প্রদান করে।ভলিউমগুলি টেকসই এক্সটার্নাল স্টোরেজ দ্বারা ব্যাক করা যেতে পারে, বা ক্ষণস্থায়ী স্টোরেজ প্রদান করতে পারে, অথবা তারা একটি ফাইল সিস্টেম প্যারাডাইম ব্যবহার করে তথ্যের জন্য একটি পঠনযোগ্য ইন্টারফেস অফার করতে পারে।

    কুবারনেটিস এছাড়াও FlexVolume প্লাগইনগুলোর জন্য সাপোর্ট অন্তর্ভুক্ত করে, যা কুবারনেটিস v1.23 (CSI-এর পক্ষে) থেকে অবমূল্যায়িত(deprecated) করা হয়েছে ।

    FlexVolume প্লাগইনগুলো ব্যবহারকারীদের ভলিউম প্রকারগুলো মাউন্ট করার অনুমতি দেয় যা সাধারণত কুবারনেটিস দ্বারা সাপোর্টেড নয়। আপনি যখন FlexVolume স্টোরেজের উপর নির্ভর করে এমন একটি পড চালান, তখন kubelet ভলিউম মাউন্ট করার জন্য একটি বাইনারি প্লাগইন কল করে। আর্কাইভ করা FlexVolume ডিজাইন প্রস্তাবে এই পদ্ধতির আরও বিশদ বিবরণ রয়েছে।

    The Kubernetes Volume Plugin FAQ for Storage Vendors তে স্টোরেজ প্লাগইনগুলোর সাধারণ তথ্য অন্তর্ভুক্ত রয়েছে ।

  • ডিভাইস প্লাগইন

    ডিভাইস প্লাগইনগুলো একটি নোডকে নতুন নোড সুবিধাগুলি আবিষ্কার করার অনুমতি দেয় (বিল্ট-ইন নোড রিসোর্স যেমন cpu এবং মেমরি ছাড়াও), এবং তাদের অনুরোধকারী পডগুলোতে এই কাস্টম নোড-লোকাল সুবিধাগুলো সরবরাহ করে।

  • নেটওয়ার্ক প্লাগইন

    নেটওয়ার্ক প্লাগইন কুবারনেটিসকে বিভিন্ন নেটওয়ার্কিং টপোলজি এবং প্রযুক্তির সাথে কাজ করার অনুমতি দেয়। আপনার কুবারনেটিস ক্লাস্টারের একটি নেটওয়ার্ক প্লাগইন প্রয়োজন যাতে একটি কার্যকরী পড নেটওয়ার্ক থাকে এবং কুবারনেটিস নেটওয়ার্ক মডেলের অন্যান্য দিকগুলোকে সাপোর্ট করতে পারে ৷

    কুবারনেটিস 1.31 CNI নেটওয়ার্ক প্লাগইনগুলোর সাথে সামঞ্জস্যপূর্ণ ৷

3.13.2 - কুবারনেটিস API প্রসারিত করা

কাস্টম রিসোর্স হলো কুবারনেটিস API এর এক্সটেনশন। কুবারনেটিস আপনার ক্লাস্টারে কাস্টম রিসোর্স যোগ করার দুটি উপায় প্রদান করে:

  • CustomResourceDefinition (CRD) মেকানিজম আপনাকে একটি API গ্রুপ, ধরনের, এবং স্কিমা দিয়ে ঘোষণামূলকভাবে একটি নতুন কাস্টম API সংজ্ঞায়িত করতে দেয় যা আপনি নির্দিষ্ট করেছেন। কুবারনেটিস কন্ট্রোল প্লেন আপনার কাস্টম রিসোর্সের স্টোরেজ পরিবেশন এবং পরিচালনা করে। CRD গুলো আপনাকে আপনার ক্লাস্টারের জন্য একটি কাস্টম API সার্ভার না লিখে এবং চালানো ছাড়াই নতুন ধরণের রিসোর্স তৈরি করতে দেয় ।
  • এগ্রিগেশন লেয়ারটি প্রাইমারি API সার্ভারের পিছনে থাকে, যা একটি প্রক্সি হিসেবে কাজ করে। এই ব্যবস্থাটিকে API এগ্রিগেশন (API Aggregation)(AA) বলা হয়, যা আপনাকে আপনার নিজস্ব API সার্ভার লিখে এবং স্থাপন করার মাধ্যমে আপনার কাস্টম রিসোর্সগুলোর জন্য বিশেষায়িত বাস্তবায়ন প্রদান করতে দেয়। প্রধান API সার্ভার আপনার API সার্ভারে আপনার নির্দিষ্ট করা কাস্টম API গুলোর জন্য অনুরোধগুলো অর্পণ করে, সেগুলোকে এর সমস্ত ক্লায়েন্টদের জন্য উপলব্ধ করে৷

4 - টাস্ক

কুবারনেটিস ডকুমেন্টেশনের এই বিভাগে এমন পৃষ্ঠা রয়েছে যা দেখায় কিভাবে পৃথক টাস্ক করতে হয়। সাধারণত পদক্ষেপের একটি সংক্ষিপ্ত ক্রম দিয়ে একটি টাস্ক পেজ দেখায় কিভাবে একটি একক জিনিস করতে হয়।

আপনি যদি একটি টাস্ক পৃষ্ঠা লিখতে চান, দেখুন কীভাবে একটি ডকুমেন্টেশন পুল রিকোয়েস্ট তৈরি করা যায়।

4.1 - টুল ইনস্টল করুন

আপনার কম্পিউটারে কুবারনেটিস টুল সেট আপ করুন।

kubectl

কুবারনেটিস কমান্ড-লাইন টুল, kubectl আপনাকে কুবারনেটিস ক্লাস্টারগুলির বিরুদ্ধে কমান্ড চালাতে অনুমতি দেয় । আপনি অ্যাপ্লিকেশন স্থাপন করতে, ক্লাস্টার সংস্থান পরিদর্শন ও পরিচালনা করতে এবং লগ দেখতে kubectl ব্যবহার করতে পারেন। আরও তথ্যের জন্য kubectl অপারেশনগুলির একটি সম্পূর্ণ তালিকা সহ দেখুন kubectl রেফারেন্স ডকুমেন্টেশন

kubectl বিভিন্ন লিনাক্স প্ল্যাটফর্ম, macOS এবং Windows এ ইনস্টলযোগ্য। নীচে আপনার পছন্দের অপারেটিং সিস্টেম খুঁজুন।

kind

kind আপনাকে কুবারনেটিস চালাতে দেয় আপনার স্থানীয় কম্পিউটারে। আপনি ডকার অথবা পডম্যান ইনস্টল এবং কনফিগার করুন।

এই ধরনের কুইক শুরু পৃষ্ঠা আপনাকে কী করতে হবে তা দেখায়।

বিভিন্ন ধরনের কুইক স্টার্ট গাইড দেখুন

minikube

kind এর মতো, minikube একটি টুল যা আপনাকে স্থানীয়ভাবে কুবারনেটিস চালাতে দেয় । minikube আপনার ব্যক্তিগত কম্পিউটারের (উইন্ডোজ, ম্যাকোস এবং লিনাক্স পিসি সহ) উপর একটি একক-নোড কুবারনেটিস ক্লাস্টার চালায় যাতে আপনি চেষ্টা করে দেখতে পারেন কুবারনেটিস, বা দৈনন্দিন উন্নয়ন কাজের জন্য।

আপনি অফিসিয়াল নির্দেশিকা শুরু করুন! অনুসরণ করতে পারেন যদি আপনার ফোকাস হয় টুল ইনস্টল করার উপর।

minikube শুরু করুন! গাইডটি দেখুন

একবার আপনার minikube কাজ করলে, আপনি এটি একটি নমুনা অ্যাপ্লিকেশন চালাতে ব্যবহার করতে পারেন ।

kubeadm

আপনি কুবারনেটিস ক্লাস্টার তৈরি এবং পরিচালনা করতে kubeadm টুল ব্যবহার করতে পারেন। এটি একটি ন্যূনতম কার্যকর, নিরাপদ ক্লাস্টার আপ এবং ব্যবহারকারী বান্ধব উপায়ে চালানোর জন্য প্রয়োজনীয় ক্রিয়া সম্পাদন করে।

kubeadm ইনস্টল করা আপনাকে দেখায় কিভাবে kubeadm ইনস্টল করতে হয়। একবার ইনস্টল হয়ে গেলে আপনি এটিকে একটি ক্লাস্টার তৈরি করতে ব্যবহার করতে পারেন।

kubeadm ইনস্টল গাইড দেখুন

4.1.1 - macOS এ kubectl ইনস্টল এবং সেট আপ করুন

শুরু করার আগে

আপনাকে অবশ্যই একটি kubectl সংস্করণ ব্যবহার করতে হবে যা আপনার ক্লাস্টারের একটি ছোট সংস্করণের পার্থক্যের মধ্যে রয়েছে। উদাহরণস্বরূপ, একটি v1.31 ক্লায়েন্ট v1.30, v1.31, এবং v1.32 নিয়ন্ত্রণ প্লেন এর সাথে যোগাযোগ করতে পারে। kubectl এর সর্বশেষ সামঞ্জস্যপূর্ণ সংস্করণ ব্যবহার করা অপ্রত্যাশিত সমস্যাগুলি এড়াতে সাহায্য করে৷

macOS এ kubectl ইনস্টল করুন

macOS এ kubectl ইনস্টল করার জন্য নিম্নলিখিত পদ্ধতি রয়েছেঃ

macOS-এ কার্ল সহ kubectl বাইনারি ইনস্টল করুন

১. সর্বশেষ রিলিজ ডাউনলোড করুন:


   curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
   


   curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"
   

২. বাইনারি যাচাই করুন (ঐচ্ছিক)

kubectl checksum ফাইল ডাউনলোড করুন:


   curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl.sha256"
   


   curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl.sha256"
   

চেকসাম ফাইলের বিপরীতে kubectl বাইনারি যাচাই করুন:

echo "$(cat kubectl.sha256)  kubectl" | shasum -a 256 --check

বৈধ হলে, আউটপুট হল:

kubectl: OK

চেক ব্যর্থ হলে, shasum অশূন্য স্থিতি সহ প্রস্থান করে এবং অনুরূপ আউটপুট প্রিন্ট করে:

kubectl: FAILED
shasum: WARNING: 1 computed checksum did NOT match

৩. kubectl বাইনারি এক্সিকিউটেবল করুন।

chmod +x ./kubectl

৪. আপনার সিস্টেম PATH-এ একটি ফাইল অবস্থানে kubectl বাইনারি সরান।

sudo mv ./kubectl /usr/local/bin/kubectl
sudo chown root: /usr/local/bin/kubectl

৫. আপনার ইনস্টল করা সংস্করণ আপ-টু-ডেট কিনা তা নিশ্চিত করতে পরীক্ষা করুন:

kubectl version --client

অথবা সংস্করণের বিস্তারিত দেখার জন্য এটি ব্যবহার করুন:

kubectl version --client --output=yaml

৬. প্লাগইন ইনস্টল করার পরে, ইনস্টলেশন ফাইলগুলি পরিষ্কার করুন:

rm kubectl kubectl.sha256

MacOS এ Homebrew দিয়ে ইনস্টল করুন

আপনি যদি macOS-এ থাকেন এবং Homebrew প্যাকেজ ম্যানেজার ব্যবহার করেন, তাহলে আপনি Homebrew-এর সাথে kubectl ইনস্টল করতে পারেন।

১. ইনস্টলেশন কমান্ড চালান:

brew install kubectl

অথবা,

brew install kubernetes-cli

২. আপনার ইনস্টল করা সংস্করণ আপ-টু-ডেট কিনা তা নিশ্চিত করতে পরীক্ষা করুন:

kubectl version --client

MacOS এ Macports দিয়ে ইনস্টল করুন

আপনি যদি macOS এ থাকেন এবং Macports প্যাকেজ ম্যানেজার ব্যবহার করেন, তাহলে আপনি ম্যাকপোর্টের সাথে kubectl ইনস্টল করতে পারেন।

১. ইনস্টলেশন কমান্ড চালান:

sudo port selfupdate
sudo port install kubectl

২. আপনার ইনস্টল করা সংস্করণ আপ-টু-ডেট কিনা তা নিশ্চিত করতে পরীক্ষা করুন:

kubectl version --client

kubectl কনফিগারেশন যাচাই করুন

kubectl-এর জন্য একটি কুবারনেটিস ক্লাস্টার খুঁজে পেতে এবং অ্যাক্সেস পেতে, যার জন্য প্রয়োজন kubeconfig ফাইল, যা স্বয়ংক্রিয়ভাবে তৈরি হয় যখন আপনি একটি ক্লাস্টার তৈরি করেন kube-up.sh ব্যবহার করে অথবা সফলভাবে একটি Minikube ক্লাস্টার স্থাপন করুন। ডিফল্টরূপে, kubectl কনফিগারেশন ~/.kube/config এ অবস্থিত।

ক্লাস্টার অবস্থা পেয়ে kubectl সঠিকভাবে কনফিগার করা হয়েছে তা পরীক্ষা করুন:

kubectl cluster-info

আপনি যদি একটি URL দেখতে পান, তাহলে আপনার ক্লাস্টার অ্যাক্সেস করার জন্য kubectl সঠিকভাবে কনফিগার করা হয়েছে।

আপনি যদি নিম্নলিখিতগুলোর মতো একটি বার্তা দেখতে পান, তাহলে বুঝবেন যে kubectl সঠিকভাবে কনফিগার করা হয়নি অথবা একটি Kubernetes ক্লাস্টারের সাথে সংযোগ করতে সক্ষম নয়।

সার্ভারের সাথে সংযোগ <server-name:port> প্রত্যাখ্যান করা হয়েছিল - আপনি কি সঠিক হোস্ট বা পোর্ট উল্লেখ করেছেন?

উদাহরণস্বরূপ, আপনি যদি আপনার ল্যাপটপে (স্থানীয়ভাবে) একটি কুবারনেটিস ক্লাস্টার চালাতে চান, তাহলে আপনাকে প্রথমে মিনিকুবের মতো একটি টুল ইনস্টল করতে হবে এবং তারপরে উপরে বর্ণিত কমান্ডগুলি পুনরায় চালাতে হবে।

যদি kubectl ক্লাস্টার-তথ্য url প্রতিক্রিয়া প্রদান করে কিন্তু আপনি আপনার ক্লাস্টার অ্যাক্সেস করতে না পারেন, এটি সঠিকভাবে কনফিগার করা হয়েছে কিনা তা পরীক্ষা করতে, ব্যবহার করুন:

kubectl cluster-info dump

'No Auth Provider Found' ত্রুটি বার্তার সমস্যা সমাধান

কুবারনেটিস 1.26-এ, kubectl নিম্নলিখিত ক্লাউড প্রদানকারীদের পরিচালিত কুবারনেটিস অফারগুলোর জন্য অন্তর্নির্মিত অথেনটিকেশন সরিয়ে দিয়েছে। এই প্রদানকারীরা ক্লাউডের-নির্দিষ্ট অথেনটিকেশন প্রদানের জন্য kubectl প্লাগইন প্রকাশ করেছে। নির্দেশাবলীর জন্য, নিম্নলিখিত প্রদানকারী ডকুমেন্টেশন পড়ুন:

(একই ত্রুটির বার্তা দেখার অন্যান্য কারণও থাকতে পারে, এই পরিবর্তনের সাথে সম্পর্কিত নয়।)

ঐচ্ছিক kubectl কনফিগারেশন এবং প্লাগইন

শেল অটোকমপ্লিট সক্ষম করুন

kubectl Bash, Zsh, Fish এবং PowerShell-এর জন্য অটোকমপ্লিট সমর্থন প্রদান করে যা আপনাকে অনেক টাইপিং বাঁচাতে পারে।

নীচে Bash, Fish, এবং Zsh-এর জন্য স্বয়ংসম্পূর্ণতা সেট আপ করার পদ্ধতিগুলি রয়েছে৷

ভূমিকা

Bash-এর জন্য kubectl কমপ্লিশন স্ক্রিপ্ট kubectl completion bash দিয়ে তৈরি করা যেতে পারে। আপনার শেলে এই স্ক্রিপ্টটি সোর্স করা kubectl সম্পূর্ণতা সক্ষম করে।

কিন্তু, kubectl কমপ্লিসন স্ক্রিপ্ট নির্ভর করে bash-completion যা আপনাকে আগে ইনস্টল করতে হবে।

Bash আপগ্রেড করুন

এখানে নির্দেশাবলী অনুমান করে আপনি ব্যাশ 4.1+ ব্যবহার করছেন। আপনি রান করে আপনার ব্যাশের সংস্করণটি পরীক্ষা করতে পারেন:

echo $BASH_VERSION

যদি এটি খুব পুরানো হয়, আপনি Homebrew ব্যবহার করে এটি ইনস্টল/আপগ্রেড করতে পারেন:

brew install bash

আপনার শেল পুনরায় লোড করুন এবং যাচাই করুন যে পছন্দসই সংস্করণটি ব্যবহার করা হচ্ছে:

echo $BASH_VERSION $SHELL

Homebrew সাধারণত /usr/local/bin/bash এ ইনস্টল হয়।

ব্যাশ-কমপ্লিসন ইনস্টল করুন

আপনি পরীক্ষা করতে পারেন যদি আপনার bash-completion v2 ইতিমধ্যেই type _init_completion দিয়ে ইনস্টল করা আছে। যদি না হয়, আপনি homebrew দিয়ে এটি ইনস্টল করতে পারেন:

brew install bash-completion@2

এই কমান্ডের আউটপুটে যেমন বলা হয়েছে, আপনার ~/.bash_profile ফাইলে নিম্নলিখিত যোগ করুন:

brew_etc="$(brew --prefix)/etc" && [[ -r "${brew_etc}/profile.d/bash_completion.sh" ]] && . "${brew_etc}/profile.d/bash_completion.sh"

আপনার শেল পুনরায় লোড করুন এবং যাচাই করুন যে bash-completion v2 সঠিকভাবে type _init_completion দিয়ে ইনস্টল করা আছে।

kubectl অটোকমপ্লিসন চালু করুন

আপনাকে এখন নিশ্চিত করতে হবে যে আপনার সমস্ত শেল সেশনে kubectl কমপ্লিসনের স্ক্রিপ্টটি পাওয়া যায়। এটি অর্জন করার একাধিক উপায় রয়েছে:

  • আপনার ~/.bash_profile ফাইলে কমপ্লিসনের স্ক্রিপ্ট উৎস করুন:

    echo 'source <(kubectl completion bash)' >>~/.bash_profile
    
  • /usr/local/etc/bash_completion.d ডিরেক্টরিতে কমপ্লিসনের স্ক্রিপ্ট যোগ করুন:

    kubectl completion bash >/usr/local/etc/bash_completion.d/kubectl
    
  • আপনার যদি kubectl এর জন্য একটি উপনাম থাকে তবে আপনি সেই উপনামের সাথে কাজ করার জন্য শেল কমপ্লিসন বাড়াতে পারেন:

    echo 'alias k=kubectl' >>~/.bash_profile
    echo 'complete -o default -F __start_kubectl k' >>~/.bash_profile
    
  • আপনি যদি হোমব্রু দিয়ে kubectl ইনস্টল করেন (যেমন এখানে ব্যাখ্যা করা হয়েছে), তাহলে kubectl কমপ্লিসনের স্ক্রিপ্ট ইতিমধ্যেই /-এ থাকা উচিত usr/local/etc/bash_completion.d/kubectl। সেক্ষেত্রে আপনার কিছু করার দরকার নেই।

যে কোনো ক্ষেত্রে, আপনার শেল পুনরায় লোড করার পরে, kubectl সমাপ্তি কাজ করা উচিত।

fish এর জন্য kubectl সমাপ্তি স্ক্রিপ্ট kubectl completion fish কমান্ড দিয়ে তৈরি করা যেতে পারে। আপনার শেলের মধ্যে সমাপ্তি স্ক্রিপ্ট সোর্স করা kubectl স্বয়ংক্রিয় সমাপ্তি চালু করে।

আপনার সমস্ত শেল সেশনে এটি করতে, আপনার ~/.config/fish/config.fish ফাইলে নিম্নলিখিত লাইন যুক্ত করুন:

kubectl completion fish | source

আপনার শেল পুনরায় লোড করার পরে, kubectl স্বয়ংক্রিয় সমাপ্তি কাজ করা উচিত।

Zsh-এর জন্য kubectl কমপ্লিশন স্ক্রিপ্ট kubectl completion zsh কমান্ড দিয়ে তৈরি করা যেতে পারে। আপনার শেলে সমাপ্তি স্ক্রিপ্ট সোর্স করা kubectl স্বয়ংসম্পূর্ণতা সক্ষম করে। 12

আপনার সমস্ত শেল সেশনে এটি করতে, আপনার ~/.zshrc ফাইলে নিম্নলিখিত যোগ করুন:

source <(kubectl completion zsh)

আপনার যদি kubectl-এর একটি উপনাম থাকে, kubectl স্বয়ংসম্পূর্ণতা স্বয়ংক্রিয়ভাবে এটির সাথে কাজ করবে।

আপনার শেল পুনরায় লোড করার পরে, kubectl স্বয়ংসম্পূর্ণতা কাজ করা উচিত।

যদি আপনি একটি ত্রুটি পান যেমন 2: command not found: compdef, তাহলে আপনার ~/.zshrc ফাইলের শুরুতে নিম্নলিখিত যোগ করুন:

autoload -Uz compinit
compinit

kubectl convert প্লাগইন ইনস্টল করুন

কুবারনেটিস কমান্ড-লাইন টুল kubectl এর জন্য একটি প্লাগইন, যা আপনাকে বিভিন্ন আপিআই সংস্করণ এর মধ্যে রূপান্তর করতে দেয়। এটি নতুন কুবারনেটিস রিলিজের সাথে একটি অ-বঞ্চিত আপিআই সংস্করণে স্থানান্তর করতে বিশেষভাবে সহায়ক হতে পারে। আরও তথ্যের জন্য, অপ্রচলিত apis-এ মাইগ্রেট করুন

১. কমান্ড সহ সর্বশেষ রিলিজ ডাউনলোড করুন:


   curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl-convert"
   


   curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl-convert"
   

২. বাইনারি যাচাই করুন (ঐচ্ছিক)

kubectl-convert checksum ফাইলটি ডাউনলোড করুন:


   curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl-convert.sha256"
   


   curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl-convert.sha256"
   

চেকসাম ফাইলের বিপরীতে kubectl-রূপান্তর বাইনারি যাচাই করুন:

echo "$(cat kubectl-convert.sha256)  kubectl-convert" | shasum -a 256 --check

বৈধ হলে, আউটপুট হল:

kubectl-convert: OK

চেক ব্যর্থ হলে, shasum অশূন্য স্থিতি সহ প্রস্থান করে এবং অনুরূপ আউটপুট প্রিন্ট করে:

kubectl-convert: FAILED
shasum: WARNING: 1 computed checksum did NOT match

৩. kubectl-রূপান্তর বাইনারি এক্সিকিউটেবল করুন

chmod +x ./kubectl-convert

৪. আপনার সিস্টেম PATH-এ একটি ফাইল অবস্থানে kubectl-রূপান্তর বাইনারি সরান।

sudo mv ./kubectl-convert /usr/local/bin/kubectl-convert
sudo chown root: /usr/local/bin/kubectl-convert

৫. প্লাগইন সফলভাবে ইনস্টল করা হয়েছে যাচাই করুন

kubectl convert --help

আপনি যদি একটি ত্রুটি দেখতে না পান, এর মানে হল প্লাগইনটি সফলভাবে ইনস্টল করা হয়েছে।

৬. প্লাগইন ইনস্টল করার পরে, ইনস্টলেশন ফাইলগুলি পরিষ্কার করুন:

rm kubectl-convert kubectl-convert.sha256

এর পরের কি

4.1.2 - উইন্ডোজে kubectl ইনস্টল এবং সেট আপ করুন

শুরু করার আগে

আপনাকে অবশ্যই একটি kubectl সংস্করণ ব্যবহার করতে হবে যা আপনার ক্লাস্টারের একটি ছোট সংস্করণের পার্থক্যের মধ্যে রয়েছে। উদাহরণ স্বরূপ, একটি v1.31 ক্লায়েন্ট v1.30, v1.31, and v1.32 কন্ট্রল প্লেনের সাথে যোগাযোগ করতে পারবে। kubectl এর সর্বশেষ সামঞ্জস্যপূর্ণ সংস্করণ ব্যবহার করা অপ্রত্যাশিত সমস্যাগুলি এড়াতে সাহায্য করে৷

উইন্ডোজে kubectl ইনস্টল করুন

উইন্ডোজে kubectl ইনস্টল করার জন্য নিম্নলিখিত পদ্ধতিগুলো অনুসরণ করতে পারেন:

উইন্ডোজে কার্ল ব্যাবহার kubectl বাইনারি ইনস্টল করুন

  1. সর্বশেষ 1.31 প্যাচ রিলিজ ডাউনলোড করুন: kubectl 1.31.0

    অথবা যদি আপনার curl ইনস্টল থাকে, এই কমান্ডটি ব্যবহার করুন:

    curl.exe -LO "https://dl.k8s.io/release/v1.31.0/bin/windows/amd64/kubectl.exe"
    
  2. বাইনারি যাচাই করুন (অপশনাল)

    kubectl চেকসাম ফাইলটি ডাউনলোড করুন:

    curl.exe -LO "https://dl.k8s.io/v1.31.0/bin/windows/amd64/kubectl.exe.sha256"
    

    চেকসাম ফাইলের বিপরীতে kubectl বাইনারি যাচাই করুন:

    • ডাউনলোড করা চেকসাম ফাইলের সাথে ম্যানুয়ালি CertUtil এর আউটপুট তুলনা করতে কমান্ড প্রম্পট ব্যবহার করে:

      CertUtil -hashfile kubectl.exe SHA256
      type kubectl.exe.sha256
      
    • একটি True বা False ফলাফল পেতে -eq অপারেটর ব্যবহার করে যাচাইকরণ স্বয়ংক্রিয় করতে PowerShell ব্যবহার করে:

       $(Get-FileHash -Algorithm SHA256 .\kubectl.exe).Hash -eq $(Get-Content .\kubectl.exe.sha256)
      
  3. আপনার PATH এনভায়রনমেন্ট ভেরিয়েবলে kubectl বাইনারি ফোল্ডারটি অ্যাপেন্ড বা প্রিপেন্ড করুন।

  4. kubectl-এর সংস্করণ ডাউনলোড করা একই রকম তা নিশ্চিত করতে পরীক্ষা করুন

    kubectl version --client
    

    অথবা সংস্করণের বিস্তারিত দেখার জন্য এটি ব্যবহার করুন:

    kubectl version --client --output=yaml
    
  5. প্লাগইন ইনস্টল করার পরে, ইনস্টলেশন ফাইলগুলি পরিষ্কার করুন:

    del kubectl.exe kubectl.exe.sha256
    

Chocolatey, Scoop, বা winget ব্যবহার করে Windows এ ইনস্টল করুন

  1. উইন্ডোজে kubectl ইনস্টল করতে আপনি উভয় Chocolatey প্যাকেজ ম্যানেজার, Scoop কমান্ড-লাইন ইনস্টলার, অথবা winget প্যাকেজ ম্যানেজার ব্যবহার করতে পারেন।

    choco install kubernetes-cli
    

    scoop install kubectl
    

    winget install -e --id Kubernetes.kubectl
    
  2. আপনার ইনস্টল করা সংস্করণ আপ-টু-ডেট কিনা তা নিশ্চিত করতে পরীক্ষা করুন:

    kubectl version --client
    
  3. আপনার হোম ডিরেক্টরিতে নেভিগেট করুন:

    # If you're using cmd.exe, run: cd %USERPROFILE%
    cd ~
    
  4. .kube ডিরেক্টরি তৈরি করুন:

    mkdir .kube
    
  5. আপনার তৈরি করা .kube ডিরেক্টরিতে ঢুকে পড়ুন:

    cd .kube
    
  6. একটি দূরবর্তী Kubernetes ক্লাস্টার ব্যবহার করতে kubectl কনফিগার করুরু

    New-Item config -type file
    

kubectl কনফিগারেশন যাচাই করুন

kubectl-এর জন্য একটি কুবারনেটিস ক্লাস্টার খুঁজে পেতে এবং অ্যাক্সেস পেতে, যার জন্য প্রয়োজন kubeconfig ফাইল, যা স্বয়ংক্রিয়ভাবে তৈরি হয় যখন আপনি একটি ক্লাস্টার তৈরি করেন kube-up.sh ব্যবহার করে অথবা সফলভাবে একটি Minikube ক্লাস্টার স্থাপন করুন। ডিফল্টরূপে, kubectl কনফিগারেশন ~/.kube/config এ অবস্থিত।

ক্লাস্টার অবস্থা পেয়ে kubectl সঠিকভাবে কনফিগার করা হয়েছে তা পরীক্ষা করুন:

kubectl cluster-info

আপনি যদি একটি URL দেখতে পান, তাহলে আপনার ক্লাস্টার অ্যাক্সেস করার জন্য kubectl সঠিকভাবে কনফিগার করা হয়েছে।

আপনি যদি নিম্নলিখিতগুলোর মতো একটি বার্তা দেখতে পান, তাহলে বুঝবেন যে kubectl সঠিকভাবে কনফিগার করা হয়নি অথবা একটি Kubernetes ক্লাস্টারের সাথে সংযোগ করতে সক্ষম নয়।

সার্ভারের সাথে সংযোগ <server-name:port> প্রত্যাখ্যান করা হয়েছিল - আপনি কি সঠিক হোস্ট বা পোর্ট উল্লেখ করেছেন?

উদাহরণস্বরূপ, আপনি যদি আপনার ল্যাপটপে (স্থানীয়ভাবে) একটি কুবারনেটিস ক্লাস্টার চালাতে চান, তাহলে আপনাকে প্রথমে মিনিকুবের মতো একটি টুল ইনস্টল করতে হবে এবং তারপরে উপরে বর্ণিত কমান্ডগুলি পুনরায় চালাতে হবে।

যদি kubectl ক্লাস্টার-তথ্য url প্রতিক্রিয়া প্রদান করে কিন্তু আপনি আপনার ক্লাস্টার অ্যাক্সেস করতে না পারেন, এটি সঠিকভাবে কনফিগার করা হয়েছে কিনা তা পরীক্ষা করতে, ব্যবহার করুন:

kubectl cluster-info dump

'No Auth Provider Found' ত্রুটি বার্তার সমস্যা সমাধান

কুবারনেটিস 1.26-এ, kubectl নিম্নলিখিত ক্লাউড প্রদানকারীদের পরিচালিত কুবারনেটিস অফারগুলোর জন্য অন্তর্নির্মিত অথেনটিকেশন সরিয়ে দিয়েছে। এই প্রদানকারীরা ক্লাউডের-নির্দিষ্ট অথেনটিকেশন প্রদানের জন্য kubectl প্লাগইন প্রকাশ করেছে। নির্দেশাবলীর জন্য, নিম্নলিখিত প্রদানকারী ডকুমেন্টেশন পড়ুন:

(একই ত্রুটির বার্তা দেখার অন্যান্য কারণও থাকতে পারে, এই পরিবর্তনের সাথে সম্পর্কিত নয়।)

অপশনাল kubectl কনফিগারেশন এবং প্লাগইন

শেল ওটোকমপ্লিট চালু করুন

kubectl Bash, Zsh, Fish এবং PowerShell-এর জন্য ওটোকম্পিট সমর্থন প্রদান করে, যা আপনাকে অনেক টাইপিং করা থেকে রক্ষা করতে পারে।

পাওয়ারশেলের জন্য ওটোকম্পিট সেট আপ করার পদ্ধতিগুলি নীচে দেওয়া হল।

PowerShell-এর জন্য kubectl সমাপ্তি স্ক্রিপ্ট kubectl completion powershell কমান্ড দিয়ে তৈরি করা যেতে পারে।

আপনার সমস্ত শেল সেশনে এটি করতে, আপনার $PROFILE ফাইলে নিম্নলিখিত লাইন যোগ করুন:

kubectl completion powershell | Out-String | Invoke-Expression

এই কমান্ডটি প্রতিটি PowerShell স্টার্ট আপে স্বয়ংক্রিয় সমাপ্তি স্ক্রিপ্ট পুনরায় তৈরি করবে। আপনি চাইলে জেনারেট করা স্ক্রিপ্টটি সরাসরি আপনার $PROFILE ফাইলে যোগ করতে পারেন।

আপনার $PROFILE ফাইলে জেনারেট করা স্ক্রিপ্ট যোগ করতে, আপনার পাওয়ারশেল প্রম্পটে নিম্নলিখিত লাইনটি চালান:

kubectl completion powershell >> $PROFILE

আপনার শেল পুনরায় লোড করার পরে, kubectl স্বয়ংক্রিয় সমাপ্তি কাজ করা উচিত।

kubectl convert প্লাগইন ইনস্টল করুন

কুবারনেটিস কমান্ড-লাইন টুল kubectl এর জন্য একটি প্লাগইন, যা আপনাকে বিভিন্ন আপিআই সংস্করণ এর মধ্যে রূপান্তর করতে দেয়। এটি নতুন কুবারনেটিস রিলিজের সাথে একটি অ-বঞ্চিত আপিআই সংস্করণে স্থানান্তর করতে বিশেষভাবে সহায়ক হতে পারে। আরও তথ্যের জন্য, অপ্রচলিত apis-এ মাইগ্রেট করুন

  1. কমান্ড সহ সর্বশেষ রিলিজ ডাউনলোড করুন:

    curl.exe -LO "https://dl.k8s.io/release/v1.31.0/bin/windows/amd64/kubectl-convert.exe"
    
  2. বাইনারি যাচাই করুন (অপশনাল)।

    kubectl-convert চেকসাম ফাইলটি ডাউনলোড কর্সনা

    curl.exe -LO "https://dl.k8s.io/v1.31.0/bin/windows/amd64/kubectl-convert.exe.sha256"
    

    চেকসাম ফাইলের বিপরীতে kubectl-convert বাইনারি যাচাই করুন:

    • ডাউনলোড করা চেকসাম ফাইলের সাথে ম্যানুয়ালি CertUtil এর আউটপুট তুলনা করতে কমান্ড প্রম্পট ব্যবহার করে:

      CertUtil -hashfile kubectl-convert.exe SHA256
      type kubectl-convert.exe.sha256
      
    • একটি True বা False ফলাফল পেতে -eq অপারেটর ব্যবহার করে যাচাইকরণ স্বয়ংক্রিয় করতে PowerShell ব্যবহার করে:

      $($(CertUtil -hashfile .\kubectl-convert.exe SHA256)[1] -replace " ", "") -eq $(type .\kubectl-convert.exe.sha256)
      
  3. আপনার PATH এনভায়রনমেন্ট ভেরিয়েবলের সাথে kubectl-convert বাইনারি ফোল্ডারটি অ্যাপেন্ড বা প্রিপেন্ড করুন।

  4. প্লাগইন সফলভাবে ইনস্টল করা হয়েছে যাচাই করুন।

    kubectl convert --help
    

    আপনি যদি একটি ত্রুটি দেখতে না পান, এর মানে হল প্লাগইনটি সফলভাবে ইনস্টল করা হয়েছে।

  5. প্লাগইন ইনস্টল করার পরে, ইনস্টলেশন ফাইলগুলি পরিষ্কার করুন:

    del kubectl-convert.exe kubectl-convert.exe.sha256
    

এর পরের কি

4.1.3 - লিনাক্সে kubectl ইনস্টল এবং সেট আপ করুন

শুরু করার আগে

আপনাকে অবশ্যই একটি kubectl সংস্করণ ব্যবহার করতে হবে যা আপনার ক্লাস্টারের একটি ছোট সংস্করণের পার্থক্যের মধ্যে রয়েছে। উদাহরণস্বরূপ, একটি v1.31 ক্লায়েন্ট v1.30, v1.31, এবং v1.32 এর কন্ট্রোল প্লেনের সাথে যোগাযোগ করতে পারে। kubectl এর সর্বশেষ সামঞ্জস্যপূর্ণ সংস্করণ ব্যবহার করা অপ্রত্যাশিত সমস্যাগুলি এড়াতে সাহায্য করে৷

লিনাক্সে kubectl ইনস্টল করুন

লিনাক্সে kubectl ইনস্টল করার জন্য নিম্নলিখিত পদ্ধতি বিদ্যমানঃ

লিনাক্সে কার্ল সহ kubectl বাইনারি ইনস্টল করুন

১. কমান্ড সহ সর্বশেষ রিলিজ ডাউনলোড করুন:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

২. বাইনারি যাচাই করুন (ঐচ্ছিক)

kubectl চেকসাম ফাইল ডাউনলোড করুন:

curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"

চেকসাম ফাইলের বিপরীতে kubectl বাইনারি যাচাই করুন:

echo "$(cat kubectl.sha256)  kubectl" | sha256sum --check

বৈধ হলে, আউটপুট হবে:

kubectl: OK

চেক ব্যর্থ হলে, sha256 অশূন্য স্থিতি সহ প্রস্থান করে এবং অনুরূপ আউটপুট প্রিন্ট করে:

kubectl: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match

৩. kubectl ইনস্টল করুন

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

৪. আপনার ইনস্টল করা সংস্করণ আপ-টু-ডেট কিনা তা নিশ্চিত করতে পরীক্ষা করুন:

kubectl version --client

অথবা সংস্করণের বিস্তারিত দেখার জন্য এটি ব্যবহার করুনঃ

kubectl version --client --output=yaml    

নেটিভ প্যাকেজ ম্যানেজমেন্ট ব্যবহার করে ইনস্টল করুন

১. apt প্যাকেজ ইনডেক্স আপডেট করুন এবং Kubernetes apt রিপোযিটোরী ব্যবহার করার জন্য প্রয়োজনীয় প্যাকেজ ইনস্টল করুন:

sudo apt-get update
sudo apt-get install -y ca-certificates curl

আপনি যদি ডেবিয়ান ৯ (স্ট্রেচ) বা তার আগে ব্যবহার করেন তবে আপনাকে apt-transport-https ইনস্টল করতে হবে:

sudo apt-get install -y apt-transport-https

২. গুগল ক্লাউড পাবলিক সাইনিং কী ডাউনলোড করুন:

sudo curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg

৩. কুবারনেটিস apt রিপোযিটোরী যোগ করুন:

echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list

৪. নতুন রিপোযিটোরীর সাথে apt প্যাকেজ ইনডেক্স আপডেট করুন এবং kubectl ইনস্টল করুন:

sudo apt-get update
sudo apt-get install -y kubectl

cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-\$basearch
enabled=1
gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
sudo yum install -y kubectl

অন্যান্য প্যাকেজ ব্যবস্থাপনা ব্যবহার করে ইনস্টল করুন

আপনি যদি উবুন্টু বা অন্য একটি লিনাক্স ডিস্ট্রিবিউশনে থাকেন যা স্ন্যাপ প্যাকেজ ম্যানেজার সমর্থন করে, তাহলে kubectl একটি স্ন্যাপ অ্যাপ্লিকেশান হিসেবে পাওয়া যাবে।

snap install kubectl --classic
kubectl version --client

আপনি যদি লিনাক্সে থাকেন এবং হোম্ব্রু প্যাকেজ ম্যানেজার ব্যবহার করেন, তাহলে kubectl ইনস্টলেশন এর জন্য পাওয়া যাবে।

brew install kubectl
kubectl version --client

kubectl কনফিগারেশন যাচাই করুন

kubectl-এর জন্য একটি কুবারনেটিস ক্লাস্টার খুঁজে পেতে এবং অ্যাক্সেস পেতে, যার জন্য প্রয়োজন kubeconfig ফাইল, যা স্বয়ংক্রিয়ভাবে তৈরি হয় যখন আপনি একটি ক্লাস্টার তৈরি করেন kube-up.sh ব্যবহার করে অথবা সফলভাবে একটি Minikube ক্লাস্টার স্থাপন করুন। ডিফল্টরূপে, kubectl কনফিগারেশন ~/.kube/config এ অবস্থিত।

ক্লাস্টার অবস্থা পেয়ে kubectl সঠিকভাবে কনফিগার করা হয়েছে তা পরীক্ষা করুন:

kubectl cluster-info

আপনি যদি একটি URL দেখতে পান, তাহলে আপনার ক্লাস্টার অ্যাক্সেস করার জন্য kubectl সঠিকভাবে কনফিগার করা হয়েছে।

আপনি যদি নিম্নলিখিতগুলোর মতো একটি বার্তা দেখতে পান, তাহলে বুঝবেন যে kubectl সঠিকভাবে কনফিগার করা হয়নি অথবা একটি Kubernetes ক্লাস্টারের সাথে সংযোগ করতে সক্ষম নয়।

সার্ভারের সাথে সংযোগ <server-name:port> প্রত্যাখ্যান করা হয়েছিল - আপনি কি সঠিক হোস্ট বা পোর্ট উল্লেখ করেছেন?

উদাহরণস্বরূপ, আপনি যদি আপনার ল্যাপটপে (স্থানীয়ভাবে) একটি কুবারনেটিস ক্লাস্টার চালাতে চান, তাহলে আপনাকে প্রথমে মিনিকুবের মতো একটি টুল ইনস্টল করতে হবে এবং তারপরে উপরে বর্ণিত কমান্ডগুলি পুনরায় চালাতে হবে।

যদি kubectl ক্লাস্টার-তথ্য url প্রতিক্রিয়া প্রদান করে কিন্তু আপনি আপনার ক্লাস্টার অ্যাক্সেস করতে না পারেন, এটি সঠিকভাবে কনফিগার করা হয়েছে কিনা তা পরীক্ষা করতে, ব্যবহার করুন:

kubectl cluster-info dump

'No Auth Provider Found' ত্রুটি বার্তার সমস্যা সমাধান

কুবারনেটিস 1.26-এ, kubectl নিম্নলিখিত ক্লাউড প্রদানকারীদের পরিচালিত কুবারনেটিস অফারগুলোর জন্য অন্তর্নির্মিত অথেনটিকেশন সরিয়ে দিয়েছে। এই প্রদানকারীরা ক্লাউডের-নির্দিষ্ট অথেনটিকেশন প্রদানের জন্য kubectl প্লাগইন প্রকাশ করেছে। নির্দেশাবলীর জন্য, নিম্নলিখিত প্রদানকারী ডকুমেন্টেশন পড়ুন:

(একই ত্রুটির বার্তা দেখার অন্যান্য কারণও থাকতে পারে, এই পরিবর্তনের সাথে সম্পর্কিত নয়।)

ঐচ্ছিক kubectl কনফিগারেশন এবং প্লাগই

শেল অটোকম্পিসন চালু করুন

kubectl Bash, Zsh, Fish এবং PowerShell-এর জন্য অটোকম্পিসন সমর্থন প্রদান করে, যা আপনাকে অনেক টাইপিং বাঁচাতে পারে।

নীচে Bash, Fish, এবং Zsh-এর জন্য স্বয়ংসম্পূর্ণতা সেট আপ করার পদ্ধতিগুলি রয়েছে৷

ভূমিকা

ব্যাশ-এর জন্য kubectl কমপ্লিশন স্ক্রিপ্ট kubectl completion bash কমান্ড দিয়ে তৈরি করা যেতে পারে। আপনার শেলে সমাপ্তি স্ক্রিপ্ট সোর্স করা kubectl অটোকমপ্লিসন সক্ষম করে।

যাইহোক, কমপ্লিসন স্ক্রিপ্ট ব্যাশ-কমপ্লিসন এর উপর নির্ভর করে, তার মানে হচ্ছে আপনাকে প্রথমে এই সফ্টওয়্যারটি ইনস্টল করতে হবে (আপনার ব্যাশ-কমপ্লিসন ইতিমধ্যেই ইনস্টল করা আছে কিনা তা type _init_completion চালিয়ে পরীক্ষা করতে পারেন)।

ব্যাশ-কমপ্লিসন ইনস্টল করুন

ব্যাশ-কমপ্লিসন অনেক প্যাকেজ ম্যানেজার দ্বারা প্রদান করা হয় (এখানে দেখুন)। আপনি এটিকে apt-get install bash-completion অথবা yum install bash-completion, ইত্যাদি দিয়ে ইনস্টল করতে পারেন।

উপরের কমান্ডগুলি /usr/share/bash-completion/bash_completion তৈরি করে, যা ব্যাশ-কমপ্লিসন এর প্রধান স্ক্রিপ্ট। আপনার প্যাকেজ ম্যানেজারের উপর নির্ভর করে, আপনাকে ম্যানুয়ালি এই ফাইলটি আপনার ~/.bashrc ফাইলে সোর্স করতে হবে। জানতে চাইলে, আপনার শেল পুনরায় লোড করুন এবং type_init_completion চালান। কমান্ডটি সফল হলে, আপনি ইতিমধ্যেই সেট করেছেন, অন্যথায় আপনার ~/.bashrc ফাইলে নিম্নলিখিত যোগ করুন:

source /usr/share/bash-completion/bash_completion

আপনার শেল পুনরায় লোড করুন এবং type _init_completion লিখে ব্যাশ-কমপ্লিসন সঠিকভাবে ইনস্টল করা হয়েছে কিনা তা যাচাই করুন।

kubectl অটোকমপ্লিসন চালু করুন

ব্যাশ

আপনাকে এখন নিশ্চিত করতে হবে যে kubectl সমাপ্তি স্ক্রিপ্টটি আপনার সমস্ত শেল সেশনে পাওয়া যায়। আপনি এটি করতে পারেন যা দুটি উপায় আছেঃ


echo 'source <(kubectl completion bash)' >>~/.bashrc


kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null

আপনার যদি kubectl এর জন্য একটি অ্যালিঅ্যাস থাকে তবে আপনি সেই অ্যালিঅ্যাসের সাথে কাজ করার জন্য শেল কমপ্লিসন বাড়াতে পারেনঃ

echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -o default -F __start_kubectl k' >>~/.bashrc

উভয় পন্থা সমতুল্য। আপনার শেল পুনরায় লোড করার পরে, kubectl অটোকমপ্লিসন কাজ করা উচিত। শেলের বর্তমান সেশনে ব্যাশ অটোকমপ্লিসন সক্ষম করতে, ~/.bashrc ফাইলটি উৎস করুনঃ

source ~/.bashrc

fish এর জন্য kubectl সমাপ্তি স্ক্রিপ্ট kubectl completion fish কমান্ড দিয়ে তৈরি করা যেতে পারে। আপনার শেলের মধ্যে সমাপ্তি স্ক্রিপ্ট সোর্স করা kubectl স্বয়ংক্রিয় সমাপ্তি চালু করে।

আপনার সমস্ত শেল সেশনে এটি করতে, আপনার ~/.config/fish/config.fish ফাইলে নিম্নলিখিত লাইন যুক্ত করুন:

kubectl completion fish | source

আপনার শেল পুনরায় লোড করার পরে, kubectl স্বয়ংক্রিয় সমাপ্তি কাজ করা উচিত।

Zsh-এর জন্য kubectl কমপ্লিশন স্ক্রিপ্ট kubectl completion zsh কমান্ড দিয়ে তৈরি করা যেতে পারে। আপনার শেলে সমাপ্তি স্ক্রিপ্ট সোর্স করা kubectl স্বয়ংসম্পূর্ণতা সক্ষম করে। 12

আপনার সমস্ত শেল সেশনে এটি করতে, আপনার ~/.zshrc ফাইলে নিম্নলিখিত যোগ করুন:

source <(kubectl completion zsh)

আপনার যদি kubectl-এর একটি উপনাম থাকে, kubectl স্বয়ংসম্পূর্ণতা স্বয়ংক্রিয়ভাবে এটির সাথে কাজ করবে।

আপনার শেল পুনরায় লোড করার পরে, kubectl স্বয়ংসম্পূর্ণতা কাজ করা উচিত।

যদি আপনি একটি ত্রুটি পান যেমন 2: command not found: compdef, তাহলে আপনার ~/.zshrc ফাইলের শুরুতে নিম্নলিখিত যোগ করুন:

autoload -Uz compinit
compinit

kubectl convert প্লাগইন ইনস্টল করুন

কুবারনেটিস কমান্ড-লাইন টুল kubectl এর জন্য একটি প্লাগইন, যা আপনাকে বিভিন্ন আপিআই সংস্করণ এর মধ্যে রূপান্তর করতে দেয়। এটি নতুন কুবারনেটিস রিলিজের সাথে একটি অ-বঞ্চিত আপিআই সংস্করণে স্থানান্তর করতে বিশেষভাবে সহায়ক হতে পারে। আরও তথ্যের জন্য, অপ্রচলিত apis-এ মাইগ্রেট করুন

১. কমান্ড সহ সর্বশেষ রিলিজ ডাউনলোড করুন:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl-convert"

২. বাইনারি যাচাই করুন (ঐচ্ছিক)

kubectl-convert চেকসাম ফাইলটি ডাউনলোড করুন:

curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl-convert.sha256"

চেকসাম ফাইলের বিপরীতে kubectl-রূপান্তর বাইনারি যাচাই করুন:

echo "$(cat kubectl-convert.sha256) kubectl-convert" | sha256sum --check

বৈধ হলে, আউটপুট হল:

kubectl-convert: OK

চেক ব্যর্থ হলে, sha256 অশূন্য স্থিতি সহ প্রস্থান করে এবং অনুরূপ আউটপুট প্রিন্ট করে:

kubectl-convert: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match

৩. kubectl-convert ইনস্টল করুন

sudo install -o root -g root -m 0755 kubectl-convert /usr/local/bin/kubectl-convert

৪. প্লাগইন সফলভাবে ইনস্টল করা হয়েছে যাচাই করুন

kubectl convert --help

আপনি যদি একটি ত্রুটি দেখতে না পান, এর মানে হল প্লাগইনটি সফলভাবে ইনস্টল করা হয়েছে।

৫. প্লাগইন ইনস্টল করার পরে, ইনস্টলেশন ফাইলগুলি পরিষ্কার করুন:

rm kubectl-convert kubectl-convert.sha256

এর পরের কি

5 - টিউটোরিয়াল

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

বেসিক

কনফিগারেশন

স্টেটলেস অ্যাপ্লিকেশন

স্টেটফুল অ্যাপ্লিকেশন

সেবা

নিরাপত্তা

এর পরের কি

আপনি যদি একটি টিউটোরিয়াল লিখতে চান, সামগ্রী পৃষ্ঠার ধরন দেখুন টিউটোরিয়াল পৃষ্ঠার ধরন সম্পর্কে তথ্যের জন্য।

5.1 - হ্যালো মিনিকুব (Hello Minikube)

এই টিউটোরিয়ালটি আপনাকে দেখায় কিভাবে মিনিকুব ব্যবহার করে কুবারনেটিস এ একটি নমুনা অ্যাপ চালাতে হয়। টিউটোরিয়ালটি একটি কন্টেইনার চিত্র প্রদান করে যা NGINX ব্যবহার করে সমস্ত অনুরোধগুলোকে প্রতিধ্বনিত করে ৷

উদ্দেশ্য

  • মিনিকিউবে একটি সরল অ্যাপ্লিকেশন স্থাপন করুন।
  • অ্যাপ্লিকেশনটিকে চালান।
  • অ্যাপ্লিকেশন লগ (log) দেখুন।

শুরু করার আগে

এই টিউটোরিয়ালটি একটি কন্টেইনার ইমেজ প্রদান করে যা NGINX ব্যবহার করে সমস্ত অনুরোধে সাড়া দেয়।

একটি মিনিকিউব ক্লাস্টার তৈরি করা।

  1. ক্লিক করুন Launch Terminal

  1. একটি ব্রাউজারে কুবারনেটিস ড্যাশবোর্ড খুলুন:

    minikube dashboard
    
  2. Katacoda পরিবেশ (Katacoda Environment): টার্মিনাল প্যানেলের শীর্ষে প্লাস ক্লিক করুন, তারপরে ক্লিক করুন Select port to view on Host 1

  3. Katacoda পরিবেশ (Katacoda Environment): 30000 লিখুন এবং Display Port এ ক্লিক করুন।

URL ব্যবহার করে ড্যাশবোর্ড খুলুন

আপনি যদি ওয়েব ব্রাউজারটি স্বয়ংক্রিয়ভাবে খুলতে না চান তবে আপনি --url ফ্ল্যাগ দিয়ে নিম্নলিখিত কমান্ডটি কার্যকর করে ড্যাশবোর্ড অ্যাক্সেস URL মুদ্রণ করতে পারেন :

minikube dashboard --url

ডিপ্লয়মেন্ট (Deployment) তৈরি করুন

কুবারনেটিস পডস নেটওয়ার্কিং উদ্দেশ্যে এক বা একাধিক পাত্রের একটি গ্রুপ একসাথে গোষ্ঠীবদ্ধ করে। এই টিউটোরিয়ালের পডটিতে (pod) শুধুমাত্র একটি পাত্র রয়েছে। কুবারনেটিস Deployment হলো পডের একটি স্বাস্থ্য পরীক্ষা করে এবং পডের ধারকটি বন্ধ হয়ে গেলে পুনরায় চালু করে। পড তৈরি এবং স্কেলিং পরিচালনা করার উপায় হিসাবে স্থাপনের সুপারিশ করা হয়।

  1. পড পরিচালনা ও ডিপ্লয়মেন্ট তৈরি করতে kubectl create কমান্ডটি চালান। এই পডগুলি প্রদত্ত Docker ইমেজ এর উপর ভিত্তি করে কন্টেইনার চালায়।

    kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
    
  2. ডিপ্লয়মেন্টটি দেখুন:

    kubectl get deployments
    

    অনুরূপ আউটপুট দেখবেন:

    NAME         READY   UP-TO-DATE   AVAILABLE   AGE
    hello-node   1/1     1            1           1m
    
  3. পডটি দেখুন:

    kubectl get pods
    

    অনুরূপ আউটপুট দেখবেন:

    NAME                          READY     STATUS    RESTARTS   AGE
    hello-node-5f76cf6ccf-br9b5   1/1       Running   0          1m
    
  4. ক্লাস্টার ইভেন্ট দেখুন:

    kubectl get events
    
  5. kubectl এর কনফিগারেশন দেখুন:

    kubectl config view
    

সার্ভিস (Service) তৈরি করুন

সাধারণত, পড শুধুমাত্র কুবারনেটিস ক্লাস্টারের অভ্যন্তরীণ আইপি (Internal IP) ঠিকানা দ্বারা অ্যাক্সেসযোগ্য। কুবারনেটিস ভার্চুয়াল নেটওয়ার্কের বাইরে থেকে 'hello-node' কন্টেইনারকে অ্যাক্সেসযোগ্য করতে, আপনাকে কুবারনেটিস সার্ভিস হিসাবে পডটিকে প্রকাশ করতে হবে।

  1. সর্বজনীন ইন্টারনেটে (Public Internet) পডটি প্রকাশ করুন kubectl expose কমান্ড ব্যবহার করে:

    kubectl expose deployment hello-node --type=LoadBalancer --port=8080
    

    --type=LoadBalancer ফ্ল্যগটি নির্দেশ করে যে আপনি ক্লাস্টারের বাইরে আপনার পরিষেবা প্রকাশ করতে চান। k8s.gcr.io/echoserver কনটেইনারের ভিতরের অ্যাপ্লিকেশন কোড শুধুমাত্র TCP port 8080 থেকেই শোনা হয়। আপনি যদি একটি ভিন্ন পোর্ট প্রকাশ করতে kubectl expose ব্যবহার করেন, তাহলে ক্লায়েন্টরা সেই অন্য পোর্টের সাথে সংযোগ করতে পারবে না।

  2. তৈরি করা সার্ভিসটি দেখুন:

    kubectl get services
    

    অনুরূপ আউটপুট দেখবেন:

    NAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    hello-node   LoadBalancer   10.108.144.78   <pending>     8080:30369/TCP   21s
    kubernetes   ClusterIP      10.96.0.1       <none>        443/TCP          23m
    

    ক্লাউড প্রদানকারীরা (Cloud Providers) যারা লোড ব্যালেন্সার (Load Balancer) সমর্থন করে, তাতে একটি External IP Address ব্যবস্থা করা হয়, সার্ভিসটি অ্যাক্সেস করার জন্য। মিনিকিউব-এ, LoadBalancer প্রকারটি minikube service কমান্ডের মাধ্যমে পরিষেবাটিকে অ্যাক্সেসযোগ্য করে তোলে।

  3. নিম্নলিখিত কমান্ড চালান:

    minikube service hello-node
    
  4. Katacoda পরিবেশ (Katacoda Environment): টার্মিনাল প্যানেলের শীর্ষে প্লাস ক্লিক করুন, তারপরে ক্লিক করুন Select port to view on Host 1

  5. শুধুমাত্র Katacoda পরিবেশ (Katacoda Environment): সার্ভিস আউটপুটে 8080 এর বিপরীতে প্রদর্শিত ৫-সংখ্যার পোর্ট নম্বরটি নোট করুন। এই পোর্ট নম্বরটি এলোমেলোভাবে তৈরি করা হয়েছে এবং এটি আপনার জন্য আলাদা হতে পারে। পোর্ট নম্বর টেক্সট বক্সে আপনার নম্বর টাইপ করুন, তারপর ডিসপ্ল পোর্টে (default port) ক্লিক করুন। আগের উদাহরণটি ব্যবহার করে, আপনি 30369 টাইপ করবেন।

    এটি একটি ব্রাউজার উইন্ডো খোলে যা আপনার অ্যাপটি পরিবেশন করে এবং অ্যাপের প্রতিক্রিয়া দেখায়।

অ্যাডন সক্রিয় করুন (Addons)

মিনিকিউব টুলটিতে অন্তর্নির্মিত অ্যাডনগুলির (Internal addons) একটি সেট রয়েছে যা স্থানীয় কুবারনেটিস পরিবেশে এনেবেল (enable), ডিজেবল (disable) এবং ওপেন (open) করা যেতে পারে।

  1. বর্তমানে সমর্থিত অ্যাডনগুলির তালিকা:

    minikube addons list
    

    অনুরূপ আউটপুট দেখবেন:

    addon-manager: enabled
    dashboard: enabled
    default-storageclass: enabled
    efk: disabled
    freshpod: disabled
    gvisor: disabled
    helm-tiller: disabled
    ingress: disabled
    ingress-dns: disabled
    logviewer: disabled
    metrics-server: disabled
    nvidia-driver-installer: disabled
    nvidia-gpu-device-plugin: disabled
    registry: disabled
    registry-creds: disabled
    storage-provisioner: enabled
    storage-provisioner-gluster: disabled
    
  2. একটি অ্যাডন এনেবেল (enable) করুন, উদাহরণস্বরূপ metrics-server:

    minikube addons enable metrics-server
    

    অনুরূপ আউটপুট দেখবেন:

    The 'metrics-server' addon is enabled
    
  3. আপনার তৈরি করা পড এবং সার্ভিস দেখুন:

    kubectl get pod,svc -n kube-system
    

    অনুরূপ আউটপুট দেখবেন:

    NAME                                        READY     STATUS    RESTARTS   AGE
    pod/coredns-5644d7b6d9-mh9ll                1/1       Running   0          34m
    pod/coredns-5644d7b6d9-pqd2t                1/1       Running   0          34m
    pod/metrics-server-67fb648c5                1/1       Running   0          26s
    pod/etcd-minikube                           1/1       Running   0          34m
    pod/influxdb-grafana-b29w8                  2/2       Running   0          26s
    pod/kube-addon-manager-minikube             1/1       Running   0          34m
    pod/kube-apiserver-minikube                 1/1       Running   0          34m
    pod/kube-controller-manager-minikube        1/1       Running   0          34m
    pod/kube-proxy-rnlps                        1/1       Running   0          34m
    pod/kube-scheduler-minikube                 1/1       Running   0          34m
    pod/storage-provisioner                     1/1       Running   0          34m
    
    NAME                           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
    service/metrics-server         ClusterIP   10.96.241.45    <none>        80/TCP              26s
    service/kube-dns               ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP       34m
    service/monitoring-grafana     NodePort    10.99.24.54     <none>        80:30002/TCP        26s
    service/monitoring-influxdb    ClusterIP   10.111.169.94   <none>        8083/TCP,8086/TCP   26s
    
  4. ডিজেবল (disable) করুন metrics-server:

    minikube addons disable metrics-server
    

    অনুরূপ আউটপুট দেখবেন:

    metrics-server was successfully disabled
    

পরিষ্কার করুন (Clean up)

এখন আপনি আপনার ক্লাস্টারে তৈরি রিসোর্সগুলি পরিষ্কার করতে পারেন:

kubectl delete service hello-node
kubectl delete deployment hello-node

ঐচ্ছিকভাবে, মিনিকিউব ভার্চুয়াল মেশিন (Minikube Virtual Machine) বন্ধ করুন:

minikube stop

ঐচ্ছিকভাবে, মিনিকিউব ভার্চুয়াল মেশিন (Minikube Virtual Machine) মুছুন ফেলুন:

minikube delete

এর পরের কি

5.2 - কুবারনেটিসের বেসিক শিখুন

কুবারনেটিস বেসিক

এই টিউটোরিয়ালটি কুবারনেটিস ক্লাস্টার অর্কেস্ট্রেশন সিস্টেমের মূল বিষয়গুলির একটি ধারণা প্রদান করে। প্রতিটি মডিউলে কুবারনেটিসের প্রধান বৈশিষ্ট্য এবং ধারণাগুলির কিছু পটভূমি তথ্য রয়েছে এবং একটি ইন্টারেক্টিভ অনলাইন টিউটোরিয়াল অন্তর্ভুক্ত রয়েছে। এই ইন্টারেক্টিভ টিউটোরিয়ালগুলি আপনাকে নিজের জন্য একটি সাধারণ ক্লাস্টার এবং এর ধারকযুক্ত অ্যাপ্লিকেশনগুলি পরিচালনা করতে দেয় ৷

ইন্টারেক্টিভ টিউটোরিয়াল ব্যবহার করে, আপনি এগুলো শিখতে পারেনঃ

  • একটি ক্লাস্টারে একটি কন্টেইনারাইজড অ্যাপ্লিকেশন স্থাপন করুন।
  • ডিপ্লয়মেন্ট স্কেল করুন।
  • একটি নতুন সফ্টওয়্যার সংস্করণ দিয়ে কন্টেইনারাইজড অ্যাপ্লিকেশন আপডেট করুন।
  • কন্টেইনারাইজড অ্যাপ্লিকেশন ডিবাগ করুন।

টিউটোরিয়ালগুলি আপনার ওয়েব ব্রাউজারে একটি ভার্চুয়াল টার্মিনাল চালানোর জন্য Katacoda ব্যবহার করে যা Minikube চালায়, কুবারনেটের একটি ছোট আকারের স্থানীয় ডিপ্লয়মেন্ট যা যেকোনো জায়গায় চলতে পারে। কোন সফ্টওয়্যার ইনস্টল বা কিছু কনফিগার করার কোন প্রয়োজন নেই; প্রতিটি ইন্টারেক্টিভ টিউটোরিয়াল সরাসরি আপনার ওয়েব ব্রাউজার থেকে চলে।


কুবারনেটিস আপনার জন্য কী করতে পারে?

আধুনিক ওয়েব পরিষেবাগুলির সাথে, ব্যবহারকারীরা আশা করে যে অ্যাপ্লিকেশনগুলি ২৪/৭ উপলব্ধ থাকবে এবং বিকাশকারীরা সেই অ্যাপ্লিকেশনগুলির নতুন সংস্করণগুলি দিনে কয়েকবার স্থাপন করার আশা করে৷ কনটেইনারাইজেশন প্যাকেজ সফ্টওয়্যারকে এই লক্ষ্যগুলি পূরণ করতে সহায়তা করে, অ্যাপ্লিকেশনগুলিকে মুক্তি এবং ডাউনটাইম ছাড়াই আপডেট করতে সক্ষম করে। কুবারনেটিস আপনাকে নিশ্চিত করতে সাহায্য করে যে সেই কন্টেইনারাইজড অ্যাপ্লিকেশানগুলি আপনি যেখানে এবং যখন চান চালান, এবং তাদের কাজ করার জন্য প্রয়োজনীয় সংস্থান এবং সরঞ্জামগুলি খুঁজে পেতে সহায়তা করে৷ কুবারনেটিস হল একটি উৎপাদন-প্রস্তুত, ওপেন সোর্স প্ল্যাটফর্ম যা কনটেইনার অর্কেস্ট্রেশনে গুগল-এর সঞ্চিত অভিজ্ঞতার সাহায্যে ডিজাইন করা হয়েছে, যা সম্প্রদায়ের সেরা জাত ধারণাগুলির সাথে মিলিত হয়েছে


5.2.1 - ক্লাস্টার তৈরি করুন

কুবারনেটিস সম্পর্কে জানুন ক্লাস্টার এবং মিনিকিউব দিয়ে সহজ ক্লাস্টার তৈরি করুন।

5.2.1.1 - একটি ক্লাস্টার তৈরি করতে Minikube ব্যবহার করো

Objectives

  • Kubernetes ক্লাস্টার কি তা জানুন.
  • Minikube কি তা জানুন.
  • একটি অনলাইন টার্মিনাল ব্যবহার করে একটি Kubernetes ক্লাস্টার শুরু করুন।

Kubernetes Clusters

কুবারনেটিস কম্পিউটারের একটি অত্যন্ত উপলব্ধ ক্লাস্টার সমন্বয় করে যা একটি একক হিসাবে কাজ করার জন্য সংযুক্ত। Kubernetes-এর বিমূর্ততা আপনাকে বিশেষভাবে পৃথক মেশিনে না বেঁধে একটি ক্লাস্টারে কন্টেইনারাইজড অ্যাপ্লিকেশন স্থাপন করতে দেয়। ডিপ্লয়মেন্টের এই নতুন মডেলটি ব্যবহার করার জন্য, অ্যাপ্লিকেশনগুলিকে এমনভাবে প্যাকেজ করা দরকার যাতে সেগুলিকে পৃথক হোস্ট থেকে আলাদা করা যায়: তাদের কন্টেইনারাইজ করা দরকার। কন্টেইনারাইজড অ্যাপ্লিকেশনগুলি অতীতের ডিপ্লয়মেন্টের মডেলগুলির তুলনায় আরও নমনীয় এবং উপলব্ধ, যেখানে অ্যাপ্লিকেশনগুলি সরাসরি হোস্টের সাথে গভীরভাবে একত্রিত প্যাকেজ হিসাবে নির্দিষ্ট মেশিনে ইনস্টল করা হয়েছিল। Kubernetes একটি ক্লাস্টার জুড়ে অ্যাপ্লিকেশন কন্টেইনারগুলির বিতরণ এবং সময়সূচীকে আরও দক্ষ উপায়ে স্বয়ংক্রিয় করে। Kubernetes একটি ওপেন সোর্স প্ল্যাটফর্ম এবং এটি উৎপাদনের জন্য প্রস্তুত।

>একটি কুবারনেটিস ক্লাস্টার দুটি ধরণের সংস্থান নিয়ে গঠিত:

  • The নিয়ন্ত্রণ প্যানেল (Control Plane) ক্লাস্টার (cluster) সমন্বয় করে
  • নোড (Nodes) হল কর্মীরা যারা অ্যাপ্লিকেশনটি (applications) চালায়

সারসংক্ষেপ:

  • কুবারনেটিস ক্লাস্টার (Kubernetes cluster)
  • মিনিকুব (Minikube)

কুবারনেটিস হল একটি প্রোডাকশন-গ্রেড, ওপেন-সোর্স প্ল্যাটফর্ম যা কম্পিউটার ক্লাস্টারের মধ্যে এবং জুড়ে অ্যাপ্লিকেশন কন্টেইনারগুলির প্লেসমেন্ট (শিডিউলিং) এবং এক্সিকিউশনকে অর্কেস্ট্রেট করে।


ক্লাস্টার ডায়াগ্রাম (Cluster Diagram)


কন্ট্রোল প্লেন ক্লাস্টার পরিচালনার জন্য দায়ী.কন্ট্রোল প্লেন আপনার ক্লাস্টারে সমস্ত ক্রিয়াকলাপ সমন্বয় করে, যেমন অ্যাপ্লিকেশনের সময় নির্ধারণ, অ্যাপ্লিকেশনগুলির পছন্দসই অবস্থা বজায় রাখা, অ্যাপ্লিকেশনগুলিকে স্কেলিং করা এবং নতুন আপডেটগুলি রোল আউট করা.

একটি নোড হল একটি VM বা একটি শারীরিক কম্পিউটার যা একটি কুবারনেটিস ক্লাস্টারে কর্মী মেশিন হিসাবে কাজ করে। প্রতিটি নোডের একটি কুবেলেট থাকে, যা নোড পরিচালনা এবং কুবারনেটিস কন্ট্রোল প্লেনের সাথে যোগাযোগের জন্য একটি এজেন্ট। নোডের কনটেইনার ক্রিয়াকলাপ পরিচালনা করার জন্য সরঞ্জাম থাকা উচিত, যেমন কন্টেইনার বা ডকার। একটি Kubernetes ক্লাস্টার যা উৎপাদন ট্র্যাফিক পরিচালনা করে তার ন্যূনতম তিনটি নোড থাকা উচিত কারণ যদি একটি নোড নিচে চলে যায়, তাহলে একটি etcd সদস্য এবং একটি কন্ট্রোল প্লেন ইনস্ট্যান্স উভয়ই হারিয়ে যায় এবং রিডানডেন্সি আপস করা হয়। আপনি আরো কন্ট্রোল প্লেন নোড যোগ করে এই ঝুঁকি কমাতে পারেন।

কন্ট্রোল প্লেনগুলি (Control Planes) চলমান অ্যাপ্লিকেশনগুলি হোস্ট করতে ব্যবহৃত ক্লাস্টার এবং নোডগুলি পরিচালনা করে।

আপনি যখন কুবারনেটিসএ অ্যাপ্লিকেশনগুলি স্থাপন করেন, তখন আপনি কন্ট্রোল প্লেনকে অ্যাপ্লিকেশন কন্টেইনারগুলি শুরু করতে বলেন৷ কন্ট্রোল প্লেন ক্লাস্টারের নোডগুলিতে চালানোর জন্য কন্টেইনারগুলি নির্ধারণ করে। নোডগুলি কুবারনেটিস API ব্যবহার করে কন্ট্রোল প্লেনের সাথে যোগাযোগ করে, যা কন্ট্রোল প্লেন প্রকাশ করে৷ শেষ ব্যবহারকারীরাও ক্লাস্টারের সাথে ইন্টারঅ্যাক্ট করতে সরাসরি কুবারনেটিস API ব্যবহার করতে পারেন।

একটি কুবারনেটিস ক্লাস্টার শারীরিক বা ভার্চুয়াল মেশিনে স্থাপন করা যেতে পারে। কুবারনেটিসের বিকাশ শুরু করতে সাথে, আপনি মিনিকুব ব্যবহার করতে পারেন। মিনিকুব হল একটি হালকা ওজনের কুবারনেটিস বাস্তবায়ন যা আপনার স্থানীয় মেশিনে একটি VM তৈরি করে এবং শুধুমাত্র একটি নোড ধারণকারী একটি সাধারণ ক্লাস্টার স্থাপন করে। মিনিকুব লিনাক্স (Minikube Linux), macOS এবং Windows সিস্টেমের জন্য উপলব্ধ। মিনিকুব CLI আপনার ক্লাস্টারের সাথে কাজ করার জন্য প্রাথমিক বুটস্ট্র্যাপিং ক্রিয়াকলাপগুলি প্রদান করে, যার মধ্যে শুরু, থামানো, স্থিতি এবং মুছে ফেলা হয়। এই টিউটোরিয়ালের জন্য, তবে, আপনি মিনিকুবের আগে থেকে ইনস্টল করা একটি প্রদত্ত অনলাইন টার্মিনাল ব্যবহার করবেন৷

এখন যেহেতু আপনি জানেন কুবারনেটিস কী, আসুন অনলাইন টিউটোরিয়ালটিতে যাই এবং আমাদের প্রথম ক্লাস্টার শুরু করি!


5.2.1.2 - ইন্টারেক্টিভ টিউটোরিয়াল - একটি ক্লাস্টার তৈরি করা

5.2.2 - একটি অ্যাপ স্থাপন করা

5.2.2.1 - kubectl ব্যবহার করে একটি ডিপ্লয়মেন্ট তৈরি করা

উদ্দেশ্য

  • অ্যাপ্লিকেশন ডিপ্লয়মেন্ট সম্পর্কে জানুন ।
  • kubectl দিয়ে কুবারনেটিসে আপনার প্রথম অ্যাপ স্থাপন করুন।

কুবারনেটিস ডিপ্লয়মেন্ট

একবার আপনার চলমান কুবারনেটস ক্লাস্টার হয়ে গেলে, আপনি এটির উপরে আপনার কন্টেইনারাইজড অ্যাপ্লিকেশনগুলি ডিপ্লোয় করতে পারেন। এটি করার জন্য, আপনি একটি কুবারনেটিসে ডিপ্লয়মেন্ট কনফিগারেশন তৈরি করুন। ডিপ্লয়মেন্ট কুবারনেটসকে নির্দেশ দেয় কিভাবে আপনার আবেদনের দৃষ্টান্ত তৈরি এবং আপডেট করতে হয়। একবার আপনি একটি ডিপ্লোয় তৈরি করে ফেললে, কুবারনেটস কন্ট্রোল প্লেন ক্লাস্টারের পৃথক নোডগুলিতে চালানোর জন্য সেই ডিপ্লয়মেন্ট অন্তর্ভুক্ত অ্যাপ্লিকেশন উদাহরণগুলি নির্ধারণ করে।

একবার অ্যাপ্লিকেশন দৃষ্টান্ত তৈরি হয়ে গেলে, একটি কুবারনেটস ডিপ্লয়মেন্ট কন্ট্রোলার ক্রমাগত সেই দৃষ্টান্তগুলি পর্যবেক্ষণ করে। যদি কোনো দৃষ্টান্ত (instance) হোস্টিং নোড নিচে চলে যায় বা মুছে ফেলা হয়, তাহলে ডিপ্লয়মেন্ট কন্ট্রোলার ক্লাস্টারের অন্য নোডের দৃষ্টান্তের (instance) সাথে প্রতিস্থাপন করে। এটি মেশিনের ব্যর্থতা বা রক্ষণাবেক্ষণের জন্য একটি স্ব-নিরাময় প্রক্রিয়া সরবরাহ করে।

একটি প্রাক-অর্কেস্ট্রেশন (pre-orchestration) বিশ্বে, ইনস্টলেশন স্ক্রিপ্টগুলি প্রায়শই অ্যাপ্লিকেশন শুরু করার জন্য ব্যবহার করা হত, কিন্তু তারা মেশিনের ব্যর্থতা থেকে পুনরুদ্ধারের অনুমতি দেয়নি। আপনার অ্যাপ্লিকেশন দৃষ্টান্ত তৈরি করে এবং সেগুলিকে নোড জুড়ে চালিয়ে রেখে, কুবারনেটস ডিপ্লয়মেন্টগুলি অ্যাপ্লিকেশন পরিচালনার জন্য একটি মৌলিকভাবে ভিন্ন পদ্ধতি প্রদান করে।

সারসংক্ষেপ :

  • ডিপ্লয়মেন্ট
  • Kubectl

আপনার আবেদনের দৃষ্টান্ত তৈরি এবং আপডেট করার জন্য একটি ডিপ্লয়মেন্ট দায়ী |


কুবারনেটিসে আপনার প্রথম অ্যাপ ডিপ্লোয় করুন


আপনি কুবারনেটিস কমান্ড লাইন ইন্টারফেস,
Kubectl
ব্যবহার করে একটি ডিপ্লোয় তৈরি এবং পরিচালনা করতে পারেন। Kubectl ক্লাস্টারের সাথে ইন্টারঅ্যাক্ট করতে কুবারনেটিস এপিআই (API) ব্যবহার করে। এই মডিউলে, আপনি কুবারনেটস ক্লাস্টারে আপনার অ্যাপ্লিকেশনগুলি চালানোর জন্য ডিপ্লয়মেন্ট তৈরি করার জন্য প্রয়োজনীয় সবচেয়ে সাধারণ Kubectl কমান্ডগুলি শিখবেন ।

আপনি যখন একটি ডিপ্লয়মেন্ট তৈরি করেন, আপনাকে আপনার অ্যাপ্লিকেশনের জন্য কন্টেইনার চিত্র এবং আপনি যে প্রতিলিপিগুলি চালাতে চান তার সংখ্যা নির্দিষ্ট করতে হবে ৷ আপনি পরে আপনার ডিপ্লয়মেন্ট আপডেট করে সেই তথ্য পরিবর্তন করতে পারেন; বুটক্যাম্পের মডিউল 5 এবং 6 আলোচনা করে যে আপনি কীভাবে আপনার ডিপ্লয়মেন্টের স্কেল এবং আপডেট করতে পারেন।

কুবারনেটিসে মোতায়েন করার জন্য অ্যাপ্লিকেশনগুলিকে সমর্থিত কন্টেইনার পদ্ধতি প্যাকেজ করা দরকার

আপনার প্রথম ডিপ্লয়মেন্টর জন্য, আপনি একটি ডকার কন্টেনারে প্যাকেজ করা একটি হ্যালো-নোড অ্যাপ্লিকেশন ব্যবহার করবেন যা সমস্ত অনুরোধগুলিকে প্রতিধ্বনিত করতে NGINX ব্যবহার করে। (যদি আপনি ইতিমধ্যে একটি হ্যালো-নোড অ্যাপ্লিকেশন তৈরি করার এবং একটি কন্টেইনার ব্যবহার করে এটি স্থাপন করার চেষ্টা না করে থাকেন তবে আপনি হ্যালো মিনিকুব টিউটোরিয়াল (Hello Minikube tutorial) থেকে নির্দেশাবলী অনুসরণ করে প্রথমে এটি করতে পারেন)।

এখন যেহেতু আপনি জানেন যে ডিপ্লয়মেন্টগুলি কী, আসুন অনলাইন টিউটোরিয়ালটিতে যাই এবং আমাদের প্রথম অ্যাপটি স্থাপন করি!


5.2.2.2 - ইন্টারেক্টিভ টিউটোরিয়াল - একটি অ্যাপ ডিপ্লোয় করা

একটি পড হল একটি কুবারনেটিসে অ্যাপ্লিকেশনের মৌলিক এক্সিকিউশন ইউনিট। প্রতিটি পড আপনার ক্লাস্টারে চলমান কাজের চাপের একটি অংশ উপস্থাপন করে। পড সম্পর্কে আরও জানুন.


5.2.3 - আপনার অ্যাপ্লিকেশানকে অন্বেষণ করুন

5.2.3.1 - পড এবং নোড দেখা

উদ্দেশ্য

  • কুবারনেটিসে পডস সম্পর্কে জানুন।
  • কুবারনেটিসে নোডস সম্পর্কে জানুন।
  • ডিপ্লোয় করা অ্যাপ্লিকেশনের সমস্যা সমাধান(Troubleshoot) করুন।

কুবারনেটিসে পডস

আপনি যখন মডিউল 2 -এ একটি ডিপ্লোয়মেন্ট তৈরি করেন, তখন কুবারনেটস আপনার অ্যাপ্লিকেশন দৃষ্টান্ত হোস্ট করার জন্য একটি পড তৈরি করে। একটি পড হল একটি কুবারনেটস প্রত্যাহরণ যা এক বা একাধিক অ্যাপ্লিকেশন কন্টেইনারগুলির একটি গ্রুপকে প্রতিনিধিত্ব করে (যেমন ডকার), এবং সেই পাত্রগুলির জন্য কিছু শেয়ার করা সংস্থান। এই সম্পদ অন্তর্ভুক্ত:

  • ভাগ করা স্টোরেজ, পরিমাণ হিসাবে
  • নেটওয়ার্কিং, একটি অনন্য ক্লাস্টার আইপি ঠিকানা হিসাবে
  • প্রতিটি কন্টেইনার কিভাবে চালাতে হয় সে সম্পর্কে তথ্য, যেমন কন্টেইনার ইমেজ সংস্করণ বা নির্দিষ্ট পোর্ট ব্যবহার করতে হবে

একটি পড একটি অ্যাপ্লিকেশন-নির্দিষ্ট "লজিক্যাল হোস্ট" মডেল করে এবং এতে বিভিন্ন অ্যাপ্লিকেশন পাত্র থাকতে পারে যা তুলনামূলকভাবে শক্তভাবে সংযুক্ত থাকে। উদাহরণ স্বরূপ, একটি পড আপনার Node.js অ্যাপের পাশাপাশি একটি ভিন্ন ধারক যা Node.js ওয়েব সার্ভার দ্বারা প্রকাশিত ডেটা ফিড করে উভয় ধারক অন্তর্ভুক্ত করতে পারে। একটি পডের কন্টেইনারগুলি একটি আইপি ঠিকানা এবং পোর্ট স্পেস ভাগ করে, সর্বদা সহ-অবস্থিত এবং সহ-নির্ধারিত, এবং একই নোডে একটি ভাগ করা প্রসঙ্গে চালিত হয়।

কুবারনেটস প্ল্যাটফর্মের পারমাণবিক একক হল পড | যখন আমরা কুবারনেটিসে একটি ডিপ্লোয়মেন্ট করি, সেই ডিপ্লোয়মেন্টটি তাদের ভিতরে কন্টেইনার সহ পড তৈরি করে (সরাসরি কন্টেইনার তৈরির বিপরীতে)। প্রতিটি পড নোডের সাথে আবদ্ধ থাকে যেখানে এটি নির্ধারিত হয়, এবং সমাপ্তি (পুনঃসূচনা নীতি অনুসারে) বা মুছে ফেলা পর্যন্ত সেখানে থাকে। নোড ব্যর্থতার ক্ষেত্রে, ক্লাস্টারের অন্যান্য উপলব্ধ নোডগুলিতে অভিন্ন পডগুলি নির্ধারিত হয়।

সারসংক্ষেপ:

  • পডস
  • নোডস
  • Kubectl প্রধান কমান্ড

একটি পড হল এক বা একাধিক অ্যাপ্লিকেশন কন্টেইনারের একটি গোষ্ঠী (যেমন ডকার) এবং এতে ভাগ করা স্টোরেজ (ভলিউম), আইপি ঠিকানা এবং সেগুলি চালানোর বিষয়ে তথ্য অন্তর্ভুক্ত থাকে।


পডসের পরিদর্শন


নোডস

একটি পড সর্বদা একটি নোডে চলে | একটি নোড হল কুবারনেটিসে একটি কর্মী মেশিন এবং ক্লাস্টারের উপর নির্ভর করে একটি ভার্চুয়াল বা ফিজিক্যাল মেশিন হতে পারে। প্রতিটি নোড নিয়ন্ত্রণ সমতল দ্বারা পরিচালিত হয়। একটি নোডে একাধিক পড থাকতে পারে এবং কুবারনেটস কন্ট্রোল প্লেন স্বয়ংক্রিয়ভাবে ক্লাস্টারের নোড জুড়ে পডগুলির সময়সূচী পরিচালনা করে। কন্ট্রোল প্লেনের স্বয়ংক্রিয় সময়সূচী প্রতিটি নোডে উপলব্ধ সংস্থানগুলিকে বিবেচনা করে।

প্রতিটি কুবারনেটস নোড কমপক্ষে রান করে:

  • কুবেলেট, কুবারনেটিস কন্ট্রোল প্লেন এবং নোডের মধ্যে যোগাযোগের জন্য দায়ী একটি প্রক্রিয়া; এটি একটি মেশিনে চলমান পড এবং পাত্রগুলি পরিচালনা করে।
  • একটি কন্টেইনার রানটাইম (ডকারের মতো) একটি রেজিস্ট্রি থেকে কন্টেইনার ইমেজ টেনে আনা, কন্টেইনার আনপ্যাক করা এবং অ্যাপ্লিকেশন চালানোর জন্য দায়ী।

কন্টেইনারগুলি শুধুমাত্র একটি একক পডে একসাথে নির্ধারিত হওয়া উচিত যদি সেগুলি শক্তভাবে সংযুক্ত থাকে এবং ডিস্কের মতো সংস্থানগুলি ভাগ করতে হয়৷


নোড পরিদর্শন


kubectl এর সাথে সমস্যা সমাধান(Troubleshooting)

মডিউল 2 - এ, আপনি Kubectl কমান্ড-লাইন ইন্টারফেস ব্যবহার করেছেন। আপনি ডিপ্লোয় করা অ্যাপ্লিকেশন এবং তাদের পরিবেশ সম্পর্কে তথ্য পেতে মডিউল 3 এ এটি ব্যবহার করা চালিয়ে যাবেন। সবচেয়ে সাধারণ ক্রিয়াকলাপগুলি নিম্নলিখিত kubectl কমান্ড দিয়ে করা যেতে পারে:

  • kubectl get - সম্পদ(resource) তালিকা
  • kubectl describe - একটি সম্পদ সম্পর্কে বিস্তারিত তথ্য দেখান
  • kubectl logs - একটি পডে কন্টেইনার থেকে লগ দেখানো
  • kubectl exec - একটি পডের একটি কন্টেইনার একটি কমান্ড চালান

অ্যাপ্লিকেশনগুলি কখন ডিপ্লোয় করা হয়েছিল, তাদের বর্তমান অবস্থা কী, তারা কোথায় চলছে এবং তাদের কনফিগারেশনগুলি কী তা দেখতে আপনি এই কমান্ডগুলি ব্যবহার করতে পারেন।

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

একটি নোড হল কুবারনেটিসে একটি কর্মী মেশিন এবং ক্লাস্টারের উপর নির্ভর করে একটি ভার্চুয়াল বা শারীরিক মেশিন হতে পারে। একাধিক পড এক নোডে চলতে পারে।


5.2.3.2 - ইন্টারেক্টিভ প্রশিক্ষণ - আপনার অ্যাপ্লিকেশানকে অন্বেষণ করুন

5.2.4 - আপনার অ্যাপ পরিসর করুন

5.2.4.1 - আপনার অ্যাপের একাধিক উদাহরণ (instance) চালান

উদ্দেশ্য

  • kubectl ব্যবহার করে একটি অ্যাপ স্কেল করুন।

একটি অ্যাপ্লিকেশন স্কেলিং

পূর্ববর্তী মডিউলগুলিতে আমরা তৈরি করেছি একটি ডিপ্লয়মেন্ট এবং তারপর সর্বজনীনভাবে এটি প্রকাশ করে একটি পরিষেবার মাধ্যমে ৷ ডিপ্লয়মেন্টটি আমাদের অ্যাপ্লিকেশন চালানোর জন্য শুধুমাত্র একটি পড তৈরি করেছে। যখন ট্র্যাফিক বাড়বে, তখন ব্যবহারকারীর চাহিদার সাথে তাল মিলিয়ে চলতে আমাদের অ্যাপ্লিকেশন স্কেল করতে হবে।

স্কেলিং একটি ডিপ্লয়মেন্টের প্রতিলিপি সংখ্যা পরিবর্তন করে সম্পন্ন করা হয়

সারসংক্ষেপ:

  • একটি ডিপ্লয়মেন্টের স্কেলিং

আপনি শুরু থেকে kubectl create deployment কমান্ডের --replicas প্যারামিটার ব্যবহার করে একাধিক উদাহরণ সহ একটি ডিপ্লয়মেন্ট তৈরি করতে পারেন


স্কেলিং এর ধারণা


একটি ডিপ্লয়মেন্টের স্কেল করা নিশ্চিত করবে যে নতুন পড তৈরি করা হয়েছে এবং উপলব্ধ সংস্থান সহ নোডগুলিতে নির্ধারিত হয়েছে। স্কেলিং নতুন পছন্দসই অবস্থায় পডের সংখ্যা বৃদ্ধি করবে। কুবারনেটস পডের অটোস্কেলিং সমর্থন করে, কিন্তু এটি এই টিউটোরিয়ালের সুযোগের বাইরে। শূন্যে স্কেলিং করাও সম্ভব, এবং এটি নির্দিষ্ট ডিপ্লয়মেন্টের সমস্ত পড বন্ধ করবে।

একটি অ্যাপ্লিকেশনের একাধিক দৃষ্টান্ত চালানোর জন্য তাদের সকলে ট্রাফিক বিতরণ করার একটি উপায় প্রয়োজন। পরিষেবাগুলিতে একটি সমন্বিত লোড-ব্যালেন্সার রয়েছে যা একটি উন্মুক্ত ডিপ্লয়মেন্টের সমস্ত পডগুলিতে নেটওয়ার্ক ট্র্যাফিক বিতরণ করবে। পরিষেবাগুলি কেবলমাত্র উপলভ্য পডগুলিতে ট্র্যাফিক পাঠানো হয়েছে তা নিশ্চিত করার জন্য এন্ডপয়েন্টগুলি ব্যবহার করে ক্রমাগত চলমান পডগুলি পর্যবেক্ষণ করবে।

একটি ডিপ্লয়মেন্টেয় প্রতিলিপির সংখ্যা পরিবর্তন করে স্কেলিং সম্পন্ন করা হয়।


একবার আপনার কাছে একটি অ্যাপ্লিকেশন চালানোর একাধিক উদাহরণ হয়ে গেলে, আপনি ডাউনটাইম ছাড়াই রোলিং আপডেট করতে সক্ষম হবেন। আমরা পরবর্তী মডিউলে এটি কভার করব। এখন, আসুন অনলাইন টার্মিনালে যাই এবং আমাদের আবেদন স্কেল করি।


5.2.4.2 - ইন্টারেক্টিভ টিউটোরিয়াল - আপনার অ্যাপ পরিসর করুন

5.2.5 - আপনার অ্যাপ্লিকেশন আপডেট করুন

5.2.5.1 - একটি রোলিং আপডেট সম্পাদন করা

উদ্দেশ্য

  • kubectl ব্যবহার করে একটি রোলিং আপডেট সম্পাদন করুন।

একটি অ্যাপ্লিকেশন আপডেট করা হচ্ছে

ব্যবহারকারীরা আশা করে যে অ্যাপ্লিকেশনগুলি সর্বদা উপলব্ধ থাকবে এবং ডেভেলপাররা দিনে কয়েকবার তাদের নতুন সংস্করণ স্থাপন করবে বলে আশা করা হচ্ছে। কুবারনেটিসে এটি রোলিং আপডেটের সাথে করা হয়। ঘূর্ণায়মান আপডেটগুলি নতুনগুলির সাথে পড দৃষ্টান্তগুলিকে ক্রমবর্ধমানভাবে আপডেট করে শূন্য ডাউনটাইম সহ ডিপ্লয়মেন্টের আপডেটগুলি ঘটতে দেয়৷ নতুন পডগুলি উপলব্ধ সংস্থান সহ নোডগুলিতে নির্ধারিত হবে৷

আগের মডিউলে আমরা একাধিক দৃষ্টান্ত চালানোর জন্য আমাদের অ্যাপ্লিকেশনটিকে স্কেল করেছি। এটি অ্যাপ্লিকেশন প্রাপ্যতা প্রভাবিত না করে আপডেট সম্পাদন করার জন্য একটি প্রয়োজনীয়তা। ডিফল্টভাবে, আপডেটের সময় সর্বাধিক সংখ্যক পড অনুপলব্ধ হতে পারে এবং সর্বাধিক নতুন পড তৈরি করা যেতে পারে, একটি। উভয় বিকল্পই সংখ্যা বা শতাংশে (পডের) কনফিগার করা যেতে পারে। কুবারনেটিসে, আপডেটগুলি ভার্সন করা হয় এবং যেকোনো ডিপ্লয়মেন্ট আপডেটকে পূর্ববর্তী (স্থিতিশীল) সংস্করণে ফিরিয়ে আনা যায়।

সারাংশঃ

  • একটি অ্যাপ আপডেট করা হচ্ছে

রোলিং আপডেটগুলি নতুনগুলির সাথে পডস দৃষ্টান্তগুলিকে ক্রমবর্ধমানভাবে আপডেট করার মাধ্যমে শূন্য ডাউনটাইম সহ ডিপ্লয়মেন্টের আপডেটগুলি ঘটতে দেয়৷


রোলিং আপডেট ওভারভিউ


অ্যাপ্লিকেশন স্কেলিং-এর অনুরূপ, যদি একটি ডিপ্লয়মেন্ট সর্বজনীনভাবে প্রকাশ করা হয়, পরিষেবাটি আপডেটের সময় শুধুমাত্র উপলব্ধ পডগুলিতে ট্র্যাফিক লোড-ব্যালেন্স করবে। একটি উপলব্ধ পড একটি উদাহরণ যা অ্যাপ্লিকেশন ব্যবহারকারীদের জন্য উপলব্ধ৷

রোলিং আপডেটগুলি নিম্নলিখিত ক্রিয়াগুলিকে অনুমতি দেয়ঃ

  • একটি পরিবেশ থেকে অন্য পরিবেশে একটি অ্যাপ্লিকেশন প্রচার করুন (কন্টেইনার ইমেজ আপডেটের মাধ্যমে)
  • পূর্ববর্তী সংস্করণে রোলব্যাক করুন
  • ক্রমাগত একীকরণ এবং শূন্য ডাউনটাইম সহ অ্যাপ্লিকেশনগুলির ক্রমাগত বিতরণ

যদি একটি ডিপ্লয়মেন্ট পাবলিকলি প্রকাশ করা হয়, পরিষেবাটি আপডেটের সময় শুধুমাত্র উপলব্ধ পডগুলিতে ট্র্যাফিক লোড-ব্যালেন্স করবে।


নিম্নলিখিত ইন্টারেক্টিভ টিউটোরিয়ালে, আমরা আমাদের অ্যাপ্লিকেশনটিকে একটি নতুন সংস্করণে আপডেট করব এবং একটি রোলব্যাকও করব৷


5.2.5.2 - মিথস্ক্রিয় প্রশিক্ষণ - অ্যাপটিকে আধুনিক রূপ দেওয়া

5.2.6 - আপনার অ্যাপটি প্রকাশ্যে প্রকাশ করুন

5.2.6.1 - আপনার অ্যাপ প্রকাশ করতে একটি পরিষেবা ব্যবহার করা

উদ্দেশ্য

  • কুবারনের্টিস-এ একটি পরিষেবা সম্পর্কে জানুন
  • label এবং labelSelector বস্তু একটি পরিষেবার সাথে কিভাবে সম্পর্কিত তা বুঝুন
  • একটি পরিষেবা ব্যবহার করে কুবারনেটিস ক্লাস্টারের বাইরে একটি অ্যাপ্লিকেশন প্রকাশ করুন

কুবারনেটিস পরিষেবার ওভারভিউ

কুবারনেটিস পডগুলো মরণশীল। পডগুলোর একটি জীবনচক্র আছে। যখন একজন কর্মী নোড মারা যায়, তখন নোডে চলমান পডগুলিও হারিয়ে যায়। একটি ReplicaSet আপনার অ্যাপ্লিকেশন চালু রাখতে নতুন পড তৈরির মাধ্যমে গতিশীলভাবে ক্লাস্টারটিকে পছন্দসই অবস্থায় ফিরিয়ে আনতে পারে৷ আরেকটি উদাহরণ হিসাবে, ৩টি প্রতিলিপি সহ একটি চিত্র-প্রসেসিং ব্যাকএন্ড বিবেচনা করুন। সেই প্রতিলিপিগুলি বিনিময়যোগ্য; ফ্রন্ট-এন্ড সিস্টেমের ব্যাকএন্ড প্রতিলিপি বা পড হারিয়ে গেলেও আবার তৈরি করা উচিত নয়। তাতে বলা হয়েছে, কুবারনেটিস ক্লাস্টারের প্রতিটি পডের একটি অনন্য আইপি ঠিকানা রয়েছে, এমনকি একই নোডে থাকা পডস, তাই পডগুলির মধ্যে স্বয়ংক্রিয়ভাবে পরিবর্তনগুলি সমন্বয় করার একটি উপায় থাকা দরকার যাতে আপনার অ্যাপ্লিকেশনগুলি কাজ করতে থাকে ৷

কুবারনেটিস-এ একটি পরিষেবা হল একটি বিমূর্ততা যা পডগুলির একটি যৌক্তিক সেট এবং একটি নীতি যার দ্বারা সেগুলি অ্যাক্সেস করা যায় তা সংজ্ঞায়িত করে৷ পরিষেবাগুলি নির্ভরশীল পডগুলির মধ্যে একটি আলগা সংযোগ সক্ষম করে৷ একটি পরিষেবা YAML (পছন্দের) বা JSON ব্যবহার করে সংজ্ঞায়িত করা হয়, যেমন সমস্ত কুবারনেটিস অবজেক্ট। একটি পরিষেবা দ্বারা লক্ষ্য করা পডের সেট সাধারণত একটি লেবেলনির্বাচক দ্বারা নির্ধারিত হয় (বিশেষে একটি নির্বাচক অন্তর্ভুক্ত না করে কেন আপনি একটি পরিষেবা পেতে পারেন তা নীচে দেখুন)।

যদিও প্রতিটি পডের একটি অনন্য আইপি ঠিকানা রয়েছে, তবে সেই আইপিগুলি পরিষেবা ছাড়া ক্লাস্টারের বাইরে প্রকাশ করা হয় না। পরিষেবাগুলি আপনার অ্যাপ্লিকেশনগুলিকে ট্রাফিক পেতে অনুমতি দেয়৷ ServiceSpec-এ টাইপ উল্লেখ করে পরিষেবাগুলিকে বিভিন্ন উপায়ে প্রকাশ করা যেতে পারে:

  • ClusterIP (ডিফল্ট) - ক্লাস্টারে একটি অভ্যন্তরীণ আইপিতে পরিষেবাটি প্রকাশ করে৷ এই ধরনের পরিষেবা শুধুমাত্র ক্লাস্টারের মধ্যে থেকে পৌঁছানো যায়।
  • NodePort - NAT ব্যবহার করে ক্লাস্টারে প্রতিটি নির্বাচিত নোডের একই পোর্টে পরিষেবাটি প্রকাশ করে। <NodeIP>:<NodePort> ব্যবহার করে ক্লাস্টারের বাইরে থেকে একটি পরিষেবা অ্যাক্সেসযোগ্য করে তোলে। ClusterIP এর সুপারসেট।
  • লোডব্যালেন্সার - বর্তমান ক্লাউডে একটি বাহ্যিক লোড ব্যালেন্সার তৈরি করে (যদি সমর্থিত হয়) এবং পরিষেবাতে একটি নির্দিষ্ট, বাহ্যিক আইপি বরাদ্দ করে৷ নোডপোর্টের সুপারসেট।
  • ExternalName - পরিষেবাটিকে externalName ক্ষেত্রের বিষয়বস্তুতে (যেমন foo.bar.example.com) ম্যাপ করে, একটি CNAME এর মান সহ রেকর্ড করুন। কোন ধরনের প্রক্সি সেট আপ করা হয় না. এই ধরনের v1.7 বা উচ্চতর kube-dns, অথবা CoreDNS সংস্করণ 0.0.8 বা উচ্চতর প্রয়োজন।

বিভিন্ন ধরনের পরিষেবা সম্পর্কে আরও তথ্য উৎস আইপি ব্যবহার করা টিউটোরিয়ালে পাওয়া যাবে। এছাড়াও পরিষেবার সাথে অ্যাপ্লিকেশন সংযোগ করা দেখুন৷

অতিরিক্ত, নোট করুন যে পরিষেবাগুলির সাথে কিছু ব্যবহারের ক্ষেত্রে রয়েছে যেগুলির মধ্যে একটি নির্বাচক সংজ্ঞায়িত করা নেই৷ নির্বাচক ছাড়া তৈরি করা একটি পরিষেবা সংশ্লিষ্ট এন্ডপয়েন্ট অবজেক্ট তৈরি করবে না। এটি ব্যবহারকারীদের ম্যানুয়ালি নির্দিষ্ট শেষ পয়েন্টে একটি পরিষেবা ম্যাপ করতে দেয়। কোন নির্বাচক না থাকার আরেকটি সম্ভাবনা হল আপনি কঠোরভাবে type: ExternalName ব্যবহার করছেন।

সারাংশ

  • বাহ্যিক ট্র্যাফিকের কাছে পডগুলিকে প্রকাশ করা
  • একাধিক পড জুড়ে ভারসাম্যপূর্ণ ট্রাফিক লোড করুন
  • লেবেল ব্যবহার করা

একটি কুবারনেটিস পরিষেবা হল একটি বিমূর্ত স্তর যা পডগুলির একটি যৌক্তিক সেটকে সংজ্ঞায়িত করে এবং সেই পডগুলির জন্য বহিরাগত ট্রাফিক এক্সপোজার, লোড ব্যালেন্সিং এবং পরিষেবা আবিষ্কার সক্ষম করে৷


পরিষেবা এবং লেবেল

একটি পরিষেবা পডের একটি সেট জুড়ে ট্রাফিককে রুট করে। পরিষেবাগুলি হল বিমূর্ততা যা আপনার আবেদনকে প্রভাবিত না করেই কুবারনেটে পডগুলিকে মরতে এবং প্রতিলিপি তৈরি করতে দেয়৷ নির্ভরশীল পডগুলির মধ্যে আবিষ্কার এবং রাউটিং (যেমন একটি অ্যাপ্লিকেশনে ফ্রন্টএন্ড এবং ব্যাকএন্ড উপাদান) Kubernetes পরিষেবা দ্বারা পরিচালিত হয়৷

পরিষেবাগুলি লেবেল এবং নির্বাচকদের ব্যবহার করে পডের একটি সেটের সাথে মেলে, একটি আদিম গ্রুপিং যা কুবারনেটসের বস্তুতে লজিক্যাল অপারেশনের অনুমতি দেয় . লেবেল হল কী/মান জোড়া বস্তুর সাথে সংযুক্ত এবং যেকোনো উপায়ে ব্যবহার করা যেতে পারে:

  • উন্নয়ন, পরীক্ষা এবং উৎপাদনের জন্য মনোনীত বস্তু
  • এম্বেড সংস্করণ ট্যাগ
  • ট্যাগ ব্যবহার করে একটি বস্তুকে শ্রেণীবদ্ধ করুন


লেবেলগুলি তৈরির সময় বা পরে বস্তুর সাথে সংযুক্ত করা যেতে পারে। এগুলি যে কোনও সময় পরিবর্তন করা যেতে পারে। আসুন এখন একটি পরিষেবা ব্যবহার করে আমাদের অ্যাপ্লিকেশনটি প্রকাশ করি এবং কিছু লেবেল প্রয়োগ করি৷


5.2.6.2 - ইন্টারেক্টিভ টিউটোরিয়াল - আপনার অ্যাপ প্রকাশ করা

5.3 - কনফিগারেশন

5.3.1 - উদাহরণ: একটি জাভা মাইক্রোসার্ভিস কনফিগার করা

5.4 - নিরাপত্তা

কুবারনেটিস ক্লাস্টার পরিচালনাকারী বেশিরভাগ সংস্থা এবং লোকেদের জন্য নিরাপত্তা একটি গুরুত্বপূর্ণ উদ্বেগ। আপনি একটি মৌলিক নিরাপত্তা চেকলিস্ট খুঁজে পেতে পারেন কুবারনেটিস ডকুমেন্টেশনের অন্যত্র ।

কুবারনেটিসের নিরাপত্তার দিকগুএও কীভাবে স্থাপন এবং পরিচালনা করতে হয় তা শিখতে, আপনি এই বিভাগে টিউটোরিয়ালগুলো অনুসরণ করতে পারেন।

5.5 - স্টেটলেস অ্যাপ্লিকেশন

5.6 - স্টেটফুল অ্যাপ্লিকেশন

5.7 - সেবা

6 - রেফারেন্স

কুবারনেটিস ডকুমেন্টেশনের এই বিভাগে রেফারেন্স রয়েছে।

API রেফারেন্স

অফিসিয়ালি সাপোর্টেড ক্লায়েন্ট লাইব্রেরি

একটি প্রোগ্রামিং ভাষা থেকে কুবারনেটিস API কল করতে, আপনি ব্যবহার করতে পারেন ক্লায়েন্ট লাইব্রেরি. অফিসিয়ালি সাপোর্টেড ক্লায়েন্ট লাইব্রেরিগুলো:

CLI

  • kubectl - কমান্ড চালানো এবং কুবারনেটিস ক্লাস্টার পরিচালনার জন্য প্রধান CLI টুল।
    • JSONPath - সিনট্যাক্স গাইড JSONPath expressions kubectl এর সাথে ব্যবহারের জন্য ।
  • kubeadm - CLI টুল যা সহজে একটি নিরাপদ কুবারনেটিস ক্লাস্টার সরবরাহ করতে পারে।

উপাদান

  • kubelet - প্রাথমিক এজেন্ট যা প্রতিটি নোডে চলে। kubelet টি পডস্পেকসের একটি সেট নেয় এবং নিশ্চিত করে যে বর্ণিত কন্টেইনার গুলো চলমান এবং স্বাস্থ্যকর।

  • kube-apiserver - REST API যা API অবজেক্ট যেমন পড, সার্ভিস, রেপ্লিকেশন কন্ট্রোলারের জন্য ডেটা যাচাই করে এবং কনফিগার করে।

  • kube-controller-manager - ডেমন(Daemon) যা কুবারনেটসের সাথে পাঠানো মূল কন্ট্রোল লুপগুলোকে এম্বেড করে।

  • kube-proxy - ব্যাক-এন্ডের একটি সেট জুড়ে সাধারণ TCP/UDP স্ট্রিম ফরওয়ার্ডিং বা রাউন্ড-রবিন TCP/UDP ফরওয়ার্ডিং করতে পারে।

  • kube-scheduler - শিডিউলার যে প্রাপ্যতা, পারফরমেন্স, এবং ক্ষমতা পরিচালনা করে।

কনফিগ API গুলো

এই বিভাগটি "unpublished" API-এর জন্য ডকুমেন্টেশন হোস্ট করে যা কুবারনেটিস উপাদান বা টুল কনফিগার করতে ব্যবহৃত হয়। এই API গুলোর বেশিরভাগই API সার্ভার দ্বারা RESTful উপায়ে প্রকাশ করা হয় না যদিও সেগুলো একটি ব্যবহারকারী বা অপারেটরের জন্য একটি ক্লাস্টার ব্যবহার বা পরিচালনা করার জন্য অপরিহার্য।

kubeadm এর জন্য কনফিগ API

এক্সটার্নাল API গুলো

এগুলো হলো কুবারনেটিস প্রকল্প দ্বারা সংজ্ঞায়িত API, কিন্তু মূল প্রকল্প দ্বারা বাস্তবায়িত হয় না:

ডিজাইন ডক্স

কুবারনেটিস কার্যকারিতার জন্য ডিজাইন ডক্সের একটি সংরক্ষণাগার। ভাল শুরু পয়েন্ট হয় কুবারনেটিস আর্কিটেকচার এবং কুবারনেটিস ডিজাইন ওভারভিউ

6.1 - শব্দকোষ

7 - কুবারনেটিসে অবদান

কুবারনেটিসে অবদান রাখার অনেক উপায় আছে। আপনি নতুন ফিচারগুলোর জন্য ডিজাইনে কাজ করতে পারেন, আপনি আমাদের কাছে ইতিমধ্যে থাকা কোডটি ডকুমেন্ট করতে পারেন, আপনি আমাদের ব্লগের জন্য লিখতে পারেন। আরও আছে: আপনি সেই নতুন ফিচারগুলোর বাস্তবায়ন করতে পারেন বা বাগগুলি ঠিক করতে পারেন৷ আপনি লোকেদের আমাদের অবদানকারী কমিউনিটিতে যোগ দিতে সাহায্য করতে পারেন, বা বিদ্যমান অবদানকারীদের সাপোর্ট করতে পারেন৷

এই সমস্ত ভিন্ন উপায়ে প্রকল্পে পার্থক্য আনতে, আমরা - কুবারনেটিস - একটি ডেডিকেটেড ওয়েবসাইট তৈরি করেছি: https://k8s.dev/। কুবারনেটিসে অবদান রাখার বিষয়ে আরও জানতে আপনি সেখানে যেতে পারেন।

আপনি যদি বিশেষভাবে এই ডকুমেন্টেশনে অবদান রাখার বিষয়ে জানতে চান, পড়ুন কুবারনেটিস ডকুমেন্টেশনে অবদান রাখুন

এছাড়াও আপনি পড়তে পারেন CNCF পৃষ্ঠা কুবারনেটিস অবদান সম্পর্কে।