One place for hosting & domains

      Machine

      Machine Learning Projects: Python — A DigitalOcean eBook


      Download the Complete eBook!

      Machine Learning Projects: Python eBook in EPUB format

      Machine Learning Projects: Python eBook in PDF format

      Machine Learning Projects: Python eBook in Mobi format

      Introduction to the eBook

      As machine learning is increasingly leveraged to find patterns, conduct analysis, and make decisions — sometimes without final input from humans who may be impacted by these findings — it is crucial to invest in bringing more stakeholders into the fold. This book of Python projects in machine learning tries to do just that: to equip the developers of today and tomorrow with tools they can use to better understand, evaluate, and shape machine learning to help ensure that it is serving us all.

      This book will set you up with a Python programming environment if you don’t have one already, then provide you with a conceptual understanding of machine learning in the chapter “An Introduction to Machine Learning.” What follows next are three Python machine learning projects. They will help you create a machine learning classifier, build a neural network to recognize handwritten digits, and give you a background in deep reinforcement learning through building a bot for Atari.

      These chapters originally appeared as articles on DigitalOcean Community, written by members of the international software developer community. If you are interested in contributing to this knowledge base, consider proposing a tutorial to the Write for DOnations program. DigitalOcean offers payment to authors and provides a matching donation to tech-focused nonprofits.

      Other Books in this Series

      If you are learning Python or are looking for reference material, you can download our free Python eBook, How To Code in Python 3

      For other programming languages and DevOps engineering articles, check out our knowledge base of over 2,100 tutorials.

      Download the eBook

      You can download the eBook in either the EPUB, PDF, or Mobi format by following the links below.

      Download the Complete eBook!

      Machine Learning Projects: Python eBook in EPUB format

      Machine Learning Projects: Python eBook in PDF format

      Machine Learning Projects: Python eBook in Mobi format



      Source link

      Como Provisionar e Gerenciar Hosts Remotos do Docker com Docker Machine no Ubuntu 18.04


      Introdução

      Docker Machine é uma ferramenta que facilita o provisionamento e o gerenciamento de vários hosts Docker remotamente a partir do seu computador pessoal. Esses servidores são comumente chamados de hosts Dockerizados e são usados para executar containers do Docker.

      Embora o Docker Machine possa ser instalado em um sistema local ou remoto, a abordagem mais comum é instalá-lo em seu computador local (instalação nativa ou máquina virtual) e usá-lo para provisionar servidores remotos Dockerizados.

      Embora o Docker Machine possa ser instalado na maioria das distribuições Linux, bem como no MacOS e no Windows, neste tutorial, você o instalará em sua máquina local executando Ubuntu 18.04 e o usará para provisionar Droplets Dockerizados na DigitalOcean. Se você não tem uma máquina local Ubuntu 18.04, você pode seguir estas instruções em qualquer servidor Ubuntu 18.04.

      Pré-requisitos

      Para seguir este tutorial, você vai precisar do seguinte:

      • Uma máquina local ou servidor executando o Ubuntu 18.04 com o Docker instalado. Veja Como Instalar e Usar o Docker no Ubuntu 18.04 para instruções.

      • Um token de API da DigitalOcean. Se você não tiver um, gere-o usando este guia. Quando você gerar um token, certifique-se de que ele tenha um escopo de leitura e gravação. Esse é o padrão, portanto, se você não alterar nenhuma opção enquanto estiver gerando, ela terá recursos de leitura e gravação.

      Passo 1 — Instalando o Docker Machine

      Para usar a Docker Machine, você deve primeiro instalá-lo localmente. No Ubuntu, isso significa baixar um punhado de scripts do repositório oficial do Docker no GitHub.

      Para baixar e instalar o binário do Docker Machine, digite:

      • wget https://github.com/docker/machine/releases/download/v0.15.0/docker-machine-$(uname -s)-$(uname -m)

      O nome do arquivo deve ser docker-machine-Linux-x86_64. Renomeie-o para docker-machine para torná-lo mais fácil de trabalhar:

      • mv docker-machine-Linux-x86_64 docker-machine

      Torne-o executável:

      Mova ou copie-o para o diretório /usr/local/bin para que ele esteja disponível como um comando do sistema:

      • sudo mv docker-machine /usr/local/bin

      Verifique a versão, o que indicará que ele está corretamente instalado:

      Você verá uma saída semelhante a esta, exibindo o número da versão e a compilação:

      Output

      docker-machine version 0.15.0, build b48dc28d

      O Docker Machine está instalado. Vamos instalar algumas ferramentas auxiliares adicionais para facilitar o trabalho com o Docker Machine.

      Passo 2 — Instalando Scripts Adicionais do Docker Machine

      Existem três scripts Bash no repositório GitHub do Docker Machine que você pode instalar para facilitar o trabalho com os comandos docker e docker-machine. Quando instalados, esses scripts fornecem o recurso de auto-completar comandos e de personalização do prompt.

      Nesta etapa, você irá instalar esses três scripts no diretório /etc/bash_completion.d em sua máquina local, baixando-os diretamente do repositório GitHub do Docker Machine.

      Nota: Antes de baixar e instalar um script da internet em um local disponível do sistema, você deve inspecionar o conteúdo do script primeiro, visualizando a URL de origem em seu navegador.

      O primeiro script permite que você veja a máquina ativa no seu prompt. Isso é útil quando você está trabalhando e alternando entre várias máquinas Dockerizadas. O script é chamado de docker-machine-prompt.bash. Baixe-o

      • sudo wget https://raw.githubusercontent.com/docker/machine/master/contrib/completion/bash/docker-machine-prompt.bash -O /etc/bash_completion.d/docker-machine-prompt.bash

      Para completar a instalação deste arquivo, você terá que modificar o valor da variável PS1 no seu arquivo .bashrc. A variável PS1 é uma variável de shell especial usada para modificar o prompt de comando do Bash. Abra o ~/.bashrc em seu editor:

      Dentro desse arquivo, existem três linhas que começam com PS1. Elas devem se parecer com estas:

      ~/.bashrc

      
      PS1='${debian_chroot:+($debian_chroot)}[33[01;32m]u@h[33[00m]:[33[01;34m]w[33[00m]$ '
      
      ...
      
      PS1='${debian_chroot:+($debian_chroot)}u@h:w$ '
      
      ...
      
      PS1="[e]0;${debian_chroot:+($debian_chroot)}u@h: wa]$PS1"
      

      Para cada linha, insira $(__docker_machine_ps1 " [%s]") perto do final, conforme mostrado no exemplo a seguir:

      ~/.bashrc

      PS1='${debian_chroot:+($debian_chroot)}[33[01;32m]u@h[33[00m]:[33[01;34m]w[33[00m]$(__docker_machine_ps1 " [%s]")$ ' ... PS1='${debian_chroot:+($debian_chroot)}u@h:w$(__docker_machine_ps1 " [%s]")$ ' ... PS1="[e]0;${debian_chroot:+($debian_chroot)}u@h: wa]$(__docker_machine_ps1 " [%s]")$PS1"

      Salve e feche o arquivo.

      O segundo script é chamado de docker-machine-wrapper.bash. Ele adiciona um subcomando use ao comando docker-machine, facilitando significativamente a alternância entre os hosts Docker. Para baixá-lo, digite:

      • sudo wget https://raw.githubusercontent.com/docker/machine/master/contrib/completion/bash/docker-machine-wrapper.bash -O /etc/bash_completion.d/docker-machine-wrapper.bash

      O terceiro script é chamado de docker-machine.bash. Ele adiciona o auto-completar ao bash para os comandos docker-machine. Baixe-o usando:

      • sudo wget https://raw.githubusercontent.com/docker/machine/master/contrib/completion/bash/docker-machine.bash -O /etc/bash_completion.d/docker-machine.bash

      Para aplicar as alterações feitas até agora, feche e reabra seu terminal. Se você estiver logado na máquina via SSH, saia da sessão e faça o login novamente, e você terá o auto-completar de comandos para os comandos docker e docker-machine.

      Vamos testar as coisas criando um novo host Docker com o Docker Machine.

      Passo 3 — Provisionando um Host Dockerizado Usando o Docker Machine

      Agora que você tem o Docker e o Docker Machine em execução em sua máquina local, é possível provisionar um Droplet Dockerizado em sua conta da DigitalOcean usando o comando docker-machine create do Docker Machine. Se você ainda não o fez, atribua seu token da API da DigitalOcean a uma variável de ambiente:

      • export DOTOKEN=seu-token-de-api

      NOTA: Este tutorial usa DOTOKEN como a variável bash para o token da API da DigitalOcean. O nome da variável não precisa ser DOTOKEN e não precisa estar em maiúsculas.

      Para tornar a variável permanente, coloque-a em seu arquivo ~/.bashrc. Este passo é opcional, mas é necessário se você quiser que o valor persista entre sessões de shell.

      Abra esse arquivo com o nano:

      Adicione esta linha ao arquivo:

      ~/.bashrc

      export DOTOKEN=seu-token-de-api
      

      Para ativar a variável na sessão de terminal atual, digite:

      Para chamar o comando docker-machine create com sucesso, você deve especificar o driver que deseja usar, bem como o nome da máquina. O driver é o adaptador para a infraestrutura que você vai criar. Existem drivers para provedores de infraestrutura de nuvem, bem como drivers para várias plataformas de virtualização.

      Vamos usar o driver digitalocean. Dependendo do driver selecionado, você precisará fornecer opções adicionais para criar uma máquina. O driver digitalocean requer o token da API (ou a variável que o fornece) como seu argumento, junto com o nome da máquina que você deseja criar.

      Para criar sua primeira máquina, digite este comando para criar um Droplet na DigitalOcean chamado docker-01:

      • docker-machine create --driver digitalocean --digitalocean-access-token $DOTOKEN docker-01

      Você verá esta saída enquanto o Docker Machine cria o Droplet:

      Output

      ... Installing Docker... Copying certs to the local machine directory... Copying certs to the remote machine... Setting Docker configuration on the remote daemon... Checking connection to Docker... Docker is up and running! To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env ubuntu1804-docker

      O Docker Machine cria um par de chaves SSH para o novo host para que ele possa acessar o servidor remotamente. O Droplet é provisionado com um sistema operacional e o Docker é instalado. Quando o comando estiver concluído, o seu Droplet Docker estará em funcionamento.

      Para ver a máquina recém-criada a partir da linha de comando, digite:

      A saída será semelhante a esta, indicando que o novo host Docker está em execução:

      Output

      NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS docker-01 - digitalocean Running tcp://209.97.155.178:2376 v18.06.1-ce

      Agora vamos ver como especificar o sistema operacional quando criamos uma máquina.

      Passo 4 — Especificando o SO Básico e as Opções de Droplet ao Criar um Host Dockerizado

      Por padrão, o sistema operacional básico usado ao criar um host Dockerizado com o Docker Machine é supostamente o Ubuntu LTS mais recente. No entanto, no momento desta publicação, o comando docker-machine create ainda está usando o Ubuntu 16.04 LTS como o sistema operacional base, embora o Ubuntu 18.04 seja a edição mais recente do LTS. Portanto, se você precisar rodar o Ubuntu 18.04 em uma máquina recém-provisionada, você terá que especificar o Ubuntu junto com a versão desejada passando a flag --digitalocean-image para o comandodocker-machine create.

      Por exemplo, para criar uma máquina usando o Ubuntu 18.04, digite:

      • docker-machine create --driver digitalocean --digitalocean-image ubuntu-18-04-x64 --digitalocean-access-token $DOTOKEN docker-ubuntu-1804

      Você não está limitado a uma versão do Ubuntu. Você pode criar uma máquina usando qualquer sistema operacional suportado na DigitalOcean. Por exemplo, para criar uma máquina usando o Debian 8, digite:

      • docker-machine create --driver digitalocean --digitalocean-image debian-8-x64 --digitalocean-access-token $DOTOKEN docker-debian

      Para provisionar um host Dockerizado usando o CentOS 7 como o SO base, especifique centos-7-0-x86 como o nome da imagem, da seguinte forma:

      • docker-machine create --driver digitalocean --digitalocean-image centos-7-0-x64 --digitalocean-access-token $DOTOKEN docker-centos7

      O sistema operacional básico não é a única opção que você tem. Você também pode especificar o tamanho do Droplet. Por padrão, é o menor Droplet, que tem 1 GB de RAM, uma única CPU e um SSD de 25 GB.

      Encontre o tamanho do Droplet que você deseja usar procurando o slug correspondente na documentação da API da DigitalOcean.

      Por exemplo, para provisionar uma máquina com 2 GB de RAM, duas CPUs e um SSD de 60 GB, use o slug s-2vcpu-2gb:

      docker-machine create --driver digitalocean --digitalocean-size s-2vcpu-2gb --digitalocean-access-token $DOTOKEN docker-03
      

      Para ver todas as flags específicas para criar um Docker Machine usando o driver da DigitalOcean, digite:

      • docker-machine create --driver digitalocean -h

      Dica: Se você atualizar a página de Droplet do seu painel da DigitalOcean, verá as novas máquinas que você criou usando o comando docker-machine.

      Agora vamos explorar alguns dos outros comandos do Docker Machine.

      Passo 5 — Executando Comandos Adicionais do Docker Machine

      Você viu como provisionar um host Dockerizado usando o subcomando create e como listar os hosts disponíveis para o Docker Machine usando o subcomando ls. Nesta etapa, você aprenderá alguns subcomandos mais úteis.

      Para obter informações detalhadas sobre um host Dockerizado, use o subcomando inspect, da seguinte forma:

      • docker-machine inspect docker-01

      A saída inclui linhas como as da saída mostrada abaixo. A linha Image revela a versão da distribuição Linux usada, e a linha Size indica o slug do tamanho:

      Output

      ... { "ConfigVersion": 3, "Driver": { "IPAddress": "203.0.113.71", "MachineName": "docker-01", "SSHUser": "root", "SSHPort": 22, ... "Image": "ubuntu-16-04-x64", "Size": "s-1vcpu-1gb", ... }, ---

      Para imprimir a configuração de conexão de um host, digite:

      • docker-machine config docker-01

      A saída será smelhante a esta:

      Output

      --tlsverify --tlscacert="/home/kamit/.docker/machine/certs/ca.pem" --tlscert="/home/kamit/.docker/machine/certs/cert.pem" --tlskey="/home/kamit/.docker/machine/certs/key.pem" -H=tcp://203.0.113.71:2376

      A última linha na saída do comando docker-machine config revela o endereço IP do host, mas você também pode obter essa informação digitando:

      • docker-machine ip docker-01

      Se você precisar desligar um host remoto, você pode usar docker-machine para pará-lo:

      • docker-machine stop docker-01

      Verifique se está parado:

      A saída mostra que o status da máquina mudou:

      Ouput

      NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS docker-01 - digitalocean Stopped Unknown

      Para iniciá-la novamente, use o subcomando start:

      • docker-machine start docker-01

      Em seguida, revise seu status novamente:

      Você verá que o STATE agora está definido como Running para o host:

      Ouput

      NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS docker-01 - digitalocean Running tcp://203.0.113.71:2376 v18.06.1-ce

      Em seguida, vamos ver como interagir com o host remoto usando o SSH.

      Passo 6 — Executando Comandos em um Host Dockerizado via SSH

      Neste ponto, você está recebendo informações sobre suas máquinas, mas você pode fazer mais do que isso. Por exemplo, você pode executar comandos nativos do Linux em um host Docker usando o subcomando ssh do docker-machine a partir do seu sistema local. Esta seção explica como executar comandos ssh via docker-machine, bem como abrir uma sessão SSH para um host Dockerizado.

      Supondo que você provisionou uma máquina com o Ubuntu como sistema operacional, execute o seguinte comando em seu sistema local para atualizar o banco de dados de pacotes no host Docker:

      • docker-machine ssh docker-01 apt-get update

      Você pode até mesmo aplicar atualizações disponíveis usando:

      • docker-machine ssh docker-01 apt-get upgrade

      Não tem certeza de qual kernel seu host Docker remoto está usando? Digite o seguinte:

      • docker-machine ssh docker-01 uname -r

      Finalmente, você pode efetuar login no host remoto com o comando docker machine ssh:

      • docker-machine ssh docker-01

      Você estará logado como usuário root e verá algo semelhante ao seguinte:

      Welcome to Ubuntu 16.04.5 LTS (GNU/Linux 4.4.0-131-generic x86_64)
      
       * Documentation:  https://help.ubuntu.com
       * Management:     https://landscape.canonical.com
       * Support:        https://ubuntu.com/advantage
      
        Get cloud support with Ubuntu Advantage Cloud Guest:
          http://www.ubuntu.com/business/services/cloud
      
      14 packages can be updated.
      10 updates are security updates.
      

      Faça o logout digitando exit para retornar à sua máquina local.

      Em seguida, direcionaremos comandos do Docker em nosso host remoto.

      Passo 7 — Ativando um Host Dockerizado

      A ativação de um host Docker conecta seu cliente Docker local a esse sistema, o que possibilita a execução de comandos docker comuns no sistema remoto.

      Primeiro, use o Docker Machine para criar um novo host do Docker chamado docker-ubuntu usando o Ubuntu 18.04:

      • docker-machine create --driver digitalocean --digitalocean-image ubuntu-18-04-x64 --digitalocean-access-token $DOTOKEN docker-ubuntu

      Para ativar um host Docker, digite o seguinte comando:

      • eval $(docker-machine env machine-name)

      Alternativamente, você pode ativá-lo usando este comando:

      • docker-machine use machine-name

      Uma dica ao trabalhar com vários hosts Docker, é que o comando docker-machine use é o método mais fácil de alternar de um para o outro.

      Depois de digitar qualquer um desses comandos, seu prompt será alterado para indicar que o cliente Docker está apontando para o host do Docker remoto. Ele terá essa forma. O nome do host estará no final do prompt:

      username@localmachine:~ [docker-01]$
      

      Agora, qualquer comando docker que você digitar neste prompt de comando será executado naquele host remoto.

      Execute docker-machine ls novamente:

      Você verá um asterisco sob a coluna ACTIVE para docker-01:

      Output

      NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS docker-01 * digitalocean Running tcp://203.0.113.71:2376 v18.06.1-ce

      Para sair do host Docker remoto, digite o seguinte:

      Seu prompt não mostrará mais o host ativo.

      Agora vamos criar containers na máquina remota.

      Passo 8 — Criando Containers Docker em um Host Dockerizado Remoto

      Até agora, você provisionou um Droplet Dockerizado na sua conta DigitalOcean e o ativou — ou seja, seu cliente Docker está apontando para ele. O próximo passo lógico é criar containers nele. Por exemplo, vamos tentar executar o container Nginx oficial.

      Utilize docker-machine use para selecionar sua máquina remota:

      • docker-machine use docker-01

      Em seguida, execute este comando para executar um container Nginx nessa máquina:

      • docker run -d -p 8080:80 --name httpserver nginx

      Neste comando, estamos mapeando a porta 80 no container Nginx para a porta 8080 no host Dockerizado para que possamos acessar a página padrão do Nginx de qualquer lugar.

      Depois que o container for construído, você poderá acessar a página padrão do Nginx apontando seu navegador para http://docker_machine_ip:8080.

      Enquanto o host Docker ainda estiver ativado (conforme visto pelo seu nome no prompt), você poderá listar as imagens nesse host:

      A saída inclui a imagem Nginx que você acabou de usar:

      • Output
      • REPOSITORY TAG IMAGE ID CREATED SIZE
      • nginx latest 71c43202b8ac 3 hours ago 109MB

      Você também pode listar os containers ativos ou em execução no host:

      Se o container Nginx que você executou nesta etapa for o único container ativo, a saída ficará assim:

      Output

      CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d3064c237372 nginx "nginx -g 'daemon of…" About a minute ago Up About a minute 0.0.0.0:8080->80/tcp httpserver

      Se você pretende criar containers em uma máquina remota, seu cliente Docker deve estar apontando para ele — isto é, deve ser a máquina ativa no terminal que você está usando. Caso contrário, você estará criando o container em sua máquina local. Novamente, deixe seu prompt de comando ser seu guia.

      O Docker Machine pode criar e gerenciar hosts remotos e também pode removê-los.

      Passo 9 – Removendo Hosts Docker

      Você pode usar o Docker Machine para remover um host Docker que você criou. Use o comando docker-machine rm para remover o host docker-01 que você criou:

      • docker-machine rm docker-01

      O Droplet é excluído junto com a chave SSH criada para ele. Liste os hosts novamente:

      Desta vez, você não verá o host docker-01 listado na saída. E se você criou apenas um host, você não verá saída alguma.

      Certifique-se de executar o comando docker-machine use -u para apontar seu daemon do Docker local de volta para sua máquina local.

      Passo 10 — Desativando o Relatório de Falhas (Opcinal)

      Por padrão, sempre que uma tentativa de provisionar um host Dockerizado usando o Docker Machine falha, ou o Docker Machine trava, algumas informações de diagnóstico são enviadas para uma conta Docker em Bugsnag. Se você não está confortável com isso, você pode desabilitar o relatório criando um arquivo vazio chamado no-error-report no diretório .docker/machine do seu computador local.

      Para criar o arquivo, digite:

      • touch ~/.docker/machine/no-error-report

      Verifique o arquivo em busca de mensagens de erro para falhas de provisionamento ou travamento do Docker Machine.

      Conclusão

      Você instalou o Docker Machine e o usou para provisionar vários hosts Docker na DigitalOcean remotamente a partir do seu sistema local. A partir daqui, você deve ser capaz de provisionar quantos hosts Dockerizados forem necessários em sua conta DigitalOcean.

      Para mais informações sobre o Docker Machine, visite a página de documentação oficial. Os três scripts Bash baixados neste tutorial estão hospedados nessa página do GitHub.

      Por finid e Brian Hogan



      Source link

      How To Set Up Multi-Node Deployments With Rancher 2.1, Kubernetes, and Docker Machine on Ubuntu 18.04


      The author selected Code Org to receive a donation as part of the Write for DOnations program.

      Introduction

      Rancher is a popular open-source container management platform. Released in early 2018, Rancher 2.X works on Kubernetes and has incorporated new tools such as multi-cluster management and built-in CI pipelines. In addition to the enhanced security, scalability, and straightforward deployment tools already in Kubernetes, Rancher offers a graphical user interface that makes managing containers easier. Through Rancher’s GUI, users can manage secrets, securely handle roles and permissions, scale nodes and pods, and set up load balancers and volumes without needing a command line tool or complex YAML files.

      In this tutorial, you will deploy a multi-node Rancher 2.1 server using Docker Machine on Ubuntu 18.04. By the end, you’ll be able to provision new DigitalOcean Droplets and container pods via the Rancher UI to quickly scale up or down your hosting environment.

      Prerequisites

      Before you start this tutorial, you’ll need a DigitalOcean account, in addition to the following:

      • A DigitalOcean Personal Access Token, which you can create following the instructions in this tutorial. This token will allow Rancher to have API access to your DigitalOcean account.

      • A fully registered domain name with an A record that points to the IP address of the Droplet you create in Step 1. You can learn how to point domains to DigitalOcean Droplets by reading through DigitalOcean’s Domains and DNS documentation. Throughout this tutorial, substitute your domain for example.com.

      Step 1 — Creating a Droplet With Docker Installed

      To start and configure Rancher, you’ll need to create a new Droplet with Docker installed. To accomplish this, you can use DigitalOcean’s Docker image.

      First, log in to your DigitalOcean account and choose Create Droplet. Then, under the Choose an Image section, select the Marketplace tab. Select Docker 18.06.1~ce~3 on 18.04.

      Choose the Docker 18.06 image from the One-click Apps menu

      Next, select a Droplet no smaller than 2GB and choose a datacenter region for your Droplet.

      Finally, add your SSH keys, provide a host name for your Droplet, and press the Create button.

      It will take a few minutes for the server to provision and for Docker to download. Once the Droplet deploys successfully, you’re ready to start Rancher in a new Docker container.

      Step 2 — Starting and Configuring Rancher

      The Droplet you created in Step 1 will run Rancher in a Docker container. In this step, you will start the Rancher container and ensure it has a Let’s Encrypt SSL certificate so that you can securely access the Rancher admin panel. Let’s Encrypt is an automated, open-source certificate authority that allows developers to provision ninety-day SSL certificates for free.

      Log in to your new Droplet:

      To make sure Docker is running, enter:

      Check that the listed Docker version is what you expect. You can start Rancher with a Let's Encrypt certificate already installed by running the following command:

      • docker run -d --restart=unless-stopped -p 80:80 -p 443:443 -v /host/rancher:/var/lib/rancher rancher/rancher --acme-domain example.com

      The --acme-domain option installs an SSL certificate from Let's Encrypt to ensure your Rancher admin is served over HTTPS. This script also instructs the Droplet to fetch the rancher/rancher Docker image and start a Rancher instance in a container that will restart automatically if it ever goes down accidentally. To ease recovery in the event of data loss, the script mounts a volume on the host machine (at /host/rancher) that contains the Rancher data.

      To see all the running containers, enter:

      You'll see output similar to the following (with a unique container ID and name):

      Output

      CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7b2afed0a599 rancher/rancher "entrypoint.sh" 12 seconds ago Up 11 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp wizardly_fermat

      If the container is not running, you can execute the docker run command again.

      Before you can access the Rancher admin panel, you'll need to set your admin password and Rancher server URL. The Rancher admin interface will give you access to all of your running nodes, pods, and secrets, so it is important that you use a strong password for it.

      Go to the domain name that points to your new Droplet in your web browser. The first time you visit this address, Rancher will let you set a password:

      Set your Rancher password using the prompt

      When asked for your Rancher server URL, use the domain name pointed at your Droplet.

      You have now completed your Rancher server setup, and you will see the Rancher admin home screen:

      The Rancher admin home screen

      You're ready to continue to the Rancher cluster setup.

      Step 3 — Configuring a Cluster With a Single Node

      To use Rancher, you'll need to create a cluster with at least one node. A cluster is a group of one or more nodes. This guide will give you more information about the Kubernetes Architecture. In this tutorial, nodes correspond to Droplets that Rancher will manage. Pods represent a group of running Docker containers within the Droplet. Each node can run many pods. Using the Rancher UI, you can set up clusters and nodes in an underlying Kubernetes environment.

      By the end of this step, you will have set up a cluster with a single node ready to run your first pod.

      In Rancher, click Add Cluster, and select DigitalOcean as the infrastructure provider.

      Select DigitalOcean from the listed infrastructure providers

      Enter a Cluster Name and scroll down to the Node Pools section. Enter a Name Prefix, leave the Count at 1 for now, and check etcd, Control Plane, and Worker.

      • etcd is Kubernetes' key value storage system for keeping your entire environment's state. In order to maintain high availability, you should run three or five etcd nodes so that if one goes down your environment will still be manageable.
      • Control Plane checks through all of the Kubernetes Objects — such as pods — in your environment and keeps them up to date with the configuration you provide in the Rancher admin interface.
      • Workers run the actual workloads and monitoring agents that ensure your containers stay running and networked. Worker nodes are where your pods will run the software you deploy.

      Create a Node Pool with a single Node

      Before creating the cluster, click Add Node Template to configure the specific options for your new node.

      Enter your DigitalOcean Personal Access Token in the Access Token input box and click Next: Configure Droplet.

      Next, select the same Region and Droplet Size as Step 1. For Image, be sure to select Ubuntu 16.04.5 x64 as there's currently a compatibility issue with Rancher and Ubuntu 18.04. Hit Create to save the template.

      Finally, click Create at the Add Cluster page to kick off the provisioning process. It will take a few minutes for Rancher to complete this step, but you will see a new Droplet in your DigitalOcean Droplets dashboard when it's done.

      In this step, you've created a new cluster and node onto which you will deploy a workload in the next section.

      Step 4 — Deploying a Web Application Workload

      Once the new cluster and node are ready, you can deploy your first pod in a workload. A Kubernetes Pod is the smallest unit of work available to Kubernetes and by extension Rancher. Workloads describe a single group of pods that you deploy together. For example, you may run multiple pods of your webserver in a single workload to ensure that if one pod slows down with a particular request, other instances can handle incoming requests. In this section, you're going to deploy a Nginx Hello World image to a single pod.

      Hover over Global in the header and select Default. This will bring you to the Default project dashboard. You'll focus on deploying a single project in this tutorial, but from this dashboard you can also create multiple projects to achieve isolated container hosting environments.

      To start configuring your first pod, click Deploy.

      Enter a Name, and put nginxdemos/hello in the Docker Image field. Next, map port 80 in the container to port 30000 on the host nodes. This will ensure that the pods you deploy are available on each node at port 30000. You can leave Protocol set to TCP, and the next dropdown as NodePort.

      Note: While this method of running the pod on every node's port is easier to get started, Rancher also includes Ingress to provide load balancing and SSL termination for production use.

      The input form for deploying a Workload

      To launch the pod, scroll to the bottom and click Launch.

      Rancher will take you back to the default project home page, and within a few seconds your pod will be ready. Click the link 30000/tcp just below the name of the workload and Rancher will open a new tab with information about the running container's environment.

      Server address, Server name, and other output from the running NGINX container

      The Server address and port you see on this page are those of the internal Docker network, and not the public IP address you see in your browser. This means that Rancher is working and routing traffic from http://first_node_ip:30000/ to the workload as expected.

      At this point, you've successfully deployed your first workload of one pod to a single Rancher node. Next, you'll see how to scale your Rancher environment.

      Step 5 — Scaling Nodes and Pods

      Rancher gives you two ways to scale your hosting resources: increasing the number of pods in your workload or increasing the number of nodes in your cluster.

      Adding pods to your workload will give your application more running processes. This will allow it to handle more traffic and enable zero-downtime deployments, but each node can handle only a finite number of pods. Once all your nodes have hit their pod limit, you will have to increase the number of nodes if you want to continue scaling up.

      Another consideration is that while increasing pods is typically free, you will have to pay for each node you add to your environment. In this step, you will scale up both nodes and pods, and add another node to your Rancher cluster.

      Note: This part of the tutorial will provision a new DigitalOcean Droplet automatically via the API, so be aware that you will incur extra charges while the second node is running.

      Navigate to the cluster home page of your Rancher installation by selecting Cluster: your-cluster-name from the top navigation bar. Next click Nodes from the top navigation bar.

      Use the top navbar dropdown to select your Cluster

      This page shows that you currently have one running node in the cluster. To add more nodes, click Edit Cluster, and scroll to the Node Pools section at the bottom of the page. Click Add Node Pool, enter a prefix, and check the Worker box. Click Save to update the cluster.

      Add a Node Pool as a Worker only

      Within 2–5 minutes, Rancher will provision a second droplet and indicate the node as Active in the cluster's dashboard. This second node is only a worker, which means it will not run the Rancher etcd or Control Plane containers. This allows the Worker more capacity for running workloads.

      Note: Having an uneven number of etcd nodes will ensure that they can always reach a quorum (or consensus). If you only have one etcd node, you run the risk of your cluster being unreachable if that one node goes down. In a production environment it is a better practice to run three or five etcd nodes.

      When the second node is ready, you will be able to see the workload you deployed in the previous step on this node by navigating to http://second_node_ip:30000/ in your browser.

      Scaling up nodes gives you more Droplets to distribute your workloads on, but you may also want to run more instances of each pod within a workload. To add more pods, return to the Default project page, press the arrow to the left of your hello-world workload, and click + twice to add two more pods.

      Running three Hello World Pods in a Workload

      Rancher will automatically deploy more pods and distribute the running containers to each node depending on where there is availability.

      You can now scale your nodes and pods to suit your application's requirements.

      Conclusion

      You've now set up multi-node deployments using Rancher 2.1 on Ubuntu 18.04, and have scaled up to two running nodes and multiple pods within a workload. You can use this strategy to host and scale any kind of Docker container that you need to run in your application and use Rancher's dashboard and alerts to help you maximize the performance of your workloads and nodes within each cluster.



      Source link