Kubernetes: Instalação Online usando repositórios públicos

From Wiki

Dica: Caso você não tenha acesso ao repositório na internet, veja o artigo Kubernetes: Instalação Offline ou Instalação usando repositórios privados

Docker

Instalando o Docker

1) Criar arquivo /etc/yum.repos.d/docker-ce.repo, com o conteúdo:

[docker-ce]
name=Docker CE Stable - $basearch
baseurl=https://download.docker.com/linux/centos/7/$basearch/stable
#baseurl=http://repomirror.company.com/docker-mirror/linux/centos/7/$basearch/stable/
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
#gpgkey=http://repomirror.company.com/docker-mirror/linux/centos/gpg
 

2) Instalando os pacotes no CentOS

yum install -y docker-ce-18.06

3) Remover o arquivoo

/etc/yum.repos.d/docker-ce.repo

Configure Docker with the devicemapper storage driver

Parando o docker

systemctl stop docker

Criando o device mapper

pvcreate /dev/xvdf
vgcreate dockerVg /dev/xvdf
lvcreate --wipesignatures y -n thinpoolLv dockerVg -l 95%VG
lvcreate --wipesignatures y -n thinpoolmetaLv dockerVg -l 1%VG
lvconvert -y --zero n -c 512K --thinpool dockerVg/thinpoolLv --poolmetadata dockerVg/thinpoolmetaLv

Definir /etc/lvm/profile/dockerVg-thinpoolLv.profile

activation {
 thin_pool_autoextend_threshold=80
 thin_pool_autoextend_percent=20
}
lvchange --metadataprofile dockerVg-thinpoolmetaLv dockerVg/thinpoolLv
lvs -o+seg_monitor


Configuração pós-instalação

1) Tuning do SO

sysctl -a | grep may_detach_mounts

Se o valor for diferente de "fs.may_detach_mounts = 1", ajustar:

echo 1 > /proc/sys/fs/may_detach_mounts
echo fs.may_detach_mounts=1 > /usr/lib/sysctl.d/99-docker.conf

3) Editar o arquivo /etc/docker/daemon.json e configurar o devicemapper storage driver.

Importante: No meu caso precisava utilizar um repositório interno, então adicionei a variável insecure-registries.
mkdir -p /etc/docker
 
cat <<EOF >> /etc/docker/daemon.json
{
    "bip": "1.1.1.1/16",
    "insecure-registries": ["repomirror.company.com:5001"],
    "storage-driver": "devicemapper",
    "storage-opts": [
        "dm.thinpooldev=/dev/mapper/dockerVg-thinpoolLv",
        "dm.use_deferred_removal=true",
        "dm.use_deferred_deletion=true"
    ]
}
EOF
 

4) Start o Docker

systemctl start docker

5) Verificando as configurações

docker info

6) Se tudo estiver correto ajustar para iniciar automaticamente

systemctl enable docker

Verificando problemas

Inspecionando os logs do docker:

journalctl -ul docker

Kubernetes

Instalando o Kubernetes

1) Criar arquivo /etc/yum.repos.d/kubernetes.repo, com o conteúdo:

[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kube*
 

2) Instalando os pacotes no CentOS

yum install -y kubelet-1.11.9 kubeadm-1.11.9 kubectl-1.11.9

3) Remover o arquivoo

/etc/yum.repos.d/kubernetes.repo

4) Start o Kubernetes

systemctl start kubelet

6) Se tudo estiver correto ajustar para iniciar automaticamente

systemctl enable kubelet


Create a kubeadm-config.yaml

Criar arquivo kubeadm-config.yaml, com o conteúdo:

 kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1alpha2
kind: MasterConfiguration
apiServerExtraArgs:
  enable-admission-plugins: PodSecurityPolicy
kubernetesVersion: v1.11.9
networking:
    # This CIDR is a Calico default. Substitute or remove for your CNI provider.
    podSubnet: "192.168.0.0/16"


Initialize the master.

kubeadm init --config=kubeadm-config.yaml

To make kubectl work,

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

Ver também