Demonstração prática da implantação openEuler do cluster da versão Kubernetes 1.29.4

Este artigo foi compartilhado pela Huawei Cloud Community " OpenEuler Deploys Kubernetes 1.29.4 Version Cluster " por Jiang Wanzhengchouyu.

1. Preparação do nó do cluster Kubernetes

1.1 Descrição do sistema operacional host

Observações do sistema operacional e versão do número de série
1 CentOS7u9 ou OpenEuler2203

1.2 Descrição da configuração de hardware host

Requisitos Memória CPU função do disco rígido nome do host
valor 8C 8G 1024GB mestre k8s-master01
valor 8C 16G 1024GB trabalhador (nó) k8s-worker01
valor 8C 16G 1024GB trabalhador (nó) k8s-worker02

1.3 Configuração do host

1.3.1 Configuração do nome do host

Como desta vez três hosts são usados ​​para concluir a implantação do cluster Kubernetes, um deles é o nó mestre, denominado k8s-master01, dois deles são nós de trabalho, denominados: k8s-worker01 e k8s-worker02;

# nó mestre

hostnamectl set-nome do host k8s-master01

#worker01node
hostnamectl set-nome do host k8s-worker01
 
#worker02node
hostnamectl set-nome do host k8s-worker02

1.3.2 Endereço IP, resolução de nomes e confiança mútua

A configuração #IP não será explicada aqui.

#A seguir está a configuração da resolução de nomes
[root@k8s-master01 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.11 k8s-master01
192.168.0.12 k8s-worker01
192.168.0.13 k8s-worker02

#Host configuração de confiança mútua  
[root@k8s-master01 ~]#ssh-keygen
Gerando par de chaves RSA pública/privada.
Insira o arquivo no qual deseja salvar a chave (/root/.ssh/id_rsa):
Digite a senha (vazia se não houver senha):
Digite a mesma senha novamente:
Sua identificação foi salva em /root/.ssh/id_rsa
Sua chave pública foi salva em /root/.ssh/id_rsa.pub
A impressão digital principal é:
SHA256:Rr6W4rdnY350fzMeszeWFR/jUJt0VOZ3yZECp5VJJQA root@k8s-master01
A imagem aleatória da chave é:
+---[RSA3072]----+
|         E.o+=++*|
|            ++o*+|
| . . +oB|
|       o     . *o|
| Então =|
|       . o  . ..o|
|      . +  . . +o|
| . ó. = . *B|
| ...*.ou sim*|
+----[SHA256]-----+
[root@k8s-master01 ~]# for i in {11..13};do ssh-copy-id 192.168.0.${i};feito

/usr/bin/ssh-copy-id: INFO: Fonte das chaves a serem instaladas: "/root/.ssh/id_rsa.pub"
A autenticidade do host '192.168.0.11 (192.168.0.11)' não pode ser estabelecida.
A impressão digital da chave ED25519 é SHA256:s2R582xDIla4wyNozHa/HEmRR7LOU4WAciEcAw57U/Q.
Esta chave não é conhecida por nenhum outro nome
Tem certeza de que deseja continuar se conectando (sim/não/[impressão digital])? sim
/usr/bin/ssh-copy-id: INFO: tentando fazer login com as novas chaves, para filtrar qualquer uma que já esteja instalada
/usr/bin/ssh-copy-id: INFO: 1 chave(s) ainda precisa(m) ser instalada(s) - se você for solicitado agora, é para instalar as novas chaves

Somente usuários autorizados. Todas as atividades podem ser monitoradas e relatadas.
Senha de [email protected]:

Número de chaves adicionadas: 1

1.3.4 Configuração do firewall

Todos os hosts requerem operação.

Desative o firewall existente firewalld

# systemctl desabilita firewalld

# systemctl parar firewalld

ou

systemctl desabilitar --now firewalld

Ver o status do firewall

# firewall-cmd --estado

não está funcionando

Comando de execução de referência:

[root@k8s-master01 ~]# for i in {11..13};do ssh 192.168.0.${i} 'systemctl disable --now firewalld' ;feito

Somente usuários autorizados. Todas as atividades podem ser monitoradas e relatadas.

Somente usuários autorizados. Todas as atividades podem ser monitoradas e relatadas.

Somente usuários autorizados. Todas as atividades podem ser monitoradas e relatadas.
[root@k8s-master01 ~]# for i in {11..13};do ssh 192.168.0.${i} 'firewall-cmd --state' ;feito

Somente usuários autorizados. Todas as atividades podem ser monitoradas e relatadas.
não está funcionando

Somente usuários autorizados. Todas as atividades podem ser monitoradas e relatadas.
não está funcionando

Somente usuários autorizados. Todas as atividades podem ser monitoradas e relatadas.
não está funcionando

1.3.5 Configuração SELINUX

Todos os hosts requerem operação. Modificar a configuração do SELinux requer a reinicialização do sistema operacional.

# sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# status

Comando de execução de referência:

[root@k8s-master01 ~]# for i in {11..13};do ssh 192.168.0.${i} 'sed -ri 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/ configuração' ;concluído

Somente usuários autorizados. Todas as atividades podem ser monitoradas e relatadas.

Somente usuários autorizados. Todas as atividades podem ser monitoradas e relatadas.

Somente usuários autorizados. Todas as atividades podem ser monitoradas e relatadas.
 
[root@k8s-master01 ~]# for i in {11..13};do ssh 192.168.0.${i} 'sestatus' ;feito

Somente usuários autorizados. Todas as atividades podem ser monitoradas e relatadas.
Status do SELinux: desabilitado

Somente usuários autorizados. Todas as atividades podem ser monitoradas e relatadas.
Status do SELinux: desabilitado

Somente usuários autorizados. Todas as atividades podem ser monitoradas e relatadas.
Status do SELinux: desabilitado

1.3.6 Configuração de sincronização de horário

Todos os hosts requerem operação. O sistema de instalação mínimo requer a instalação do software ntpdate.

# crontab -l

0 */1 * * * /usr/sbin/ntpdate time1.aliyun.com
for i in {11..13};do ssh 192.168.0.${i} ' echo '0 */1 * * * /usr/sbin/ntpdate time1.aliyun.com' >> /etc/crontab' ; feito
#Definir fuso horário de Xangai, Oitavo Distrito Leste

timedatectl definir fuso horário Ásia/Xangai

for i in {11..13};do ssh 192.168.0.${i} 'timedatectl set-timezone Ásia/Xangai' ;feito

1.3.7 Atualizar kernel do sistema operacional

O sistema CentOS precisa atualizar o conteúdo, especificamente o Baidu, o OpenEuler2203 não precisa

1.3.8 Configurar encaminhamento de roteamento do kernel e filtragem de ponte

Todos os hosts requerem operação.

Adicionar arquivos de configuração de filtragem de ponte e encaminhamento de kernel

sed -i 's/net.ipv4.ip_forward=0/net.ipv4.ip_forward=1/g' /etc/sysctl.conf
# cat > /etc/sysctl.d/k8s.conf << EOF

net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward = 1
vm.swappiness = 0
EOF
#Configurar e carregar o módulo br_netfilter

gato <<EOF | sudo tee /etc/modules-load.d/k8s.conf
sobreposição
br_netfilter
EOF

#Carregar módulo de sobreposição br_netfilter
modprobe br_netfilter
sobreposição modprobe
#Verifique se está carregado

#lsmod | grep br_netfilter

br_netfilter 22256 0
ponte 151336 1 br_netfilter

# Torne-o eficaz

 sysctl --sistema

# Use o arquivo de configuração padrão para entrar em vigor
sysctl -p

# Use o arquivo de configuração recém-adicionado para entrar em vigor
sysctl -p /etc/sysctl.d/k8s.conf

1.3.9 Instalar ipset e ipvsadm

Todos os hosts requerem operação.

Instale ipset e ipvsadm

# yum -y instala ipset ipvsadm
Configure o método de carregamento do módulo ipvsadm
Adicione módulos que precisam ser carregados

# cat > /etc/sysconfig/modules/ipvs.modules <<EOF

#!/bin/bash
modprobe-ip_vs
modprobe --ip_vs_rr
modprobe --ip_vs_wrr
modprobe --ip_vs_sh
modprobe --nf_conntrack
EOF
 
Autorizar, executar, verificar se carregado
chmod 755 /etc/sysconfig/modules/ipvs.module && /etc/sysconfig/modules/ipvs.module

Verifique se o módulo correspondente foi carregado com sucesso
#lsmod | grep -e ip_vs -e nf_conntrack_ipv4

1.3.10 Fechar partição SWAP

Após a conclusão da modificação, o sistema operacional precisa ser reiniciado. Se não for reiniciado, ele poderá ser desligado temporariamente. O comando é swapoff -a.

Feche a partição swap permanentemente e precise reiniciar o sistema operacional

# cat /etc/fstab

......

# /dev/mapper/centos-swap swap swap padrões 0 0

Adicione # no início da linha anterior

2. Instalação do ambiente de contêiner Containerd

2.1 Instale o pacote de ambiente containerd

Todos os hosts requerem operação.

#Arquivos compactados

para i in {11..13};do ssh 192.168.0.${i} ' wget https://blog-source-mkt.oss-cn-chengdu.aliyuncs.com/resources/k8s/kubeadm%20init/ k8s1.29.tar.gz'; feito

# Descompacte o containerd e instale-o
para i in {11..13};faça ssh 192.168.0.${i} ' tar -zxvf /root/k8s1.29.tar.gz'; feito

para i in {11..13};do ssh 192.168.0.${i} ' tar -zxvf /root/workdir/containerd-1.7.11-linux-amd64.tar.gz && mv /root/bin/* /usr/local/bin/ && rm -rf /root/bin'; feito
# Crie um serviço, todos os hosts devem operar
gato << EOF > /usr/lib/systemd/system/containerd.service
[Unidade]
Descrição=tempo de execução do contêiner containerd
Documentação=https://containerd.io
Depois=network.target local-fs.target

[Serviço]
Sobreposição de ExecStartPre=-/sbin/modprobe
ExecStart=/usr/local/bin/containerd

Tipo = notificar
Delegado = sim
KillMode=processo
Reiniciar = sempre
ReiniciarSeg=5

# Ter limites diferentes de zero causa problemas de desempenho devido à sobrecarga contábil
# no kernel. Recomendamos o uso de cgroups para fazer contabilidade local de contêiner.
LimitNPROC=infinito
LimitCORE=infinito

# Comente TasksMax se sua versão do systemd não for compatível.
# Somente systemd 226 e superior suportam esta versão.
TasksMax=infinito
OOMScoreAdjust=-999

[Instalar]
WantedBy = multiusuário.target
EOF
#Iniciar serviço de contêiner
for i in {11..13};do ssh 192.168.0.${i} 'systemctl daemon-reload && systemctl enable --now containerd '; feito

#Instalar o runc
para i em {11..13};do ssh 192.168.0.${i} 'install -m 755 /root/workdir/runc.amd64 /usr/local/sbin/runc '; feito
#Instale o plug-in cni
para i in {11..13};faça ssh 192.168.0.${i} 'mkdir -p /opt/cni/bin && tar -xzvf /root/workdir/cni-plugins-linux-amd64-v1.4.0 .tgz -C /opt/cni/bin/ '; feito
# Gere o arquivo de configuração do contêiner e modifique-o
for i in {11..13};do ssh 192.168.0.${i} 'mkdir -p /etc/containerd && containerd config default | sudo tee /etc/containerd/config.toml '; feito
 
# Modifique a imagem do sandbox, todos os hosts devem operar

sed -i 's#sandbox_image = "registry.k8s.io/pause:.*"#sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.9"#' /etc/containerd/config.toml
#Reiniciar contêiner
systemctl reiniciar contêinerd

2.2 Instale k8s no host mestre

# Configure a fonte k8s v2.19, todos os nós devem estar instalados
gato <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
nome=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/
habilitado=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.29/rpm/repodata/repomd.xml.key
EOF
#Instale as ferramentas k8s, todos os nós devem estar instalados
yum limpe tudo && yum makecache

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
# Configure o kubelet Para obter consistência entre o cgroupdriver usado pelo docker e o cgroup usado pelo kubelet, é recomendado modificar o seguinte conteúdo do arquivo. Todos os nós precisam ser instalados

# vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"

Ou o seguinte comando
echo 'KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"' > /etc/sysconfig/kubelet
systemctl habilitar kubelet

#Observação, não inicie o kubelet, o kubeadm será iniciado automaticamente. Se for iniciado, a instalação reportará um erro.

# Instale o comando k8s e execute-o no nó mestre. Existe apenas a imagem da versão 1.29.4 aqui.

kubeadm init --apiserver-advertise-address=192.168.0.11 --image-repository Registry.aliyuncs.com/google_containers --kubernetes-version v1.29.4 --service-cidr=10.96.0.0/12 --pod-network- cidr=10.224.0.0/16
#Finalmente execute o seguinte comando
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

exportar KUBECONFIG=/etc/kubernetes/admin.conf

2.3 Instale o plug-in de rede calico

kubectl aplicar -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.1/manifests/calico.yaml
#Finalmente verifique o status dos nós e ramificações do pod

kubectl obtém nós
 
kubectl obtém pods -A

 

Clique para seguir e conhecer as novas tecnologias da Huawei Cloud o mais rápido possível~

Linus assumiu a responsabilidade de evitar que os desenvolvedores do kernel substituíssem tabulações por espaços. Seu pai é um dos poucos líderes que sabe escrever código, seu segundo filho é o diretor do departamento de tecnologia de código aberto e seu filho mais novo é um núcleo de código aberto. contribuidor Robin Li: A linguagem natural se tornará uma nova linguagem de programação universal. O modelo de código aberto ficará cada vez mais atrás da Huawei: levará 1 ano para migrar totalmente 5.000 aplicativos móveis comumente usados ​​para Hongmeng. vulnerabilidades de terceiros. O editor de rich text Quill 2.0 foi lançado com recursos, confiabilidade e desenvolvedores. A experiência foi bastante melhorada, Ma Huateng e Zhou Hongyi apertam as mãos para "eliminar rancores" Meta Llama 3 é lançado oficialmente. de Laoxiangji não é o código, as razões por trás disso são muito comoventes. O Google anunciou uma reestruturação em grande escala.
{{o.nome}}
{{m.nome}}

Acho que você gosta

Origin my.oschina.net/u/4526289/blog/11053977
Recomendado
Clasificación