Construya manualmente la construcción del entorno K8S
Primero, preparamos tres máquinas Centos7 en la etapa inicial y la configuración es la siguiente:
nombre de la CPU | IP | versión del sistema |
---|---|---|
k8s-maestro | 192.168.41.141 | Centos7 |
k8s-node1 | 192.168.41.142 | Centos7 |
k8s-node2 | 192.168.41.143 | Centos7 |
Preparación
Primero ejecute los siguientes comandos en las tres máquinas
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 永久关闭 selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config
# 永久关闭 swap
sed -ri 's/.*swap.*/#&/' /etc/fstab
# 修改/etc/hosts
vim /etc/hosts
192.168.41.141 k8s-master
192.168.41.142 k8s-node1
192.168.41.143 k8s-node2
# 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# 生效
sysctl --system
# 时间同步
yum install ntpdate -y
ntpdate time.windows.com
Luego configure la fuente K8s de Alibaba Cloud en las tres máquinas y ejecute el siguiente comando
cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
Luego instale docker, kubeadm, kubelet, kubectl en las tres máquinas
Para instalar Docker, ejecute los siguientes comandos en las tres máquinas para instalar con un solo clic
curl -s https://get.docker.com/ | sh
La instalación se completa de la siguiente manera:
Para configurar el acelerador de descarga de imágenes de la ventana acoplable, ejecute el siguiente comando:
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
#查看docker信息,进行确认
systemctl restart docker
docker info
Aparece el siguiente mensaje, indicando que la configuración está completa
Luego ejecute el siguiente comando para instalar kubelet, kubeadm y kubectl
#安装 kubelet、kubeadm 和 kubectl
yum install -y kubelet-1.21.0 kubeadm-1.21.0 kubectl-1.21.0
#设置 kubelet 开机自启
systemctl enable kubelet
Implementar K8S-maestro
Ejecute el siguiente comando en el nodo maestro para inicializar el maestro
kubeadm init --apiserver-advertise-address=192.168.41.141 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.21.0 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=all
--apiserver-advertise-address 集群通告地址
--image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
--kubernetes-version K8s版本,与上面安装的一致
--service-cidr 集群内部虚拟网络,Pod统一访问入口
--pod-network-cidr Pod网络,与下面部署的CNI网络组件yaml中保持一致
O arranque con un archivo de configuración:
vi kubeadm.conf
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.21.0
imageRepository: registry.aliyuncs.com/google_containers
networking:
podSubnet: 10.244.0.0/16
serviceSubnet: 10.96.0.0/12
Luego ejecute el siguiente comando para inicializar
kubeadm init --config kubeadm.conf --ignore-preflight-errors=all
Una vez completada la inicialización, se generará un comando de combinación al final. Recuerde primero, use lo siguiente
A continuación, copie el archivo de autenticación de conexión k8s utilizado por kubectl en la ruta predeterminada:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Implementar nodo K8S
Ejecute el siguiente comando en dos nodos (192.168.41.142/143) para unirse al clúster K8S
kubeadm join 192.168.41.141:6443 --token sec4pk.nnihf0tismgn6kax --discovery-token-ca-cert-hash sha256:a8a0adf8b5fd9adb6ac8a2977456bd1671055146ed5711eaab5280d6541986fd
El token predeterminado es válido durante 24 horas y, cuando caduca, el token ya no está disponible. En este momento, se debe volver a crear el token, que se puede generar directamente con el comando:
kubeadm token create --print-join-command
Implementar redes de contenedores (CNI)
La red de implementación Calico es una solución pura de red de centro de datos de tres niveles, que actualmente es la solución de red principal para Kubernetes. Ejecute el siguiente comando para descargar YAML:
wget https://docs.projectcalico.org/v3.19/manifests/calico.yaml --no-check-certificate
Después de la descarga, debe modificar la definición de la red Pod (CALICO_IPV4POOL_CIDR), que
es la misma que la especificada por --pod-network-cidr de kubeadm init
vim calico.yaml
De forma predeterminada, todas las imágenes utilizadas en calico.yaml provienen de la fuente de imágenes externas docker.io, aquí podemos eliminar el prefijo docker.io para que la imagen se descargue desde el sitio de aceleración de imágenes nacional.
cat calico.yaml |grep 'image:'
sed -i 's#docker.io/##g' calico.yaml
Después de modificar el archivo, implemente:
#部署
kubectl apply -f calico.yaml
#查看状态,执行完上一条命令需要等一会才全部 running
kubectl get pods -n kube-system
Espere hasta que Calico Pods se esté ejecutando y los nodos estarán listos
Panel de implementación
Dashboard es una interfaz de usuario web oficial que se puede usar para la administración básica de los recursos de K8. Ejecute el siguiente comando para descargar el archivo yaml. De forma predeterminada, solo se puede acceder al Dashboard dentro del clúster.Modifique el tipo Service to NodePort y expóngalo al exterior:
wget https://github.com/kubernetes/dashboard/releases/tag/v2.4.0/aio/deploy/recommended.yaml
Modifique de la siguiente manera, el rango de puertos de nodePort es 30000-32767, aquí está configurado en 31000 y agregue el tipo: NodePort
vim recommended.yaml
Ejecute la siguiente aplicación de comando
kubectl apply -f recommended.yaml
Cree una cuenta de servicio en el nodo maestro y vincule el rol de clúster de administrador de clúster predeterminado, ejecute el siguiente comando
# 创建用户
kubectl create serviceaccount dashboard-admin -n kube-system
# 用户授权
kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin -
-serviceaccount=kube-system:dashboard-admin
# 获取用户 Token
kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret |
awk '/dashboard-admin/{print $1}')
Luego obtenemos el siguiente token y luego usamos el token de salida para iniciar sesión en el panel.
eyJhbGciOiJSUzI1NiIsImtpZCI6IjNpbzFJbTg4UjlpcjFBdS1rb1J3NzFtY3BETlhtVkQ3S0hXZWwwU0MwN1UifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtYWRtaW4tdG9rZW4tYzdzcHAiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiZjAyMTE1OWMtZjcyMC00YTZlLWFiY2MtYzIzYWRhZjBiZjk5Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZC1hZG1pbiJ9.aD_ZtS0domXxtWz-2BaGmZebJMqoNvWqHgJ4K7kQ9eir5JvIqTsrxM14dNrUrEFRZC2hw6Gn_xz7Nezy81XPU64HHcbGiNvNU8K7OwvTWwTOpDBRPho1CaxJsKBrlQwoNf1pzoShqO-JdL4kVfJUmKthjUqv8QduwVzEkCWeTXgcHOoPnsOaJSXJzwanAC4e5pIovcjMGQJU4W87T8uVW4bdO4w48c-101-mMYHMouKVRxF8OOTuGHFXUDpYCKAOvfA73gtwoyi_4wiSqS7NSZZTGwFfppUYDomjoA3FUFubZ2xLoc8fN2GoFzzTcylxFHTCfupJM2nUVs9vxQbJw
Luego, nuestro navegador visita la URL: https://master:31000 o https://node:31000
Ingrese el token obtenido para completar el inicio de sesión