"K8s Learning Diary" Kubeadm despliega el clúster kubernetes

Implemente el clúster kubernetest en Vultr

Dirección original https://elfgzp.cn/2020/04/11/k8s-%E5%AD%A6%E4%B9%A0%E6%97%A5%E8%AE%B0-kubeadm-%E9%83% A8% E7% BD% B2-kubernetes-% E9% 9B% 86% E7% BE% A4.html

En el reciente estudio kubernetest, pero hay una gran cantidad de tutoriales en Google sobre cómo distribuir kubernetes.

Originalmente quería comprar sus propias JDy HUAWEIel ECSanteriores despliegues, tirar mucho tiempo en vano. ECS ofrece una selección de frustración o con un proveedor de servicio en la nube, hay en VPCel despliegue será en condiciones más convenientes.

Selección de configuración de ECS

Debido a que sólo el aprendizaje, no voy a implementar alta disponibilidad k8sracimos, así preparar una tabla Mastery Nodenodos.

Desde Masterpor lo menos dos núcleos de CPU. Esta es una alternativa Vultren la 2 核 4G 内存configuración ECS.

2c4g

NodePor supuesto, la configuración del nodo de memoria más grande es mejor, por supuesto, sólo en el propósito de aprender, la elección aquí Masterconfigurar la misma.

servicio en la nube extranjera vendedores generalmente no hay límites de ancho de banda, generalmente de acuerdo con el cálculo del flujo, esta configuración tiene 3Tel tráfico es sin duda suficiente.

Luego, su modelo de pago por hora es en esta configuración 0.03 $ / hes equivalente 0.21 ¥ / h, es decir, dos centavos por hora! Incluso si usas un día, serán cuatro dólares.

Tengo la intención de aprender k8scuando dos instancias en el despliegue, sin la destrucción directa, no Miya.

Si es un usuario nuevo, aún puede obtenerlo de forma gratuita 100 $. Aquí está la conexión invitada Vultr Give $ 100. Si cree que es bueno, puede probarlo.

Aquí dos seleccionados CentOS 7 Without SELinuxejemplos.

SELinuxEs Linuxun software de seguridad con el fin de facilitar el aprendizaje y el despliegue, lo cerramos directamente, así que elegí Without SELinuxlisto para comenzar el despliegue de.

Tenga en cuenta que en el Additional Featurescheque en Enable Private Networking, por lo que Vultrestá dentro de su red de distribución del servidor IP.

La creación de dos nodos HostNamepara evitar un nombre de nodo será el conflicto.

nombre de host

En Deploy Nowantes de que el Servers Qtyaumento es 2, por lo que no se pueden abrir repetidamente la página de despliegue, y desplegar directamente dos instancias.

No sea este $20.00 /momiedo, este es el mes $20, sólo tenemos que ser destruido como terminado, y el nuevo usuario un regalo 100$puede ser utilizado para un largo tiempo.

Configuración del entorno ECS

Después de la finalización del despliegue de dos instancias, se puede Instancesencontrar una lista de ellos. (Teniendo en cuenta los lectores que no han utilizado los servicios en la nube, elaboraré más aquí).

ins2

Puede hacer clic en este caso a través Overviewde encontrar su contraseña de la cuenta de inicio de sesión, los usuarios predeterminados root.

A continuación Settingsse puede ver la red de estos dos casos IP.

La intranet de los dos ejemplos del autor es la siguiente:

Ejemplos Número de núcleos Memoria Intranet IP
Maestro 2 4G 10.24.96.3
Nodo 2 4G 10.24.96.4

Entonces empezó, pero sshdespués de entrar en la necesidad del sistema para hacer un trabajo de preparación.

Preparativos de despliegue de K8

En primer lugar, para evitar problemas innecesarios, desactivar el CentOS 7servidor de seguridad, debido a sus propios proveedores de servicios cloud tienen grupos de seguridad, que también se puede lograr mediante la configuración de grupo de seguridad de seguridad de la red.

systemctl disable firewalld && systemctl stop firewalld

Si no está seleccionado previamente en el momento de casos de implementación Without SELinux, donde es necesario dejar que el contenedor se puede acceder al archivo de host, se introduce el siguiente comando.

# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

También necesitamos cerrar swap, por qué puede buscarlo.

swapoff -a

Para asegurarse de que sysctlla configuración net.bridge.bridge-nf-call-iptablesse establece en 1.

cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

Asegúrese de que la carga br_netfilterdel módulo. Esto se puede ejecutar lsmod | grep br_netfilteral completo. Para cargarlo explícitamente, llame modprobe br_netfilter.

modprobe br_netfilter
lsmod | grep br_netfilter

Instalar docker:

yum install -y docker
systemctl enable docker && systemctl start docker

El autor ha realizado los pasos anteriores en un script, puede ver https://gist.github.com/elfgzp/02485648297823060a7d8ddbafebf140#file-vultr_k8s_prepare-sh .
Para ingresar rápidamente el siguiente paso, puede ejecutar el siguiente comando para omitir la operación de preparación directamente.

curl https://gist.githubusercontent.com/elfgzp/02485648297823060a7d8ddbafebf140/raw/781c2cd7e6dba8f099e2b6b1aba9bb91d9f60fe2/vultr_k8s_prepare.sh | sh

Instalar Kubeadm

Los siguientes pasos pueden referirse a la documentación oficial, el enlace de documentación oficial .

# 配置 yum 源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

# 安装 kubelet kubeadm kubectl
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes

# 启动 kubelet
systemctl enable --now kubelet

Debido Vultranfitrión nube extranjera, por lo que no consideramos Googlelos problemas de acceso, pero si se trata de las necesidades del país anfitrión a ser yumla fuente de repomodificaciones para la siguiente configuración.

cat << EOF > /etc/yum.repos.d/kubernetes.repo
[kuebrnetes]
name=KubernetesRepository
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF

El script para la operación anterior es https://gist.github.com/elfgzp/02485648297823060a7d8ddbafebf140#file-vultr_k8s_install_kubeadm-sh .

curl https://gist.githubusercontent.com/elfgzp/02485648297823060a7d8ddbafebf140/raw/#/vultr_k8s_prepare.sh | sh

Crear un clúster k8s con Kubeadm

Crear nodo maestro k8s

Primero queremos Masterrealizar en la instancia kubeadm. Pero empezamos con kubeadm config print init-defaultsun vistazo a su archivo de inicialización por defecto.

kubeadm config print init-defaults

Por supuesto, también puede generar un archivo de configuración y especificar el archivo de configuración para inicializar:

kubeadm config print init-defaults > kubeadm.yaml
# 修改 kubeadm.yml
kubeadm init --config kubeadm.yaml

Si la inicialización falla, puede ejecutar el siguiente comando para rehacer:

kubeadm reset
rm -rf $HOME/.kube/config
rm -rf /var/lib/cni/
rm -rf /etc/kubernetes/
rm -rf /etc/cni/
ifconfig cni0 down
ip link delete cni0

La siguiente ejecución directa kubeadm initse ha inicializado, el país anfitrión puede que tenga que modificar imageRepositoryla configuración para modificar k8sel repositorio espejo.

cat <<EOF > kubeadm.yaml
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
apiServer:
    extraArgs:
        runtime-config: "api/all=true"
kubernetesVersion: "v1.18.1"
imageRepository: registry.aliyuncs.com/google_containers
EOF
kubeadm init --config kubeadm.yaml

Una vez completada la ejecución, obtendremos el siguiente resultado:

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

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/

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join {你的IP}:6443 --token 3prn7r.iavgjxcmrlh3ust3 \
    --discovery-token-ca-cert-hash sha256:95283a2e81464ba5290bf4aeffc4376b6d708f506fcee278cd2a647f704ed55d

De acuerdo con sus ideas, vamos a kubectlconfiguración en el $HOME/.kube/configsiguiente, nota que cada ejecución completada kubeadm initdespués, el perfil va a cambiar, por lo que es necesario volver a copiar. kubeadmSe unirá a la información de configuración de salida de comandos para Nodeel clúster.

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

Si está utilizando un rootusuario, puede utilizar directamente las variables de entorno especifican el fichero de configuración:

echo 'export KUBECONFIG=/etc/kubernetes/admin.conf' >> ~/.bashrc
. ~/.bashrc

A continuación, utilice kubectl get nodespara ver el estado del nodo:

NAME      STATUS   ROLES    AGE     VERSION
master1   NotReady    master   6m52s   v1.18.1

En este punto el Estado es NotReady, por supuesto, el estado es correcto, ya que no tenemos que instalar la red plug-ins. A continuación, instale la red plug-in, que aquí hay una Weavered plug-ins:

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

Existen otros complementos de red que pueden consultar la documentación oficial, Instalación de un complemento de red Pod .

Puede ver Podspara ver si la instalación ha sido exitosa Estado:

kubectl get pods -A
NAMESPACE     NAME                       READY   STATUS    RESTARTS   AGE
kube-system   coredns-66bff467f8-br94l   1/1     Running   0          14m
kube-system   coredns-66bff467f8-pvsfn   1/1     Running   0          14m
kube-system   kube-proxy-b2phr           1/1     Running   0          14m
kube-system   weave-net-8wv4k            2/2     Running   0          2m2s

Si se comprueba STATUSque no Runninga través, kubectl logsy el kubectl describecomando para ver información detallada del error.

kubectl logs weave-net-8wv4k -n kube-system weave
kubectl logs weave-net-8wv4k -n kube-system weave-npc
kubectl describe pods weave-net-8wv4k -n kube-system 

En este momento, Masterel estado de nodo se convierte en Readyuna.

NAME      STATUS   ROLES    AGE     VERSION
master1   Ready    master   6m52s   v1.18.1

implementación Nodedel nodo

Despliegue Nodenodo también requiere "fase de preparación" de la obra aquí no es explicar y ejecutar directamente la secuencia de comandos:

curl https://gist.githubusercontent.com/elfgzp/02485648297823060a7d8ddbafebf140/raw/781c2cd7e6dba8f099e2b6b1aba9bb91d9f60fe2/vultr_k8s_prepare.sh | sh
curl https://gist.githubusercontent.com/elfgzp/02485648297823060a7d8ddbafebf140/raw/781c2cd7e6dba8f099e2b6b1aba9bb91d9f60fe2/vultr_k8s_install_kubeadm.sh | sh

Tenemos que llevar a cabo kubeadmen Masterla inicialización de nodos de salida de joincomandos. Si no se acuerda, se puede lograr mediante Masterla re-ejecutar el siguiente comando para obtener joincomandos.

kubeadm token create --print-join-command
kubeadm join {你的IP}:6443 --token m239ha.ot52q6goyq0pcadx     --discovery-token-ca-cert-hash sha256:95283a2e81464ba5290bf4aeffc4376b6d708f506fcee278cd2a647f704ed55d

Si usted está teniendo problemas para unirse también se puede utilizar kubeadm restpara restablecer.

kubeadm reset

Por supuesto, joinel comando también puede proporcionar un archivo de configuración, sólo tenemos que Nodeejecutar el siguiente comando puede generar un archivo de configuración por defecto.

kubeadm config print join-defaults > kubeadm-join.yaml
kubeadm join --config kubeadm-join.yaml

Por otra parte kubectlpara ver el nodesestado, si desea Nodellevar a cabo, a continuación, el nodo debe estar Masteren la /etc/kubernetes/admin.confcopia al Nodenodo.

A continuación se verifica el Nodeestado Readydel éxito añadido:

kubectl get nodes
NAME      STATUS   ROLES    AGE     VERSION
master1   Ready    master   6m52s   v1.18.1
node1     Ready    <none>   29s     v1.18.1

Resumen

Éstos están en Vultruso kubeadmpara desplegar k8stodos los amigos de racimo proceso, por supuesto, entraron en un terreno de la fosa. Especialmente si desea implementar en diferentes hosts de la nube, finalmente elige utilizar el mismo ECS del proveedor de servicios en la nube.

Documentos de referencia

La guía definitiva de Kubernetes: contacto completo de Docker a la práctica de Kubernetes (versión 4)

Análisis en profundidad de Kubernetes

¡Este artículo es publicado por OpenWrite, una plataforma multiplataforma de publicación de blog !

Supongo que te gusta

Origin www.cnblogs.com/elfgzp/p/12682539.html
Recomendado
Clasificación