কীভাবে গ্র্যাকউড এবং মিনিক्यूबের মধ্যে কুবেক্টেল ক্লাস্টারগুলি স্যুইচ করা যায়


124

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

বর্তমানে আমাকে প্রতিটি পরিবেশের সাথে স্বতন্ত্রভাবে কাজ করা দরকার: আমার স্থানীয় পরিবেশে আমার ওয়াইএএমএল ফাইলগুলি সম্পাদনা করতে হবে এবং যখন প্রস্তুত হবে তখন (গিট) এগুলিকে একটি জিসিই পরিবেশে ক্লোন করতে হবে এবং তারপরে সেগুলি ব্যবহার / মোতায়েন করতে হবে। এটি কিছুটা কষ্টকর প্রক্রিয়া।

আদর্শভাবে, আমি স্থানীয় মিনিক्यूब বা জিসিই কুবারনেটস পরিবেশের মধ্যে সহজেই স্যুইচ করতে এবং YAML ফাইলগুলি কোথায় ব্যবহৃত হয় তা সহজেই নির্ধারণ করতে আমার ম্যাকবুক থেকে কুবেক্টেলটি ব্যবহার করতে চাই। এটি করার জন্য প্রসঙ্গে পাল্টানোর কোনও সহজ উপায় আছে?

উত্তর:


235

আপনি স্থানীয় (মিনিক्यूब) থেকে গ্লকউডে ফিরে যেতে পারেন এবং এর মাধ্যমে ফিরে যেতে পারেন:

kubectl config use-context CONTEXT_NAME

সমস্ত প্রসঙ্গে তালিকার জন্য:

kubectl config get-contexts

আপনি স্থানীয় এবং gcloud জন্য বিভিন্ন পরিবেশ তৈরি করতে এবং এটি পৃথক yaml ফাইলে রাখতে পারেন।


5
আপনি কীভাবে এটি আপনার কুবেেক্টেল প্রসঙ্গে যুক্ত করবেন? এটি করার জন্য কি gcloud কমান্ড এসেছে? এটি খুঁজে পেয়েছে: cl গ্লকউড কনটেইনার ক্লাস্টারগুলি শংসাপত্রগুলি পাবে als CLUSTER_NAME
জাস্টিন থমাস

উপরেরগুলি আমাকে মূল প্রসঙ্গটি grep 'name:' ~/.kube/configদেখায়নি , তবে করেছিল। এটি ছিল minikube, তাই আমি এটিতে ফিরে যেতে পারিkubectl config use-context minikube
জর্ডান মরিস

10

স্ট্যান্ডার্ড কুবেক্টেল কমান্ডের একটি দ্রুত শর্টকাট হ'ল কুবেেক্টেক্স ব্যবহার করা :

  • প্রসঙ্গ তালিকা: kubectx
    • সমতুল্য kubectl config get-contexts
  • প্রসঙ্গে স্যুইচ করুন (ফুও): kubectx foo
    • সমতুল্য kubectl config use-context foo

ম্যাকোজে ইনস্টল করতে: brew install kubectx

কুবেক্টেক্স প্যাকেজে নামধারী নামগুলির স্থান পরিবর্তন করার জন্য একই জাতীয় সরঞ্জাম রয়েছে kubens

আপনি নিয়মিত একাধিক প্রসঙ্গ এবং নেমস্পেসে কাজ করলে এই দুটি অত্যন্ত সুবিধাজনক।

আরও তথ্য: https://ahmet.im/blog/kubectx/


6

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


এটি কোনও মন্তব্যের মতো প্রদর্শিত হবে তবে কোনও উত্তর নয়।
কোডারপিসি

এটি দুর্দান্ত উত্তর (বিশেষত gcloud container clusters get-credentials $CLUSTER_NAMEজাস্টিন থমাসের গৃহীত উত্তরের মন্তব্যের সাথে মিলিত )।
thebjorn

3

সর্বশেষ 2020 উত্তর এখানে আছে,

কুবেকেটেল প্রসঙ্গের মধ্যে স্যুইচ করার একটি সহজ উপায়,

kubectl top nodes **--context=**context01name

kubectl top nodes --context=context02name

আপনি কনটেক্সট নামটি এনএনভি হিসাবে কনটেক্সট 011 নাম = গেকে _ {{গুগল_সিএলএউডি_প্রোজেট} _ইস-সেন্ট্রাল 1-এ_ স্ট্যান্ডার্ড-ক্লাস্টার -1 এর মতো সংরক্ষণ করতে পারেন


2

টিএল; ডিআর: আমি অ্যাপলস্ক্রিপ্টের মাধ্যমে কুবারনেটস প্রসঙ্গে পাল্টাতে একটি জিইউআই তৈরি করেছি। আমি এটিকে shif-cmd-x এর মাধ্যমে সক্রিয় করি।

আমারও একই সমস্যা ছিল। কমান্ড লাইনের দ্বারা এটি ব্যথার পরিবর্তনের প্রসঙ্গ ছিল। নিম্নলিখিত অ্যাপলস্ক্রিপ্টটি চালানোর জন্য আমি একটি কী কম্বো (shift-cmd-x) সেট করতে ফাস্টস্ক্রিপ্ট ব্যবহার করেছি (এই ডিরেক্টরিতে স্থাপন করা হয়েছে: $ (হোম) / গ্রন্থাগার / স্ক্রিপ্ট / অ্যাপ্লিকেশন / টার্মিনাল)।

use AppleScript version "2.4" -- Yosemite (10.10) or later
use scripting additions

do shell script "/usr/local/bin/kubectl config current-context"
set curcontext to result

do shell script "/usr/local/bin/kubectl config get-contexts -o name"
set contexts to paragraphs of result

choose from list contexts with prompt "Select Context:" with title "K8s Context Selector" default items {curcontext}
set scriptArguments to item 1 of result

do shell script "/usr/local/bin/kubectl config use-context " & scriptArguments

display dialog "Switched to " & scriptArguments buttons {"ok"} default button 1


1

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

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

ওয়ার্ডপ্রেস চার্টের উদাহরণ নিতে , আপনার দুটি পরিবেশের জন্য দুটি পৃথক কমান্ড থাকতে পারে:

দেবের জন্য:

helm install --name dev-release --set \ wordpressUsername=dev_admin, \ wordpressPassword=dev_password, \ mariadb.mariadbRootPassword=dev_secretpassword \ stable/wordpress

এই মানগুলি সিএলআই-তে পাস করার প্রয়োজন নেই যদিও আপনি মানগুলি যথাযথভাবে একটি ফাইলে সংরক্ষণ values.ymlকরতে পারেন এবং বিভিন্ন পরিবেশের জন্য আপনার আলাদা আলাদা ফাইল থাকতে পারে

হেল্ট চার্টের মানগুলিতে রূপান্তর করার জন্য আপনার কিছু কাজ প্রয়োজন হবে, তবে প্রচেষ্টাটি তার পক্ষে কার্যকর হবে।


1

বিভিন্ন কুবেরনেট এনভায়রনমেন্টগুলি (ওরফে কুবেরনেটস প্রসঙ্গে) স্যুইচিং / রিডিং / ম্যানিপুলেট করার ক্যানোনিকাল উত্তরটি হ'ল মার্ক যেমন উল্লেখ করেছেন, ব্যবহার করার জন্য kubectl configনীচে দেখুন:

$ kubectl config                                                                                                                                                                                                                 
Modify kubeconfig files using subcommands like "kubectl config set current-context my-context"

Available Commands:
  current-context Displays the current-context
  delete-cluster  Delete the specified cluster from the kubeconfig
  delete-context  Delete the specified context from the kubeconfig
  get-clusters    Display clusters defined in the kubeconfig
  get-contexts    Describe one or many contexts
  rename-context  Renames a context from the kubeconfig file.
  set             Sets an individual value in a kubeconfig file
  set-cluster     Sets a cluster entry in kubeconfig
  set-context     Sets a context entry in kubeconfig
  set-credentials Sets a user entry in kubeconfig
  unset           Unsets an individual value in a kubeconfig file
  use-context     Sets the current-context in a kubeconfig file
  view            Display merged kubeconfig settings or a specified kubeconfig file

Usage:
  kubectl config SUBCOMMAND [options]

দৃশ্যের পিছনে, এখানে একটি ~/.kube/configওয়াইএমএল ফাইল রয়েছে যা প্রতিটি উপলক্ষে প্রাসঙ্গিক প্রমাণপত্রাদি এবং প্রসঙ্গের জন্য শেষ পয়েন্টগুলি সহ সমস্ত উপলভ্য প্রসঙ্গ সংরক্ষণ করে।

শেল্ফটি বন্ধ কুবেক্টল বিভিন্ন কুবেরনেটস প্রসঙ্গগুলি পরিচালনা করা সহজ করে না আপনি সম্ভবত ইতিমধ্যে জানেন। আপনার নিজের স্ক্রিপ্টটি সমস্ত পরিচালনা করার পরিবর্তে kubectx, কুবেরনেটস / গুগল ক্লাউড প্ল্যাটফর্ম বিকাশকারী দলের এমন একটি গুগলারের দ্বারা নির্মিত একটি পরিপক্ক সরঞ্জাম বলা উচিত , যা এই জাতীয় সরঞ্জাম তৈরি করে Team আমি এটি উচ্চ প্রস্তাব।

https://github.com/ahmetb/kubectx

$ kctx --help                                                                                                                                                                                                                  
USAGE:
  kubectx                       : list the contexts
  kubectx <NAME>                : switch to context <NAME>
  kubectx -                     : switch to the previous context
  kubectx <NEW_NAME>=<NAME>     : rename context <NAME> to <NEW_NAME>
  kubectx <NEW_NAME>=.          : rename current-context to <NEW_NAME>
  kubectx -d <NAME> [<NAME...>] : delete context <NAME> ('.' for current-context)
                                  (this command won't delete the user/cluster entry
                                  that is used by the context)

  kubectx -h,--help         : show this message

1

সর্বশেষতম (ডকের 19.03) docker contextকমান্ডটিও পরীক্ষা করে দেখুন

Ajeet সিং রায়না ) এটা প্রকাশ করে " Docker 19.03.0 প্রাক বিজ্ঞপ্তিঃ ফাস্ট প্রসঙ্গ পালটানোর, অমূল Docker, সোয়ার্ম পরিষেবার জন্য Sysctl সমর্থন "

প্রসঙ্গ স্যুইচিং

একটি প্রসঙ্গটি মূলত এমন একটি কনফিগারেশন যা আপনি কোনও নির্দিষ্ট ক্লাস্টারে অ্যাক্সেস করতে ব্যবহার করেন।

বলুন, উদাহরণস্বরূপ, আমার বিশেষ ক্ষেত্রে আমার কাছে ৪ টি আলাদা ক্লাস্টার রয়েছে - স্থানীয় এবং দূরবর্তীভাবে স্বর্ম এবং কুবারনেটসের মিশ্রণ।
ধরে নিন যে আমার ডেস্কটপ মেশিনে আমার একটি ডিফল্ট ক্লাস্টার রয়েছে, গুগল ক্লাউড প্ল্যাটফর্মে চলমান ২ টি নোড সোর্ম ক্লাস্টার, ডকার খেলার মাঠের সাথে প্লেতে চলছে 5-নোড ক্লাস্টার এবং মিনিক्यूबে একটি একক নোড কুবারনেটস ক্লাস্টার চলছে এবং আমার সুন্দর অ্যাক্সেস করতে হবে নিয়মিতভাবে।

ডকার প্রসঙ্গে সিএলআই ব্যবহার করে সেকেন্ডে প্রোডাকশন ক্লাস্টারে পরীক্ষা করতে আমি সহজেই একটি ক্লাস্টার (যা আমার বিকাশ ক্লাস্টার হতে পারে) থেকে স্যুইচ করতে পারি।

$ sudo docker context --help
Usage:  docker context COMMAND
Manage contexts
Commands:
  create      Create a context
  export      Export a context to a tar or kubeconfig file
  import      Import a context from a tar file
  inspect     Display detailed information on one or more contexts
  ls          List contexts
  rm          Remove one or more contexts
  update      Update a context
  use         Set the current docker context
Run 'docker context COMMAND --help' for more information on a command.

উদাহরণ স্বরূপ:

[:)Captain'sBay=>sudo docker context ls
NAME                DESCRIPTION                               DOCKER ENDPOINT               KUBERNETES ENDPOINT                 ORCHESTRATOR
default *           Current DOCKER_HOST based configuration   unix:///var/run/docker.sock   https://127.0.0.1:16443 (default)   swarm
swarm-context1 

0

আপনি যদি বিভিন্ন প্রসঙ্গের মধ্যে স্যুইচ করার কোনও সহজ উপায় খুঁজছেন তবে এটি হয়ত সাহায্য করবে।

আমি দ্বারা অনুপ্রাণিত হন kubectxএবং kswitchস্ক্রিপ্ট ইতিমধ্যে উল্লেখ করা হয়েছে, যা আমি সবচেয়ে ব্যবহার-ক্ষেত্রে সুপারিশ করতে পারে। তারা স্যুইচিং টাস্কটি সমাধানে সহায়তা করছে, তবে কিছু বড় বা কম মানক কনফিগারেশনগুলিতে আমার জন্য ব্রেক করছে ~/.kube/config। তাই আমি চারপাশে একটি সিস-এক্সিকিউট ইনভোকেশন র‌্যাপার এবং একটি ছোট হাত তৈরি করেছি kubectl

আপনি যদি প্যারাম ছাড়াই কে কল করেন তবে আপনি প্রসঙ্গটি স্যুইচ করার জন্য একটি বাধা প্রম্পট দেখতে পাবেন।

Switch kubectl to a different context/cluster/namespace.
Found following options to select from:
 >>> context: [1] franz
 >>> context: [2] gke_foo_us-central1-a_live-v1
 >>> context: [3] minikube
 --> new num [?/q]:

আরও, kএকটি স্বল্প হাত হিসাবে কাজ চালিয়ে যান। নিম্নলিখিত সমতুল্য:

kubectl get pods --all-namespaces
k get pods -A
k p -A


0

সমস্ত প্রসঙ্গ পেতে

C:\Users\arun>kubectl config get-contexts

বর্তমান প্রসঙ্গ পেতে

C:\Users\arun>kubectl config current-context

প্রসঙ্গ পরিবর্তন করতে

C:\Users\arun>kubectl config use-context <any context name from above list>

-1

হ্যাঁ, আমি মনে করি এটিই আপনার সম্পর্কে জিজ্ঞাসা করছে। আপনার বর্তমান কনফিগারেশন দেখতে, কুবেক্টেল কনফিগারেশন ভিউ ব্যবহার করুন। নিম্নলিখিত স্থানগুলি থেকে ক্রুটেড লোড এবং মার্জ কনফিগার (ক্রমানুসারে)

--kubeconfig=/path/to/.kube/config command line flag
KUBECONFIG=/path/to/.kube/config env variable
$HOME/.kube/config  - The DEFAULT

আমি একাধিক ক্লাস্টারের মধ্যে অনেকটা স্যুইচ করার পরে আমি --kubeconfig ব্যবহার করি। এটি কিছুটা কষ্টকর কিন্তু এটি ভালভাবে কাজ করে।

আরও তথ্যের জন্য এই দেখুন। https://kubernetes.io/docs/tasks/administer-cluster/share-configration/ এবং https://kubernetes.io/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/


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