Watch kubernetes y docker en aws desde cero

A recent survey of 550 members of the Cloud Native Computing Foundation confirmed that Kubernetes is the orchestration platform of choice. The survey also reaffirmed that Amazon Web Services continues to be the leading choice for deploying Kubernetes clusters in the cloud. kubernetes-aws.io lists various ways you can easily create a Kubernetes cluster on AWS.

As part of your development cycle, you may also want to run Kubernetes on your local machine, so that you can start and debug your applications locally. Once you are satisfied with the local version, you can deploy the exact same application on a cluster running on AWS.

This post presents two options for running Kubernetes locally on a Mac OS X machine: commonly used Minikube and the newly-introduced Kubernetes support in Docker for Mac. Instructions for other platforms are available on the Minikube and Docker websites.

Let’s get started!

Install kubectl

Kubectl is a CLI command line interface (CLI) used to run commands against a Kubernetes cluster. Let’s install that first:

Install kubectl on Mac OS X:

brew install kubernetes-cli

If kubectl is already installed, you may want to upgrade it:

brew upgrade kubernetes-cli

Print the version information:

$ kubectl version --client --short=true Client Version: v1.8.5

By default, the kubectl version command prints the client and the server version. --client ensures that only the client version is printed, as no cluster is running at this time. --short option allows you to print only the version number.

Now that kubectl is installed, let’s look at the two options to get a Kubernetes cluster running on the local machine.

Set Up a Kubernetes Cluster Using Minikube

Minikube runs a single-node Kubernetes cluster inside a Virtual Machine (VM) on your laptop, providing a local development and testing environment for users interested in playing with Kubernetes.

The minikube VM is provisioned using VirtualBox. If VirtualBox is not already installed on your machine, you’ll need to do that first:

brew cask install virtualbox

Now, install minikube:

brew cask install minikube

If minikube is already installed, you can upgrade it using:

brew cask reinstall minikube

Check the version of minikube:

~ $ minikube version minikube version: v0.24.1

Start minikube:

~ $ minikube start Starting local Kubernetes v1.8.0 cluster... Starting VM... Downloading Minikube ISO 140.01 MB / 140.01 MB [============================================] 100.00% 0s Getting VM IP address... Moving files into cluster... Downloading localkube binary 148.25 MB / 148.25 MB [============================================] 100.00% 0s 0 B / 65 B [----------------------------------------------------------] 0.00% 65 B / 65 B [======================================================] 100.00% 0sSetting up certs... Connecting to cluster... Setting up kubeconfig... Starting cluster components... Kubectl is now configured to use the cluster. Loading cached images from config file.

This command downloads the ISO file, creates the VM, and configures Kubernetes components to bring up the single-node cluster. By default, the cluster configuration and credentials are stored in the ~/.kube/config file. The context for different clusters can be viewed using the following command:

~ $ kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE * minikube minikube minikube

As you can see here, we have created only one Kubernetes cluster so far. If multiple clusters had been created, they would all be listed by this command.

A * in the first column also indicates that this is the current context; all kubectl commands will be directed at this cluster. For example, you can check the nodes in the cluster:

~ $ kubectl get nodes NAME STATUS ROLES AGE VERSION minikube Ready <none> 1m v1.8.0

The kubectl version command can now be used to print the client and server version:

~ $ kubectl version --short=true Client Version: v1.8.5 Server Version: v1.8.0

All the usual kubectl commands can now be applied to this cluster.

Set Up a Kubernetes Cluster Using Docker for Mac

Docker for Mac/Docker for Windows provides a starting point for developers interested in getting started with Docker. Docker for Mac can be downloaded as a Stable or Edge release. The Stable version is fully baked and tested, and comes with the latest GA release of Docker. The Edge release, as the name indicates, offers the latest bleeding-edge features. One such feature introduced as part of the private beta for Docker CE Edge release, version 17.12.0-ce-rc2-mac41 to be specific, supports a single-node Kubernetes cluster for development and testing.

This means that you can use the same Docker for Mac to create your Docker images, enable a Kubernetes cluster, and deploy pods, without any need for an additional tool such as minikube. At the time of writing, this is only supported on Docker for Mac, and Docker for Windows in Q1. (Kubernetes is also available in Docker Enterprise Edition.)

Let’s take a look at how you can use Docker for Mac to set up a local Kubernetes cluster.

To get Kubernetes access from Docker for Mac, you’ll need to sign up for the Docker Beta program. After your Docker ID is approved for Kubernetes access, you will be sent a link to download and install the Edge version of Docker for Mac. Make sure that About Docker shows the version as 12.12.0-ce-rc2-mac31 or later. A new tab that allows you to configure a Kubernetes cluster is now shown in the Preferences dialog box.

Select Enable Kubernetes, then click on Apply & Restart to start a single-node Kubernetes cluster.

Watch kubernetes y docker en aws desde cero

In a few moments, the status bar will be updated to reflect that Kubernetes is running, in addition to Docker.

Watch kubernetes y docker en aws desde cero

This also creates a configuration for the cluster in the default file at ~/.kube/config. The kubectl CLI shows the configuration as:

~ $ kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE * minikube minikube minikube docker-for-desktop docker-for-desktop-cluster docker-for-desktop

Change the context to be used by kubectl, verify the current context, and get the list of nodes:

~ $ kubectl config use-context docker-for-desktop Switched to context "docker-for-desktop". ~ $ kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE * docker-for-desktop docker-for-desktop-cluster docker-for-desktop minikube minikube minikube ~ $ kubectl get nodes NAME STATUS ROLES AGE VERSION docker-for-desktop Ready master 23h v1.8.2

Now the docker version command shows Kubernetes as the orchestrator:

~ $ docker version Client: Version: 17.12.0-rc1-kube_beta API version: 1.35 Go version: go1.9.2 Git commit: a36c9215a7f8d5da5231d2cca353375bcb27efe3 Built: Thu Dec 7 17:33:49 2017 OS/Arch: darwin/amd64 Orchestrator: kubernetes Server: Engine: Version: 17.12.0-ce-rc2 API version: 1.35 (minimum version 1.12) Go version: go1.9.2 Git commit: f9cde63 Built: Tue Dec 12 06:45:30 2017 OS/Arch: linux/amd64 Experimental: true

Notice, kubernetes is shown as the orchestrator, as opposed to the default swarm.

You now have the latest Kubernetes scheduler with the latest Docker runtime, with a single tool!

Let’s check the client and server version using the kubectl version command:

~ $ kubectl version --short=true Client Version: v1.8.2 Server Version: v1.8.0

Once again, all the usual kubectl commands will work on this cluster.

In addition to using all the familiar kubectl commands, you can also deploy Docker Compose stacks as first-class Kubernetes applications. More on this later, but in the meantime you can check out this video:

Once you’ve done the initial development and testing of your application on a local Kubernetes cluster, our Kubernetes workshop will guide you through how to create a Kubernetes cluster on AWS and deploy your applications on that cluster.

—Arun

¿Cómo subir Docker a AWS?

Para autenticar Docker en un registro de Amazon ECR, ejecute el comando aws ecr get-login-password. Al pasar el token de autenticación al comando docker login, utilice el valor AWS para el nombre de usuario y especifique el URI del registro de Amazon ECR en el que desea autenticarse.

¿Qué es un Kubernetes AWS?

Kubernetes es un software de código abierto que le permite implementar y administrar aplicaciones en contenedores a escala.

¿Qué es un Docker AWS?

Docker es un sistema operativo para contenedores. De manera similar a cómo una máquina virtual virtualiza (elimina la necesidad de administrar directamente) el hardware del servidor, los contenedores virtualizan el sistema operativo de un servidor.