Ataque y defensa de seguridad en la nube (12) Construcción manual de la construcción del entorno K8S

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

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

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

inserte la descripción de la imagen aquí

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

inserte la descripción de la imagen aquí

La instalación se completa de la siguiente manera:

inserte la descripción de la imagen aquí

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

inserte la descripción de la imagen aquí

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

inserte la descripción de la imagen aquí

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

inserte la descripción de la imagen aquí

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

inserte la descripción de la imagen aquí

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

inserte la descripción de la imagen aquí

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

inserte la descripción de la imagen aquí

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

inserte la descripción de la imagen aquí

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}')

inserte la descripción de la imagen aquí

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

inserte la descripción de la imagen aquí

Ingrese el token obtenido para completar el inicio de sesión

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_64973687/article/details/132302674
Recomendado
Clasificación