{"id":51869,"date":"2020-03-16T23:17:37","date_gmt":"2020-03-16T20:17:37","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=51869"},"modified":"2020-05-06T02:22:11","modified_gmt":"2020-05-05T23:22:11","slug":"installing-kubernetes-with-kubespray-on-aws","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/","title":{"rendered":"Installing Kubernetes with Kubespray on AWS"},"content":{"rendered":"<p><a href=\"https:\/\/www.altoros.com\/blog\/a-multitude-of-kubernetes-deployment-tools-kubespray-kops-and-kubeadm\/\">Kubespray<\/a> is a composition of Ansible playbooks aimed at providing users with a flexible method of deploying a production-grade Kubernetes cluster. However, deploying Kubernetes with Kubespray can get tricky if you are not too familiar with the technology.<\/p>\n<p>In this tutorial, we will show how to deploy Kubernetes with Kubespray on AWS.<\/p>\n<p>&nbsp;<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/#Installing_dependencies\" >Installing dependencies<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/#Building_a_cloud_infrastructure_with_Terraform\" >Building a cloud infrastructure with Terraform<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/#Deploying_a_cluster_with_Kubespray\" >Deploying a cluster with Kubespray<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/#Configuring_access_to_the_cluster\" >Configuring access to the cluster<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/#Running_test_deployments\" >Running test deployments<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/#Want_details_Watch_the_video\" >Want details? Watch the video!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/#Further_reading\" >Further reading<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Installing_dependencies\"><\/span>Installing dependencies<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Before deploying, we will need a virtual machine (hereinafter Jumpbox) with all the software dependencies installed. Check the <a href=\"https:\/\/github.com\/kubernetes-sigs\/kubespray#supported-linux-distributions\" rel=\"noopener noreferrer\" target=\"_blank\">list of distributions supported by Kubespray<\/a> and deploy the Jumpbox with one of these distributions. Make sure to have the latest version of Python installed. Next, the dependencies from <code style=\"color: black; background-color: #e6e6e6;\">requirements.text<\/code> in Kubespray&#8217;s <a href=\"https:\/\/github.com\/kubernetes-sigs\/kubespray\" rel=\"noopener noreferrer\" target=\"_blank\">GitHub repo<\/a> must be installed.<\/p>\n<pre>sudo pip install -r requirements.txt<\/pre>\n<p>Lastly, install Terraform by HashiCorp. Simply download the <a href=\"https:\/\/www.terraform.io\/downloads\" rel=\"noopener noreferrer\" target=\"_blank\">latest version<\/a> of Terraform according to your distribution and install it to your <code style=\"color: black; background-color: #e6e6e6;\">\/usr\/local\/bin<\/code> folder. For example:<\/p>\n<pre>wget https:\/\/releases.hashicorp.com\/terraform\/0.12.23\/terraform_0.12.23_linux_amd64.zip\r\nunzip terraform_0.12.23_linux_amd64.zip\r\nsudo mv terraform \/usr\/local\/bin\/<\/pre>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Building_a_cloud_infrastructure_with_Terraform\"><\/span>Building a cloud infrastructure with Terraform<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Since Kubespray does not automatically create virtual machines, we need to use Terraform to help provision our infrastructure. To start, we create an SSH key pair for Ansible on AWS.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/Creating-SSH-key-pairs.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/Creating-SSH-key-pairs-1024x576.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-51870\" \/><\/a><small>An example of a key pair being created<\/small><\/center><\/p>\n<p>The next step is to clone the Kubespray repository into our jumpbox.<\/p>\n<pre>git clone https:\/\/github.com\/kubernetes-sigs\/kubespray.git<\/pre>\n<p>We then enter the cloned directory and copy the credentials.<\/p>\n<pre>cd kubespray\/contrib\/terraform\/aws\/\r\ncp credentials.tfvars.example credentials.tfvars<\/pre>\n<p>After copying, fill out <code style=\"color: black; background-color: #e6e6e6;\">credentials.tfvars<\/code> with our AWS credentials.<\/p>\n<pre>vim credentials.tfvars<\/pre>\n<p>In this case, the AWS credentials were as follows.<\/p>\n<pre>#AWS Access Key\r\nAWS_ACCESS_KEY_ID = \"\"\r\n#AWS Secret Key\r\nAWS_SECRET_ACCESS_KEY = \"\"\r\n#EC2 SSH Key Name\r\nAWS_SSH_KEY_NAME = \"Altoros-kubespray\"\r\n#AWS Region\r\nAWS_DEFAULT_REGION = \"us-east-2\"<\/pre>\n<p>Next, we edit <code style=\"color: black; background-color: #e6e6e6;\">terraform.tfvars<\/code> in order to customize our infrastructure.<\/p>\n<pre>vim terraform.tfvars<\/pre>\n<p>Below is an example configuration.<\/p>\n<pre>#Global Vars\r\naws_cluster_name = \"altoros-cluster\"\r\n\r\n#VPC Vars\r\naws_vpc_cidr_block       = \"10.250.192.0\/18\"\r\naws_cidr_subnets_private = [\"10.250.192.0\/20\", \"10.250.208.0\/20\"]\r\naws_cidr_subnets_public  = [\"10.250.224.0\/20\", \"10.250.240.0\/20\"]\r\n\r\n#Bastion Host\r\naws_bastion_size = \"t2.medium\"\r\n\r\n#Kubernetes Cluster\r\n\r\naws_kube_master_num  = 3\r\naws_kube_master_size = \"t2.medium\"\r\n\r\naws_etcd_num  = 3\r\naws_etcd_size = \"t2.medium\"\r\n\r\naws_kube_worker_num  = 4\r\naws_kube_worker_size = \"t2.medium\"\r\n\r\n#Settings AWS ELB\r\n\r\naws_elb_api_port                = 6443\r\nk8s_secure_api_port             = 6443\r\nkube_insecure_apiserver_address = \"0.0.0.0\"\r\n\r\ndefault_tags = {\r\n  #  Env = \"devtest\"\r\n  #  Product = \"kubernetes\"\r\n}\r\n\r\ninventory_file = \"..\/..\/..\/inventory\/hosts\"<\/pre>\n<p>Next, initialize Terraform and <code style=\"color: black; background-color: #e6e6e6;\">run terraform plan<\/code> to see any changes required for the infrastructure.<\/p>\n<pre>terraform init\r\nterraform plan -out mysuperplan -var-file=credentials.tfvars<\/pre>\n<p>After, apply the plan that was just created. This begins deploying the infrastructure and may take a few minutes.<\/p>\n<pre>terraform apply \u201cmysuperplan\u201d<\/pre>\n<p>Once deployed, we can check out the infrastructure in our AWS dashboard.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/AWS-dashboard.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/AWS-dashboard-1024x576.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-51871\" \/><\/a><small>Deployed instances shown in the AWS dashboard<\/small><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Deploying_a_cluster_with_Kubespray\"><\/span>Deploying a cluster with Kubespray<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>With the infrastructure provisioned, we can begin to deploy a Kubernetes cluster using Ansible. Start off by entering the Kubespray directory and use the Ansible inventory file created by Terraform.<\/p>\n<pre>cd ~\/kubespray\r\ncat inventory\/hosts<\/pre>\n<p>Next, load the SSH keys, which were created in AWS earlier on. First, create a file (in our case, it will be located at <code style=\"color: black; background-color: #e6e6e6;\">~\/.ssh\/Altoros\/kubespray.pem<\/code>) and paste the private part of the key created at AWS there.<\/p>\n<pre>cat \u201c<PRIVATE_KEY_CONTENT>\u201d > ~\/.ssh\/Altoros\/kubespray.pem\r\neval $(ssh-agent)\r\nssh-add -D\r\nssh-add ~\/.ssh\/Altoros\/kubespray.pem<\/pre>\n<p>Once the SSH keys are loaded, we can now deploy a cluster using Ansible playbooks. This takes roughly 20 minutes.<\/p>\n<pre>ansible-playbook -i .\/inventory\/hosts .\/cluster.yml -e ansible_user=core -b --become-user=root --flush-cache<\/pre>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Configuring_access_to_the_cluster\"><\/span>Configuring access to the cluster<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Now that the cluster has been deployed, we can configure who has access to it. First, find the IP address of the first master.<\/p>\n<pre>cat inventory\/hosts<\/pre>\n<p>After identifying the IP address, we can SSH to the first master.<\/p>\n<pre>ssh  -F ssh-bastion.conf core@10.250.200.182<\/pre>\n<p>Once connected, we are set as a core user. Switch to the root user and copy the kubectl config located in the root home folder.<\/p>\n<pre>sudo ~s\r\ncd ~\r\ncd .kube\r\ncat config<\/pre>\n<p>Highlight and copy the kubectl config as shown in the following image.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/kubectl-config-highlight.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/kubectl-config-highlight-1024x576.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-51872\" \/><\/a><small>Example kubectl config<\/small><\/center><\/p>\n<p>Return to the jumpbox and go to <code style=\"color: black; background-color: #e6e6e6;\">kube\/config<\/code>.<\/p>\n<pre>exit\r\nvim ~\/.kube\/config<\/pre>\n<p>Paste the copied kubectl config here.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/kubectl-config-paste.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/kubectl-config-paste-1024x576.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-51873\" \/><\/a><small>Copying kubectl config<\/small><\/center><\/p>\n<p>Next, copy the URL of the load balancer from the inventory file. In our case, the URL is <code style=\"color: black; background-color: #e6e6e6;\">kubernetes-elb-altoros-cluster-458236357.us-east-2.elb-amazonaws.com<\/code>. Paste this URL into the server parameter in kubectl config. Do not overwrite the port.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Running_test_deployments\"><\/span>Running test deployments<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>After configuring access to the cluster, we can check on our cluster.<\/p>\n<pre>kubectl get nodes\r\nkubectl cluster-info<\/pre>\n<p>Node and cluster details will be shown in the console.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/kubernetes-cluster-and-node-details.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/kubernetes-cluster-and-node-details-1024x576.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-51874\" \/><\/a><small>Cluster and node details<\/small><\/center><\/p>\n<p>With the cluster ready, we can run a test deployment.<\/p>\n<pre>kubectl create deployment nginx --image=nginx\r\nkubectl get pods\r\nkubectl get deployments<\/pre>\n<p>Entering this commands should deploy NGINX and also return the status of the pods and deployments.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/deploy-nginx.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/deploy-nginx-1024x576.png\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-51875\" \/><\/a><small>A successful test deployment<\/small><\/center><\/p>\n<p>With this, we have successfully provisioned our cloud infrastructure with Terraform. We then deployed a Kubernetes cluster using Kubespray. We also configured access to the cluster and were finally able to run test deployments.<\/p>\n<p>More on Kubespray can be found in its <a href=\"https:\/\/github.com\/kubernetes-sigs\/kubespray\" rel=\"noopener noreferrer\" target=\"_blank\">GitHub repository<\/a>, as well as in the project\u2019s <a href=\"https:\/\/kubespray.io\/#\/\" rel=\"noopener noreferrer\" target=\"_blank\">official documentation<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Want_details_Watch_the_video\"><\/span>Want details? Watch the video!<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><small>The video demonstrates how to deploy Kubernetes clusters on AWS using Kubespray.<\/small><br \/>\n<center><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/OEEr2EX8WYc\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Further_reading\"><\/span>Further reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/a-multitude-of-kubernetes-deployment-tools-kubespray-kops-and-kubeadm\/\">A Multitude of Kubernetes Deployment Tools: Kubespray, kops, and kubeadm<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/research-papers\/a-comparative-analysis-of-kubernetes-deployment-tools-kubespray-kops-and-conjure-up\/\">A Comparative Analysis of Kubernetes Deployment Tools: Kubespray, kops, and conjure-up<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/\">Kubernetes Cluster Ops: Options for Configuration Management<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<hr\/>\n<p><center><small>The post was written by <b>Arsenii Petrovich<\/b>, <b>Viachaslau Matsukevich<\/b>, and <a href=\"https:\/\/www.altoros.com\/blog\/author\/carlo\/\">Carlo Gutierrez<\/a>;<br \/>\nedited by <a href=\"https:\/\/www.altoros.com\/blog\/author\/sophie.turol\/\">Sophia Turol<\/a> and <a href=\"https:\/\/www.altoros.com\/blog\/author\/alex\/\">Alex Khizhniak.<\/a><\/small><\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kubespray is a composition of Ansible playbooks aimed at providing users with a flexible method of deploying a production-grade Kubernetes cluster. However, deploying Kubernetes with Kubespray can get tricky if you are not too familiar with the technology.<\/p>\n<p>In this tutorial, we will show how to deploy Kubernetes with Kubespray on [&#8230;]<\/p>\n","protected":false},"author":185,"featured_media":51879,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[214],"tags":[873,912],"class_list":["post-51869","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-cloud-native","tag-kubernetes"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Installing Kubernetes with Kubespray on AWS | Altoros<\/title>\n<meta name=\"description\" content=\"With Ansible playbooks, Kubespray provides added flexibility in deploying Kubernetes clusters.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Installing Kubernetes with Kubespray on AWS | Altoros\" \/>\n<meta property=\"og:description\" content=\"Kubespray is a composition of Ansible playbooks aimed at providing users with a flexible method of deploying a production-grade Kubernetes cluster. However, deploying Kubernetes with Kubespray can get tricky if you are not too familiar with the technology. In this tutorial, we will show how to deploy Kubernetes with Kubespray on [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2020-03-16T20:17:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-05-05T23:22:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/installing-kubernetes-with-kubespray.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"360\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Arsenii Petrovich\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Arsenii Petrovich\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/installing-kubernetes-with-kubespray-on-aws\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/installing-kubernetes-with-kubespray-on-aws\\\/\"},\"author\":{\"name\":\"Arsenii Petrovich\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/11bd3c6f0bd312c056ef59422f7c88cf\"},\"headline\":\"Installing Kubernetes with Kubespray on AWS\",\"datePublished\":\"2020-03-16T20:17:37+00:00\",\"dateModified\":\"2020-05-05T23:22:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/installing-kubernetes-with-kubespray-on-aws\\\/\"},\"wordCount\":692,\"commentCount\":5,\"image\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/installing-kubernetes-with-kubespray-on-aws\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/03\\\/installing-kubernetes-with-kubespray.gif\",\"keywords\":[\"Cloud-Native\",\"Kubernetes\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.altoros.com\\\/blog\\\/installing-kubernetes-with-kubespray-on-aws\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/installing-kubernetes-with-kubespray-on-aws\\\/\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/installing-kubernetes-with-kubespray-on-aws\\\/\",\"name\":\"Installing Kubernetes with Kubespray on AWS | Altoros\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/installing-kubernetes-with-kubespray-on-aws\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/installing-kubernetes-with-kubespray-on-aws\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/03\\\/installing-kubernetes-with-kubespray.gif\",\"datePublished\":\"2020-03-16T20:17:37+00:00\",\"dateModified\":\"2020-05-05T23:22:11+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/11bd3c6f0bd312c056ef59422f7c88cf\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/installing-kubernetes-with-kubespray-on-aws\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.altoros.com\\\/blog\\\/installing-kubernetes-with-kubespray-on-aws\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/installing-kubernetes-with-kubespray-on-aws\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/03\\\/installing-kubernetes-with-kubespray.gif\",\"contentUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2020\\\/03\\\/installing-kubernetes-with-kubespray.gif\",\"width\":640,\"height\":360},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/installing-kubernetes-with-kubespray-on-aws\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Installing Kubernetes with Kubespray on AWS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/#\\\/schema\\\/person\\\/11bd3c6f0bd312c056ef59422f7c88cf\",\"name\":\"Arsenii Petrovich\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/04\\\/arsenii-petrovish-96x96.jpg\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/04\\\/arsenii-petrovish-96x96.jpg\",\"contentUrl\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/04\\\/arsenii-petrovish-96x96.jpg\",\"caption\":\"Arsenii Petrovich\"},\"description\":\"Arsenii Petrovich is Cloud Solutions Architect at Altoros specializing in system administration, DevOps, and automation. He has profound knowledge of multiple scripting and programming languages and the ability to use them within a single project. Arsenii is also experienced in maintaining different IaaS platforms\u2014including AWS, OpenStack, vSphere, and GCP.\",\"url\":\"https:\\\/\\\/www.altoros.com\\\/blog\\\/author\\\/arsenii-petrovich\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Installing Kubernetes with Kubespray on AWS | Altoros","description":"With Ansible playbooks, Kubespray provides added flexibility in deploying Kubernetes clusters.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/","og_locale":"en_US","og_type":"article","og_title":"Installing Kubernetes with Kubespray on AWS | Altoros","og_description":"Kubespray is a composition of Ansible playbooks aimed at providing users with a flexible method of deploying a production-grade Kubernetes cluster. However, deploying Kubernetes with Kubespray can get tricky if you are not too familiar with the technology. In this tutorial, we will show how to deploy Kubernetes with Kubespray on [...]","og_url":"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/","og_site_name":"Altoros","article_published_time":"2020-03-16T20:17:37+00:00","article_modified_time":"2020-05-05T23:22:11+00:00","og_image":[{"width":640,"height":360,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/installing-kubernetes-with-kubespray.gif","type":"image\/gif"}],"author":"Arsenii Petrovich","twitter_misc":{"Written by":"Arsenii Petrovich","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/#article","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/"},"author":{"name":"Arsenii Petrovich","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/11bd3c6f0bd312c056ef59422f7c88cf"},"headline":"Installing Kubernetes with Kubespray on AWS","datePublished":"2020-03-16T20:17:37+00:00","dateModified":"2020-05-05T23:22:11+00:00","mainEntityOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/"},"wordCount":692,"commentCount":5,"image":{"@id":"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/installing-kubernetes-with-kubespray.gif","keywords":["Cloud-Native","Kubernetes"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/","url":"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/","name":"Installing Kubernetes with Kubespray on AWS | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/installing-kubernetes-with-kubespray.gif","datePublished":"2020-03-16T20:17:37+00:00","dateModified":"2020-05-05T23:22:11+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/11bd3c6f0bd312c056ef59422f7c88cf"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/installing-kubernetes-with-kubespray.gif","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2020\/03\/installing-kubernetes-with-kubespray.gif","width":640,"height":360},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/installing-kubernetes-with-kubespray-on-aws\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Installing Kubernetes with Kubespray on AWS"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/11bd3c6f0bd312c056ef59422f7c88cf","name":"Arsenii Petrovich","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/04\/arsenii-petrovish-96x96.jpg","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/04\/arsenii-petrovish-96x96.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2019\/04\/arsenii-petrovish-96x96.jpg","caption":"Arsenii Petrovich"},"description":"Arsenii Petrovich is Cloud Solutions Architect at Altoros specializing in system administration, DevOps, and automation. He has profound knowledge of multiple scripting and programming languages and the ability to use them within a single project. Arsenii is also experienced in maintaining different IaaS platforms\u2014including AWS, OpenStack, vSphere, and GCP.","url":"https:\/\/www.altoros.com\/blog\/author\/arsenii-petrovich\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/51869","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/185"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=51869"}],"version-history":[{"count":18,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/51869\/revisions"}],"predecessor-version":[{"id":54379,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/51869\/revisions\/54379"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/51879"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=51869"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=51869"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=51869"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}