Diretório de artigos
-
- 1. Informações de planejamento de arquitetura de cluster
- 2. Preparação da inicialização do sistema (operação síncrona de todos os nós)
- 3. Instale kubeadm (operação síncrona de todos os nós)
- 4. Inicialize o cluster K8S (operação do nó mestre)
- 5. Adicione nós de nó ao cluster K8S
- 6. Instale o plug-in de rede Calico
- 7. Teste a disponibilidade do CoreDNS
1. Informações de planejamento de arquitetura de cluster
- Segmento de rede do pod: 10.244.0.0/16
- segmento de rede de serviço: 10.10.0.0/16
- Nota: Os segmentos de pod e rede de serviço não podem entrar em conflito. Se houver um conflito, a instalação do cluster K8S falhará.
informação do servidor:
nome da CPU | endereço de IP | sistema operacional |
---|---|---|
k8s-master-1 | 16.32.15.123 | 20.04.1-Ubuntu |
k8s-node-1 | 16.32.15.124 | 20.04.1-Ubuntu |
2. Preparação da inicialização do sistema (operação síncrona de todos os nós)
1. Para trocar root
de usuário, as seguintes operações root
são executadas pelos usuários
sudo -i
2. Configure a origem do armazém doméstico e instale as dependências necessárias
. Nota: O seguinte é Ubuntu20.04
um exemplo da origem do armazém do sistema. Se a versão do sistema for diferente, você pode encontrar a versão correspondente no armazém espelho Ali! !
cd /etc/apt
cp sources.list sources.list_default
> sources.list
cat >> sources.list << EOF
deb https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
# deb https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
EOF
apt-get update
apt-get upgrade
Instale as dependências necessárias
apt-get install -y apt-transport-https ca-certificates curl software-properties-common gnupg2
3. Adicionar resolução de nome de domínio local
cat >> /etc/hosts << EOF
16.32.15.123 k8s-master-1
16.32.15.124 k8s-node-1
EOF
Modifique o nome do host, copie para o servidor correspondente para executar
hostnamectl set-hostname k8s-master-1 && bash
hostnamectl set-hostname k8s-node-1 && bash
4. Instale ntpdate
para manter o horário do servidor consistente
apt install ntpdate
ntpdate ntp1.aliyun.com
Configure tarefas cronometradas para sincronizar automaticamente o horário à 1h todos os dias
crontab -e
0 1 * * * ntpdate ntp1.aliyun.com
Ctrl+c
Ctrl+x
Y
Enter
Salvar e sair
Verifique se a tarefa agendada foi configurada com sucesso
crontab -l
5. Feche a partição swap
swapoff --all
Proibir a inicialização a partir da partição de troca de troca de inicialização
sed -i -r '/swap/ s/^/#/' /etc/fstab
6. Instale o Docker
para adicionar a chave ao banco de dados confiável local
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
Adicionar repositório do Docker
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
$(lsb_release -cs) \
stable"
Instalar Docker
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
Configurar o driver do Docker
cat <<EOF | tee /etc/docker/daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://aoewjvel.mirror.aliyuncs.com"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
Inicie o Docker && junte-se ao início automático da inicialização
mkdir -p /etc/systemd/system/docker.service.d
systemctl daemon-reload
systemctl restart docker
systemctl enable --now docker
systemctl status docker
3. Instale kubeadm (operação síncrona de todos os nós)
1. Configure a fonte doméstica yum, e o pré-requisito de instalação depende
apt-get update && apt-get install -y apt-transport-https curl
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main
EOF
Instalar dependências
apt-get update && apt-get install -y apt-transport-https curl
Erro relatado durante a execução:
Solução:
Obs: A KEY aqui não é única, circulei em vermelho na imagem acima, copie sua KEY e execute novamente
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com B53DC80D13EDEF05
apt-get update && apt-get install -y apt-transport-https curl
2. Instale kubeadm, kubelet, kubectl
apt-get install -y kubelet=1.23.1-00 kubeadm=1.23.1-00 kubectl=1.23.1-00
Adicionar início automático
systemctl enable kubelet
Marcar o pacote especificado como retido, impedindo atualizações automáticas de software
apt-mark hold kubelet kubeadm kubectl
4. Inicialize o cluster K8S (operação do nó mestre)
kubeadm init \
--apiserver-advertise-address 16.32.15.123 \
--image-repository registry.cn-hangzhou.aliyuncs.com/google_containers \
--pod-network-cidr=10.244.0.0/16 \
--service-cidr=10.96.0.0/12 \
--ignore-preflight-errors=SystemVerification
Explicação das informações do parâmetro de inicialização:
-
image-repository: Especifique a fonte de imagem do Alibaba Cloud na China
-
pod-network-cidr: segmento de rede pod
-
service-cidr: segmento da rede de serviços
-
apiserver-advertise-address: apiserver地址
-
ignore-preflight-errors: ignore alguns erros verificados
Como o kubernetes usa o certificado CA por padrão, é necessário configurar o certificado para o kubectl acessar o Master
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Teste kubectl
se o comando pode ser usado
kubectl get node
5. Adicione nós de nó ao cluster K8S
1. O comando kubeadm obtém aqueles que se juntam ao cluster token
(executado pelo nó mestre)
kubeadm token create --print-join-command
kubeadm join 16.32.15.123:6443 --token kczwmr.x2ekr2pjq5iuhquh --discovery-token-ca-cert-hash sha256:2c8b60dfb13094634cd1476c902dd08e23042a1fb0d23f998c361d30655071f1
2. Copie o adquirido para ingressar no cluster token
para o nó Node! (execução do nó do nó)
kubeadm join 16.32.15.123:6443 --token kczwmr.x2ekr2pjq5iuhquh --discovery-token-ca-cert-hash sha256:2c8b60dfb13094634cd1476c902dd08e23042a1fb0d23f998c361d30655071f1
3. Exibir informações do nó do cluster (executado pelo nó principal)
kubectl get node
OK, como você pode ver na figura acima, o nó ingressou com sucesso no cluster K8S.
6. Instale o plug-in de rede Calico
Como o calico oficial está no exterior, o download é relativamente lento, afinal tem uma parede. Baixei calico.yaml
o arquivo e coloquei gitee
no nacional. Em seguida, usarei o endereço doméstico para baixar calico.yaml
o arquivo, por favor, saiba!
O nó mestre executa:
wget -O /root/calico.yaml https://gitee.com/qinziteng/K8S/raw/master/YMAL/calico.yaml
kubectl apply -f calico.yaml
Veja o status do pod do cluster:
kubectl get pods -n kube-system
Verifique o status do nó do nó do cluster:
kubectl get node
Como acima, está correto, se ainda não estiver pronto, você precisa esperar um pouco ~
7. Teste a disponibilidade do CoreDNS
1. Crie um contêiner de teste
kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- sh
2. Teste se pode ser analisado normalmente
nslookup kubernetes.default.svc.cluster.local
Como mostrado na figura acima, ele pode ser analisado normalmente. Até agora, o cluster da versão K8S1.23 baseado no sistema operacional Ubuntu20.04 foi implantado com sucesso e está correto!