Directorio de artículos
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
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
2. Asegúrese de que los nodos se comuniquen entre sí.
ping 10.13.167.28
ping 10.13.167.102
Descripción: resultado
- 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
- 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
Ver fuente crónica
chronyc sources
La presencia de este servicio en todos los nodos indica éxito.
Consulta el estado del tiempo de cada nodo.
timedatectl status
ilustrar:
Es
chrony
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
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
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
Referencias
Sitio web oficial de k8s: Documentación de Kubernetes | Kubernetes
Sitio web oficial de KubeSphere: introducción del producto (kubesphere.io)