kubectl প্রয়োগ বনাম কুবেটেল তৈরি?


266

ডকুমেন্টেশন দ্বারা আমি যা বুঝতে পেরেছি তা হ'ল:

  • kubectl create = ক্লাস্টারে একটি নতুন কে 8 এস রিসোর্স তৈরি করে
  • kubectl প্রতিস্থাপন = লাইভ ক্লাস্টারে একটি সংস্থান আপডেট করে
  • kubectl প্রয়োগ = আমি তৈরি করতে চাইলে + প্রতিস্থাপন ( রেফারেন্স )

আমার প্রশ্নগুলি হয়

  1. একটি ক্লাস্টারে একই কাজ করার জন্য কেন তিনটি অপারেশন রয়েছে?
  2. এই অপারেশনগুলির জন্য ব্যবহারের ক্ষেত্রে কী কী?
  3. হুডের নীচে তারা একে অপরের থেকে কীভাবে আলাদা?

উত্তর:


314

সেগুলি দুটি ভিন্ন পন্থা:

অত্যাবশ্যক ব্যবস্থাপনা

kubectl createযাকে আমরা ইমপিটেটিভ ম্যানেজমেন্ট বলি । এই পদ্ধতির উপরে আপনি কুবেরনেটস এপিআইকে বলবেন যে আপনি কী তৈরি করতে চান, প্রতিস্থাপন করতে বা মুছতে চান, আপনি কীভাবে আপনার কে 8 এর ক্লাস্টার ওয়ার্ল্ড দেখতে চান তা নয়।

ডিক্লারেটিভ ম্যানেজমেন্ট

kubectl applyডিক্লারেটিভ ম্যানেজমেন্ট পদ্ধতির অংশ , যেখানে আপনি কোনও লাইভ অবজেক্টে (যেমন মাধ্যমে scale) প্রয়োগ করেছেন এমন পরিবর্তনগুলি " রক্ষণাবেক্ষণ " করা হয় এমনকি আপনি যদি applyবস্তুতে অন্য পরিবর্তন করেন তবে।

কুবেরনেটস অবজেক্ট ম্যানেজমেন্ট ডকুমেন্টেশনে আপনি আবশ্যকীয় এবং ঘোষণামূলক পরিচালনা সম্পর্কে আরও পড়তে পারেন ।


24
কোনটি তখন প্রযোজনায় ব্যবহৃত হবে?
যোগেশ জিল্লাওয়ার

11
@ যোগেশজিলহোয়ার উভয়ই প্রযোজনায় কাজ করার বৈধ উপায়।
গ্যাভাল

2
সুতরাং সংক্ষেপে, এটি আংশিক প্যাচ বনাম পুরো অবজেক্ট সংশোধনের মতো?
Ryall

12
এই উত্তরটি এই দুটি অপারেশন kubectl createএবং kubectl applyঅভিন্ন প্রভাব আছে কিনা তা নিশ্চিত করে না।
নওয়াজ

61
@ নাওয়াজ - তারা বিভিন্ন কাজ করে। kubectl createযদি সংস্থানটি ইতিমধ্যে বিদ্যমান থাকে তবে একটি ত্রুটি ফেলবে। kubectl applyনা। পার্থক্যটি হ'ল kubectl createবিশেষত "এই জিনিসটি তৈরি করুন" kubectl applyবলেছে যেখানে "এটির মতো দেখানোর জন্য প্রয়োজনীয় যা কিছু করা (তৈরি, আপডেট করা ইত্যাদি) করুন" says
মিঃ ল্লামা

44

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

আপনি যা করতে পারেন তা প্রয়োগ--dry-run=true এবং -o yamlবিকল্পের মাধ্যমে আপনার আবশ্যক কমান্ডের আউটপুট প্রয়োগ (ঘোষণামূলক প্যাটার্ন) করা :

kubectl create whatever --dry-run=true -o yaml | kubectl apply -f -

উপরোক্ত কমান্ডটি যদি উত্সটি ইতিমধ্যে উপস্থিত থাকে তবে ত্রুটি বাড়ানো হবে না (এবং প্রয়োজনে সংস্থানটি আপডেট করবে)।

এটি এমন কিছু ক্ষেত্রে কার্যকর যেখানে আপনি ঘোষণামূলক প্যাটার্ন ব্যবহার করতে পারবেন না (উদাহরণস্বরূপ ডকার-রেজিস্ট্রি গোপন তৈরি করার সময়)।


বিকল্পভাবে, --ignore- খুঁজে পাওয়া যায় না পতাকা সহ, উত্স তৈরি করার আগে এটি মুছুন । এটি ইতিমধ্যে ত্রুটি বাড়িয়ে তুলবে না । উদাহরণস্বরূপ:kubectl delete deployment nginx --ignore-not-found; kubectl create deployment nginx --image=nginx
নোয়াম মানস

33

আমার বোধগম্যতার থেকে কেবল আরও সরাসরি উত্তর দেওয়ার জন্য:

apply- তোলে একটি বিদ্যমান বস্তু বৃদ্ধিজনিত পরিবর্তন
create- (পূর্বে অ বিদ্যমান / মুছে ফেলা হয়েছে) একটি সম্পূর্ণ নতুন বস্তু সৃষ্টি


একটি থেকে এই গ্রহণ DigitalOcean নিবন্ধ যা Kubernetes ওয়েবসাইট লিঙ্ক করা হয়েছে:

আমরা এখানে তৈরির পরিবর্তে প্রয়োগটি ব্যবহার করি যাতে ভবিষ্যতে আমরা ক্রমাগতভাবে সম্পূর্ণরূপে ওভাররাইটের পরিবর্তে ইনগ্রেশন কন্ট্রোলার সামগ্রীগুলিতে পরিবর্তনগুলি প্রয়োগ করতে পারি।


তাই কি? যেমন আমরা যখন ডকার-রচনাটি ব্যবহার করি: + ব্যবহারের applyমতো docker-compose up -d+ ব্যবহারের createমতো docker-compose up -d --build?
হুইস্ক্প

8

এগুলি হ'ল আবশ্যকীয় আদেশসমূহ :

kubectl run = kubectl create deployment

সুবিধাদি:

  • সহজ, শেখার জন্য সহজ এবং মনে রাখা সহজ।
  • ক্লাস্টারে পরিবর্তন করতে শুধুমাত্র একটি পদক্ষেপের প্রয়োজন।

অসুবিধা:

  • পরিবর্তন পর্যালোচনা প্রক্রিয়াগুলির সাথে একীভূত করবেন না।
  • পরিবর্তনের সাথে যুক্ত একটি নিরীক্ষণের ট্রেইল সরবরাহ করবেন না।
  • লাইভ ছাড়া কেবল রেকর্ডের উত্স সরবরাহ করবেন না।
  • নতুন অবজেক্ট তৈরি করার জন্য কোনও টেম্পলেট সরবরাহ করবেন না।

এগুলি হ'ল আবশ্যিক অবজেক্ট কনফিগারেশন :

kubectl create -f your-object-config.yaml

kubectl delete -f your-object-config.yaml

kubectl replace -f your-object-config.yaml

অপরিহার্য আদেশের তুলনায় সুবিধা:

  • গিটের মতো উত্স নিয়ন্ত্রণ সিস্টেমে সংরক্ষণ করা যেতে পারে।
  • ধাক্কা এবং নিরীক্ষণের ট্রেইলের আগে পরিবর্তনগুলি পর্যালোচনা করার মতো প্রক্রিয়াগুলির সাথে সংহত করতে পারে।
  • নতুন অবজেক্ট তৈরির জন্য একটি টেম্পলেট সরবরাহ করে।

অপরিহার্য আদেশের তুলনায় অসুবিধা:

  • অবজেক্ট স্কিমা সম্পর্কে প্রাথমিক বোঝার প্রয়োজন।
  • ওয়াইএএমএল ফাইল লেখার অতিরিক্ত পদক্ষেপের প্রয়োজন।

ঘোষণামূলক অবজেক্ট কনফিগারের সাথে তুলনা করে সুবিধাগুলি:

  • সহজ এবং বুঝতে সহজ।
  • কুবেরনেটস সংস্করণ 1.5 এর পরে আরও পরিপক্ক।

ঘোষণামূলক অবজেক্ট কনফিগারেশনের তুলনায় অসুবিধা:

  • ডিরেক্টরিগুলিতে নয়, ফাইলগুলিতে সবচেয়ে ভাল কাজ করে।
  • লাইভ অবজেক্টের আপডেটগুলি অবশ্যই কনফিগারেশন ফাইলগুলিতে প্রতিবিম্বিত হতে হবে বা পরবর্তী প্রতিস্থাপনের সময় সেগুলি হারিয়ে যাবে।

এগুলি হ'ল ঘোষণামূলক অবজেক্ট কনফিগারেশন

kubectl diff -f configs/

kubectl apply -f configs/

অপরিহার্য অবজেক্ট কনফিগারারের সাথে তুলনা করে সুবিধাগুলি:

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

অপরিহার্য অবজেক্ট কনফিগারেশনের তুলনায় অসুবিধা:

  • ফলগুলি অপ্রত্যাশিত হলে ডিবাগ করা এবং বোঝা আরও শক্ত।
  • ডিফগুলি ব্যবহার করে আংশিক আপডেটগুলি জটিল মার্জ এবং প্যাচ ক্রিয়াকলাপ তৈরি করে।

3

অফিসিয়াল ডকুমেন্টেশন থেকে নীচের ব্যাখ্যা আমাকে বুঝতে সাহায্য করেছে kubectl apply

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

kubectl create অন্যদিকে সংস্থান তৈরি করতে হবে (অস্তিত্ব থাকা উচিত)।


1

kubectl তৈরি করুন একটি অবজেক্ট কনফিগারেশন ফাইলের সাথে কাজ পারে। এটি অপরিহার্য পরিচালনা হিসাবেও পরিচিত

kubectl create -f filename | url

kubectl অ্যাপ্লিকেশন কনফিগারেশন yaml ফাইল ধারণকারী ডিরেক্টরি এবং এটির উপ ডিরেক্টরিগুলির সাথে কাজ করে apply এটি ঘোষিত ব্যবস্থাপনা হিসাবেও পরিচিত। ডিরেক্টরি থেকে একাধিক অবজেক্ট কনফিগারেশন ফাইল বাছাই করা যেতে পারে। kubectl প্রয়োগ-ডিরেক্টরি ডিরেক্টরি /

বিশদ:
https://kubernetes.io/docs/tasks/manage-kubernetes-objects/declarative-config/ https://kubernetes.io/docs/tasks/manage-kubernetes-objects/imperative-config/


0

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

"তৈরি" হ'ল জিনিসগুলি নিজের হাতে নিয়ে playingশ্বরকে খেলার মতো। স্থানীয় ডিবাগিংয়ের জন্য এটি ভাল যখন আপনি কেবলমাত্র POD এর সাথে কাজ করতে চান এবং আবশ্যক ডিপ্লোয়মেন্ট / প্রতিলিপি নিয়ন্ত্রণকারীর যত্ন নেবেন না।

"প্রয়োগ" নিয়ম অনুসারে খেলছে। "প্রয়োগ" হ'ল একটি মাস্টার সরঞ্জামের মতো যা আপনাকে তৈরি করতে এবং সংশোধন করতে সহায়তা করে এবং পোডগুলি পরিচালনা করতে আপনার কাছ থেকে কোনও কিছুই প্রয়োজন হয় না।

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