¡La herramienta kk crea rápidamente un clúster k8s + una plataforma de contenedores Kubesphere!

Instalación de la herramienta kk (KubeKey): modo multinodo

Paso 1: configuración básica del entorno

ilustrar:

Los siguientes pasos deben ejecutarse tanto en el nodo maestro como en el nodo de trabajo.

1. Cierre el firewall o abra los puertos necesarios

systemctl stop firewalld  # 停止防火墙服务
systemctl disable firewalld # 禁用防火墙服务

Descripción: resultado

  • Ver el estado del firewall

    systemctl status firewalld
    

Insertar descripción de la imagen aquí

  • Cuando vea que el servicio de firewall está inactivo, significa que el apagado se realizó correctamente.

  • Si no cierra el firewall, puede cerrar los puertos requeridos como se muestra a continuación

    Insertar descripción de la imagen aquí

2. Asegúrese de que los nodos se comuniquen entre sí.

ping 10.13.167.28
ping 10.13.167.102

Descripción: resultado

Insertar descripción de la imagen aquí

  • Asegúrese de que los nodos puedan comunicarse entre sí para construir un clúster

3. Establecer zona horaria

timedatectl set-timezone Asia/Shanghai

ilustrar:

  • Consultar zona horaria

    timedatectl 
    

Insertar descripción de la imagen aquí

  • Establecer zona horaria en la zona horaria de Shanghai

Paso 2: instalar las dependencias del entorno

ilustrar:

Los siguientes pasos deben ejecutarse tanto en el nodo maestro como en el nodo de trabajo.

1. Instalar dependencias

yum install -y socat conntrack ebtables ipset

ilustrar:

  • ebtables: ebtables es un filtro para puentes Ethernet que permite la manipulación de las reglas de filtrado de paquetes del puente Ethernet dentro del kernel de Linux. Se puede utilizar para controlar el tráfico de la red, establecer políticas de red, etc.
  • socat: socat es una poderosa herramienta de red que se utiliza para establecer varios tipos de conexiones, como TCP, UDP, sockets UNIX, etc. Se puede utilizar para tareas como reenvío de puertos, proxy, depuración de redes y más.
  • ipset: ipset es una herramienta para gestionar colecciones de direcciones IP. Le permite crear y manipular colecciones de direcciones IP, proporcionando capacidades eficientes de filtrado y coincidencia de direcciones IP. ipset se puede utilizar para configuración de firewall, listas de control de acceso, etc.
  • conntrack: conntrack es una herramienta de seguimiento de conexiones que se utiliza para rastrear el estado de las conexiones de red en el kernel de Linux. Se puede utilizar para ver y manipular conexiones activas, tablas de seguimiento de conexiones y más. conntrack es útil en seguridad y análisis de redes.

2. Instalar el servicio de sincronización horaria.

yum install chrony -y # 安装时间同步服务
systemctl enable chronyd.service # 启用时间同步服务
systemctl start chronyd.service # 开启时间同步服务

Descripción: resultado

  • Ver estado crónico

    systemctl status chronyd.service
    

    Insertar descripción de la imagen aquí

  • Ver fuente crónica

    chronyc sources
    

    Insertar descripción de la imagen aquí

  • La presencia de este servicio en todos los nodos indica éxito.

  • Consulta el estado del tiempo de cada nodo.

    timedatectl status
    

    Insertar descripción de la imagen aquí

ilustrar:

​Eschrony una herramienta para la sincronización horaria de la computadora, que proporciona funciones precisas de sincronización del reloj y ajuste de la hora. Al instalar k8s, instale el servicio de sincronización horaria y cambie la zona horaria a Asia y Shanghai en lugar de UTC.

Paso 3: instale la herramienta kk

ilustrar:

​La siguiente operación solo se ejecuta en el nodo Maestro

1. Modificar la región kk predeterminada

export KKZONE=cn

ilustrar:

​ Si el acceso a Github está restringido, puede agregar variables estáticas; de lo contrario, omita

2. Descargue la herramienta KubKey

curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.7 sh -

ilustrar:

  • Ver resultados de instalación

    ls
    

Insertar descripción de la imagen aquí

3. Agregue permisos a la herramienta kk

chmod +x kk

Paso 4: crear un clúster

1. Cree un archivo de configuración

./kk create config --with-kubernetes v1.22.12 --with-kubesphere v3.3.2

ilustrar:

  • Ver resultados

    Insertar descripción de la imagen aquí

Suplemento: explicación de parámetros

  • config:Crear archivo de configuración
  • --with-kubernetes : Instale k8s y use la última versión. Al especificar la versión, puede especificar instalar la versión k8s
  • --with-kubesphere: Instale kubesphere y use la última versión. Al especificar la versión, puede instalar la versión especificada de kubesphere

Aviso:

  • En términos generales, para una instalación Todo en Uno, no es necesario cambiar ninguna configuración.
  • KubeKey instalará OpenEBS de forma predeterminada para proporcionar LocalPV para entornos de desarrollo y prueba para facilitar a los nuevos usuarios. Para otros tipos de almacenamiento, consulte Configuración de almacenamiento persistente .
  • Versiones de Kubernetes recomendadas para instalar KubeSphere 3.3: v1.20.x, v1.21.x, *v1.22.x, *v1.23.x y *v1.24.x. Las versiones con un asterisco pueden tener algunas funciones de los nodos de borde no disponibles. Por lo tanto, si necesita utilizar nodos perimetrales, se recomienda instalar v1.21.x. Si no especifica una versión de Kubernetes, KubeKey instalará Kubernetes v1.23.10 de forma predeterminada. Para obtener más información sobre las versiones de Kubernetes compatibles, consulte la matriz de compatibilidad .

2. Editar archivo de configuración

apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
  name: sample
spec:  # 指定主机列表,每个主机有名称、地址、内部地址、用户名和密码等属性。
  hosts:
  - {
    
    name: master, address: 10.13.167.28, internalAddress: 10.13.167.28, user: root, password: "123456"} # 每个主机列表中的账户密码需要与本机真实用户密码对应
  - {
    
    name: node1, address: 10.13.167.102, internalAddress: 10.13.167.102, user: root, password: "123456"}
  roleGroups: # 指定角色组
    etcd: # 责存储集群的配置数据、状态信息和元数据。
    - master # etcd 节点名称
    control-plane: # 主节点名称
    - master
    worker: # 工作节点名称
    - node1
  controlPlaneEndpoint: # 指定控制平面的终结点信息,包括域名、地址和端口号。
    ## Internal loadbalancer for apiservers 
    # internalLoadbalancer: haproxy

    domain: lb.kubesphere.local
    address: ""
    port: 6443
  kubernetes: # :指定Kubernetes的版本和集群名称等参数
    version: v1.22.12
    clusterName: cluster.local
    autoRenewCerts: true
    containerManager: docker
  etcd:
    type: kubekey
  network: # 指定网络配置,包括网络插件和Pods和服务的CIDR等参数
    plugin: calico
    kubePodsCIDR: 10.233.64.0/18 # 注意,网络地址不要与真实的Ip地址冲突
    kubeServiceCIDR: 10.233.0.0/18
    ## multus support. https://github.com/k8snetworkplumbingwg/multus-cni
    multusCNI:
      enabled: false
  registry:
    privateRegistry: ""
    namespaceOverride: ""
    registryMirrors: []
    insecureRegistries: []
  addons: []



---
apiVersion: installer.kubesphere.io/v1alpha1
kind: ClusterConfiguration
metadata:
  name: ks-installer
  namespace: kubesphere-system
  labels:
    version: v3.3.2
spec:
  persistence:
    storageClass: ""
  authentication:
    jwtSecret: ""
  zone: ""
  local_registry: ""
  namespace_override: ""
  # dev_tag: ""
  etcd: # 指定Etcd的监控配置和端点信息
    monitoring: false
    endpointIps: localhost
    port: 2379
    tlsEnable: true
  common: # 指定通用配置,包括核心组件、Redis、OpenLDAP等参数
    core:
      console:
        enableMultiLogin: true
        port: 30880
        type: NodePort
    # apiserver:
    #  resources: {}
    # controllerManager:
    #  resources: {}
    redis:
      enabled: false
      volumeSize: 2Gi
    openldap:
      enabled: false
      volumeSize: 2Gi
    minio:
      volumeSize: 20Gi
    monitoring:  # 指定监控配置,包括Prometheus的终结点信息和GPU监控等参数
      # type: external
      endpoint: http://prometheus-operated.kubesphere-monitoring-system.svc:9090
      GPUMonitoring:
        enabled: false
    gpu:
      kinds:
      - resourceName: "nvidia.com/gpu"
        resourceType: "GPU"
        default: true
    es:
      # master:
      #   volumeSize: 4Gi
      #   replicas: 1
      #   resources: {}
      # data:
      #   volumeSize: 20Gi
      #   replicas: 1
      #   resources: {}
      logMaxAge: 7
      elkPrefix: logstash
      basicAuth:
        enabled: false
        username: ""
        password: ""
      externalElasticsearchHost: ""
      externalElasticsearchPort: ""
  alerting:
    enabled: false
    # thanosruler:
    #   replicas: 1
    #   resources: {}
  auditing:
    enabled: false
    # operator:
    #   resources: {}
    # webhook:
    #   resources: {}
  devops:
    enabled: false
    # resources: {}
    jenkinsMemoryLim: 8Gi
    jenkinsMemoryReq: 4Gi
    jenkinsVolumeSize: 8Gi
  events:
    enabled: false
    # operator:
    #   resources: {}
    # exporter:
    #   resources: {}
    # ruler:
    #   enabled: true
    #   replicas: 2
    #   resources: {}
  logging: # 指定日志配置,包括日志边车的副本数等参数
    enabled: false
    logsidecar:
      enabled: true
      replicas: 2
      # resources: {}
  metrics_server:
    enabled: false
  monitoring:
    storageClass: ""
    node_exporter:
      port: 9100
      # resources: {}
    # kube_rbac_proxy:
    #   resources: {}
    # kube_state_metrics:
    #   resources: {}
    # prometheus:
    #   replicas: 1
    #   volumeSize: 20Gi
    #   resources: {}
    #   operator:
    #     resources: {}
    # alertmanager:
    #   replicas: 1
    #   resources: {}
    # notification_manager:
    #   resources: {}
    #   operator:
    #     resources: {}
    #   proxy:
    #     resources: {}
    gpu:
      nvidia_dcgm_exporter:
        enabled: false
        # resources: {}
  multicluster:
    clusterRole: none
  network:
    networkpolicy:
      enabled: false
    ippool:
      type: none
    topology:
      type: none
  openpitrix:
    store:
      enabled: false
  servicemesh:
    enabled: false
    istio:
      components:
        ingressGateways:
        - name: istio-ingressgateway
          enabled: false
        cni:
          enabled: false
  edgeruntime:
    enabled: false
    kubeedge:
      enabled: false
      cloudCore:
        cloudHub:
          advertiseAddress:
            - ""
        service:
          cloudhubNodePort: "30000"
          cloudhubQuicNodePort: "30001"
          cloudhubHttpsNodePort: "30002"
          cloudstreamNodePort: "30003"
          tunnelNodePort: "30004"
        # resources: {}
        # hostNetWork: false
      iptables-manager:
        enabled: true
        mode: "external"
        # resources: {}
      # edgeService:
      #   resources: {}
  terminal:
    timeout: 600

Descripción: resultado

Para personalizar los parámetros relacionados con Kubernetes, consulte la configuración del clúster de Kubernetes .

3. Iniciar la instalación

./kk create cluster -f config-sample.yaml

ilustrar:

Utilice la herramienta kk para instalar el clúster k8s

Paso 5: ver los resultados de la instalación

1. Verifique el registro de instalación del nodo

kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f

ilustrar:

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:

  kubeadm join lb.kubesphere.local:6443 --token 6yfn1e.9dh0m2p3erl9wj72 \
	--discovery-token-ca-cert-hash sha256:0f0ab4fec32eccb17d21ff0dc71e894a7d73475526cea630ee68b460058820fc \
	--control-plane

2. Verifique el estado de ejecución de los componentes relacionados con KubeSphere.

kubectl get pod --all-namespaces

3. Visita Kubesphere

  • Ver resultados
    Insertar descripción de la imagen aquí

Referencias

Sitio web oficial de k8s: Documentación de Kubernetes | Kubernetes

Sitio web oficial de KubeSphere: introducción del producto (kubesphere.io)

Supongo que te gusta

Origin blog.csdn.net/D_boj/article/details/131294709
Recomendado
Clasificación