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.