{"id":32283,"date":"2019-10-31T21:46:07","date_gmt":"2019-10-31T18:46:07","guid":{"rendered":"https:\/\/prohoster.info\/blog\/klusterkit\/"},"modified":"2019-10-31T21:46:07","modified_gmt":"2019-10-31T18:46:07","slug":"klusterkit","status":"publish","type":"post","link":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/klusterkit","title":{"rendered":"KlusterKit","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h2 id=\"klusterkit-nabor-instrumentov-s-otkrytym-ishodnym-kodom-dlya-uproscheniya-deploev-kubernetes-i-raboty-v-fizicheski-izolirovannyh-lokalnyh-sredah\">KlusterKit: et s\u00e6t v\u00e6rkt\u00f8jer med \u00e5ben kildekode til forenkling af Kubernetes-deployeringer og drift i fysisk isolerede lokale milj\u00f8er<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"KlusterKit\" src=\"\/wp-content\/uploads\/2019\/04\/52d94ced35948048c526188d866d71ae.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>I dag er vi glade for at annoncere, at Platform9 \u00e5bner kildekoderne til Klusterkit, et s\u00e6t af tre v\u00e6rkt\u00f8jer, under Apache v2.0-licensen p\u00e5 GitHub.<\/p>\n<p><\/p>\n<p>Vores kunder implementerer software i private datacentre, der ofte ikke er forbundet til internettet (af sikkerhedsm\u00e6ssige eller andre \u00e5rsager). Disse store virksomheder \u00f8nsker at udnytte fordelene ved Kubernetes og modernisere deres applikationer, mens de implementerer dem i forskellige datacentre, som ofte ikke har forbindelse til omverdenen. Her kommer Klusterkit til hj\u00e6lp, da det forenkler levering og administration af K8s-klynger i fysisk isolerede milj\u00f8er.<\/p>\n<p><\/p>\n<p>Klusterkit inkluderer tre uafh\u00e6ngige v\u00e6rkt\u00f8jer, der kan bruges sammen eller hver for sig til at administrere livscyklussen for en production-klynge af Kubernetes:<\/p>\n<p><\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes-sigs\/etcdadm\">etcdadm<\/a><\/noindex>, et CLI til forenklet administration af etcd-klyngen.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/platform9\/nodeadm\">nodeadm<\/a><\/noindex>, et CLI til administration af noder, der supplerer kubeadm og h\u00e5ndterer afh\u00e6ngigheder, som kubeadm har brug for.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/platform9\/cctl\">cctl<\/a><\/noindex>, et livscycle management-v\u00e6rkt\u00f8j, der benytter Cluster API fra Kubernetes-samfundet og bruger nodeadm og etcdadm til problemfrit at levere og vedligeholde h\u00f8jtilg\u00e6ngelige Kubernetes-klynger i lokale og ogs\u00e5 fysisk isolerede milj\u00f8er.<\/li>\n<\/ol>\n<p><\/p>\n<p>Sammen udf\u00f8rer disse tre v\u00e6rkt\u00f8jer f\u00f8lgende opgaver:<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<ul>\n<li>Nem levering og administration af en h\u00f8jtilg\u00e6ngelig etcd-klynge og Kubernetes kontrolpanel i fysisk isolerede lokale milj\u00f8er via Cluster API.<\/li>\n<li>Gendannelse af klyngens kontrolpanel efter et nedbrud ved hj\u00e6lp af etcd-backup.<\/li>\n<li>Pakning af alle artefakter, der kr\u00e6ves for levering af Kubernetes, i fysisk isolerede milj\u00f8er.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"vozmozhnosti-klusterkit\">Mulighederne ved Klusterkit<\/h3>\n<p><\/p>\n<ul>\n<li>Underst\u00f8ttelse af flere mestre (HA-klynge K8s).<\/li>\n<li>Levering af sikre etcd-klynger og administration af dem.<\/li>\n<li>Drift i fysisk isolerede milj\u00f8er.<\/li>\n<li>Underst\u00f8ttelse af sekventielle opdateringer og tilbageskydning.<\/li>\n<li>Flannel (vxlan) som CNI til backend; underst\u00f8ttelse af andre CNI planl\u00e6gges.<\/li>\n<li>Sikring og gendannelse af etcd-klynger efter tab af quorum.<\/li>\n<li>Beskyttelse af kontrolpanelet mod manglende hukommelse og CPU-tid.<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"arhitektura-resheniya-klusterkit\">Arkitekturen for Klusterkit-l\u00f8sningen<\/h3>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habrastorage.org\/webt\/5y\/xo\/lv\/5yxolv8yt1frmyxan5lmuji_ego.jpeg\"><img decoding=\"async\" alt=\"KlusterKit\" src=\"\/wp-content\/uploads\/2019\/04\/047c51df33c20b7d97c489d050d801a2.png\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><\/p>\n<p>For fault tolerance and simplicity, Klusterkit uses a single file cctl-state.yaml to store the Kubernetes cluster metadata. The cctl CLI can manage the lifecycle of a Kubernetes cluster on any machine that has this state file. This could be the operator's laptop or any other computer that is part of the Kubernetes cluster.<\/p>\n<p><\/p>\n<p>Cctl implements and calls the upstream cluster-api interface as a CRUD operations library for clusters. It uses <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/platform9\/ssh-provider\">ssh-provider<\/a><\/noindex>, an open-source cluster-api provider for bare metal from Platform9, which in turn calls etcdadm and nodeadm to perform operations on the cluster.<\/p>\n<p><\/p>\n<h3 id=\"kak-ispolzovat-klusterkit-i-ego-komponenty\">How to use Klusterkit and its components:<\/h3>\n<p><\/p>\n<p>1 \u2013 Any of the three tools can be easily assembled using the go get command:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">go get -u github.com\/platform9\/cctl\n\ngo get -u github.com\/platform9\/nodeadm\n\ngo get -u github.com\/kubernetes-sigs\/etcdadm<\/code><\/pre>\n<p><\/p>\n<p>2 \u2013 These binaries can then be packaged and copied to the target machines where the highly available Kubernetes cluster should run. Place the nodeadm and etcdadm files into the version directories:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">cp $GOPATH\/bin\/nodeadm \/var\/cache\/ssh-provider\/nodeadm\/\/\n\ncp $GOPATH\/bin\/etcdadm \/var\/cache\/ssh-provider\/etcdadm\/\/<\/code><\/pre>\n<p><\/p>\n<p>3 \u2013 If you need to orchestrate a Kubernetes cluster locally in a physically isolated environment, necessary dependencies can easily be preloaded on an internet-connected computer using the download command for nodeadm and etcdadm. Then the downloaded components (i.e., kubelet and kubelet unit file for systemd, CNI binaries, kubeadm file, all container images including Kubernetes, keepalived image and systemd file, etcd container image, and corresponding configuration files) can be easily copied to physically isolated hosts along with cctl, nodeadm, and etcdadm. (For details, see <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/platform9\/cctl\/wiki\">wiki<\/a><\/noindex>).<\/p>\n<p><\/p>\n<p>4 \u2013 When everything is in place, the first Kubernetes cluster can be created with a couple of commands:<\/p>\n<p><\/p>\n<p>\u2013 First, create the credentials for the cluster.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$GOPATH\/bin\/cctl create credential --user root --private-key ~\/\\.ssh\/id_rsa<\/code><\/pre>\n<p><\/p>\n<p>\u2013 Then create the cluster object. \u2013help triggers a list of supported parameters.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$GOPATH\/bin\/cctl create cluster --pod-network 192.168.0.0\/16 --service-network 192.169.0.0\/24<\/code><\/pre>\n<p><\/p>\n<p>\u2013 Finally, create the first machine in the cluster.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">$GOPATH\/bin\/cctl create machine --ip $MACHINE_IP --role master<\/code><\/pre>\n<p><\/p>\n<p>Read more documentation at <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/platform9\/cctl\/\">GitHub<\/a><\/noindex>.<\/p>\n<p>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/449214\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>KlusterKit: \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0434\u0435\u043f\u043b\u043e\u0435\u0432 Kubernetes \u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0432 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0440\u0435\u0434\u0430\u0445 \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0441 \u0440\u0430\u0434\u043e\u0441\u0442\u044c\u044e \u043e\u0431\u044a\u044f\u0432\u043b\u044f\u0435\u043c, \u0447\u0442\u043e Platform9 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u043a\u043e\u0434\u044b Klusterkit, \u043d\u0430\u0431\u043e\u0440\u0430 \u0438\u0437 \u0442\u0440\u0435\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043f\u043e \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 Apache v2.0 \u043d\u0430 GitHub. \u041d\u0430\u0448\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u044b \u0432\u044b\u043a\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u041f\u041e \u0432 \u0447\u0430\u0441\u0442\u043d\u044b\u0445 \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0447\u0430\u0441\u0442\u043e \u043d\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u043a \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0443 (\u043f\u043e \u0441\u043e\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24101,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32283","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"KlusterKit: \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/klusterkit\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47KlusterKit | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"KlusterKit: \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/klusterkit\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:46:07+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:46:07+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47KlusterKit | ProHoster","description":"KlusterKit: an open-source toolkit for.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/klusterkit","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47KlusterKit | ProHoster","og:description":"KlusterKit: \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u0434\u043b\u044f.","og:url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/klusterkit","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:46:07+00:00","article:modified_time":"2019-10-31T18:46:07+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32283","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 10:07:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:02:06","updated":"2026-01-21 10:07:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/32283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=32283"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/32283\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/24101"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=32283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=32283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=32283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}