Ubantu usa kubeadm para implementar kubernetes1.25.10+cri-docker

Construcción de clúster k8s basado en sistema Ubantu

prefacio

        Todavía hay relativamente pocos artículos sobre los k8 de versión alta en Internet, por lo que publicaré un artículo después de mucho tiempo de investigación, con la esperanza de ayudar a todos.

1. ¿Qué es Kubernetes?

        Kubernetes fue originalmente diseñado y desarrollado por ingenieros de Google. Google, uno de los primeros contribuyentes a la tecnología de contenedores de Linux, dio una charla pública sobre cómo Google ejecuta todo en contenedores (la tecnología detrás de los servicios en la nube de Google). Google implementa más de 2 mil millones de contenedores a la semana, todos impulsados ​​por su plataforma interna, Borg. Borg es el predecesor de Kubernetes, y las lecciones aprendidas del desarrollo de Borg a lo largo de los años se han convertido en un factor importante que influye en muchas tecnologías en Kubernetes.

2. Preparación ambiental

  1. Tres anfitriones ubantu

  2. Es necesario para poder acceder a Internet. Para la instalación fuera de línea, los recursos como las imágenes espejo y los paquetes dependientes deben prepararse con anticipación.

El plan de direcciones IP es el siguiente:

nombre del nodo Dirección IP interna dirección de la puerta de enlace interna
k8s-maestro-1 192.168.1.1/24 192.168.1.254
k8s-nodo-1 192.168.1.2/24 192.168.1.254
k8s-nodo-2 19.168.1.3/24 192.168.1.254

Dependencia añadida:

Como lo construí en un entorno de prueba, uso el usuario root para operar, y marcaré qué pasos debe realizar cada nodo.

Operación de tres nodos

  • Configuracion basica
#临时关闭swap
swapoff -a
#配置内核参数,开启路由转发功能
cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF
#生效内核配置
sysctl -p
  • Configurar dependencias apt, instalar complementos docker y cri-docker

¡Hay un gran agujero aquí! ! ! Es decir, cuando la versión de su clúster k8s es superior a la versión admitida por cri-docker, el tiempo de espera de respuesta ocurrirá al inicializar el clúster k8s. Al confirmar que los parámetros configurados en el archivo de servicio son correctos, asegúrese de que cri-docker admita

¡Apoye el clúster k8s que desea implementar!

#配置apt依赖环境
apt-get update
apt-get install -y ca-certificates curl gnupg lsb-release net-tools  
#添加gpg密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker.gpg

#设置docker源密钥
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list

#安装docker
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

#获取新版cri-docker包
wget https://ghproxy.com/https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.2/cri-dockerd_0.3.2.3-0.ubuntu-jammy_amd64.deb
#安装cri-docker
dpkg -i cri-dockerd_0.2.5.3-0.ubuntu-jammy_amd64.deb


#添加cri-docker启动参数
sed -i -e 's#ExecStart=.*#ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.8#g' /usr/lib/systemd/system/cri-docker.service

#重新加载服务的配置文件并且启动服务
systemctl daemon-reload
sysetmctl start cri-docker
systemctl enable cri-docker
  • Configure la fuente de kubernetes y use la fuente de Ali en China para acelerar la obtención de imágenes
#更新apt源
apt-get update
apt-get install -y apt-transport-https curl

#配置阿里k8s源密钥
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
tee /etc/apt/sources.list.d/kubernetes.list <<-'EOF'
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
EOF

#三节点安装kubeadm、kubectl、kubelet
apt-get update
apt-get install -y kubelet=1.25.10-00 kubeadm=1.25.10-00 kubectl=1.25.10-00

3. Modifique el archivo de inicialización y configure la inicialización

Nodo maestro:

Puede extraer la imagen por adelantado y empaquetarla en un paquete de imágenes acoplables para acelerar la construcción del clúster.


[root@k8s-master-1~]# kubeadm config print init-defaults > kubeadm-config.yaml

apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: 192.168.1.1 #修改
  bindPort: 6443
nodeRegistration:
  criSocket: unix:///var/run/cri-dockerd.sock #修改
  imagePullPolicy: IfNotPresent
  name: k8s-master-1  #修改
  taints: null
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
  local:
    dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers #修改
kind: ClusterConfiguration
kubernetesVersion: 1.25.10  #修改
networking:
  dnsDomain: cluster.local
  podSubnet: 10.244.0.0/16 #改
scheduler: {}


#master进行初始化,等待镜像拉取,如果提示cri报错,请检查是否是版本问题或者是cri-docker.service中的启动参数配置错误
[root@k8s-master-1~]# kubeadm init --config=kubeadm-config.yam

#进行基本配置
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
export KUBECONFIG=/etc/kubernetes/admin.conf

nodo nodo:

El nodo del nodo debe agregar el parámetro –cri-socket /var/run/cri-dockerd.sock para especificar el método de inicio al unirse al clúster.

kubeadm join 192.168.1.1:6443 --cri-socket /var/run/cri-dockerd.sock --token 7dn4wz.v7uhvkf55b2vvi2h \
         --discovery-token-ca-cert-hash sha256:3ebd007a152158a603af63aa6f8fd28247a015f4c183504037d003fb7fc9ecfb

Cuarto, instale el complemento de red Calio

Nodo maestro:

El complemento de red k8s puede elegir flunnel, calio, etc. Después de la instalación, use kubectl get po -A para ver el pod creado. Debido a que la imagen se está extrayendo, tardará mucho tiempo en estar en estado pendiente. Usted debe esperar pacientemente hasta que todos los pods se estén ejecutando. Se puede ver que todos los nodos están en el estado Listo

#获取yaml文件
wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/tigera-operator.yaml
wget https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/custom-resources.yaml

#安装calio
kubectl create -f tigera-operator.yaml
kubectl create -f custom-resources.yaml

Resumir

Me tomó una tarde instalar un pequeño clúster, ¡espero que pueda brindarle algunas ideas de referencia! Intercambio q 1257455837

Supongo que te gusta

Origin blog.csdn.net/TttRark/article/details/131134612
Recomendado
Clasificación