Cuadrícula de servicio basada en kubeadm install k8s y DashBoard

Prólogo

Los microservicios aún no han jugado, y el advenimiento de la red de servicio me ha admirado por tres veces consecutivas. De acuerdo con el principio de no morir sin la muerte, realicé un estudio profundo (ru). Esta serie consta de 4 artículos, a saber, "Instalación de k8s y DashBoard basados ​​en kubeadm de la red de servicio", "Instalación de Istio basada en Kubernetes de la red de servicio", "Práctica básica de Istio de la red de servicio", "Red de servicio Use Istio para desarrollar microservicios.

 

El camino hacia el aprendizaje está lleno de baches, pero este camino es hoyo tras hoyo, lo que te hace dudar de tu vida. Por lo tanto, este artículo reunió las mejores prácticas en Internet y mis prácticas de paso a paso, y concluyó que la instalación del tutorial k8s sin hoyos y rutinas es aplaudida y alentada.

 

Palabras de apertura:

Nota: Si el estado de k8s es incorrecto, verifique el estado del servicio de kubelet y preste atención a si el host configurado tiene efecto

#Ver información de 
registro de kubelet journalctl -xeu kubelet

Entorno: el entorno de instalación es una máquina virtual Hyper-V, que ejecuta CentOS 7, y Kubernetes es 1.18

 

Ajustes básicos de la máquina

 

Crea una máquina virtual.

Use Hyper-V para crear una máquina virtual e instalar CentOS. Cómo CentOS en Hyper-V va a Internet es una pregunta.

 

La forma más fácil es crear una red en Hyper-V y luego usar la red creada para la máquina virtual. Al mismo tiempo, puede compartir la red creada en Hyper-V en la red de su máquina física, para que la máquina virtual pueda acceder a la red externa, como se muestra en la figura:

 

 

El nombre de host se puede establecer en una sola máquina o en todos los nodos.

# Ejecución del nodo maestro 
hostnamectl set - hostname k8s- master  
# Ejecutar desde el nodo 
hostnamectl set - nombre de host k8s-node1

 

Modifique el archivo / etc / hosts para asignar el nombre de host y la dirección IP.

vim / etc / hosts
## Agrega el siguiente contenido al archivo
dirección ip k8s - maestro
dirección IP k8s -node1

 

Establezca una dirección IP estática para evitar que la IP cambie cada vez que reinicie.

# Cambiar a este camino
cd / etc / sysconfig / network- scripts
#View 
文件 信息 ls # Edite el primer archivo, el nombre general es ifcfg- ens + número, mi local es ifcfg- eth0
vim ifcfg - eth0

BOOTPROTO = " static " #Modificar   a static
IPADDR = 192.168 . 242.138 # Puede   ser modificado por usted mismo
GATEWAY = 192.168 . 242.2    # Lo mismo que la puerta de enlace en la red creada en la máquina física NETMASK = 255.255 . 255.0 ONBOOT = yes

 

Configurar DNS

vim / etc / resolv.conf   
#Escribe lo siguiente 
servidor de nombres 192.168 . 242.2   # y consistente de puerta de enlace

 

Reiniciar servicio de red

servicio de reinicio de red

 

Prueba

ping www.baidu.com  

 

Apague y desactive el firewall

systemctl stop firewalld

systemctl deshabilitar firewalld

 

Cerrar SeLinux

Cierre selinux para permitir que el contenedor acceda al sistema de archivos del host.

# 禁用
 sed -i ' s / enforcing / disabled / ' / etc / selinux / config

#Verifique que esté cerrado
cat / etc / selinux / config

 

Deshabilitar intercambio

Si no cierra la operación de kubernetes, se producirá un error. Incluso si la instalación se realiza correctamente, el error de operación del servidor de kubernetes también aparecerá después del reinicio del nodo .

# Edite el archivo, use # annotate swap 
vim / etc / fstab

 

Reiniciar computadora

reiniciar

 

Ver intercambio

gratis -h

 

Ver estado de selinux

getenforce Disabled

 

Configuración de Docker

Configure la fuente de instalación yum de Docker e instale docker-ce.

Configurar la fuente de instalación de docker

 yum -y install  yum -utils yum -config-manager --add-repo http: // mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

Verifique las versiones disponibles y seleccione la versión apropiada

 yum list docker-ce --showduplicates | grep  " ^ doc " | sort -r

 

Instalar

yum -y install docker-ce- 18.06 . 1 .ce- 3 .el7

 

Iniciar ventana acoplable

systemctl start docker

systemctl habilitar docker

# Verificar el estado de la ventana acoplable
acoplador de estado systemctl

 

Instalar k8s

Configurar kubernetes como espejo de Alibaba Cloud yum

echo  " [kubernetes] name = Kubernetes baseurl = https: //mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64 enabled = 1 pgcheck = 1 repo_gpgcheck = 1 gpgkey = https: //mirrors.aliyun. com / kubernetes / yum / doc / yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg " > / etc / yum .repos.d / kubernetes.repo

 

Instalar componentes kubernetes

yum  install -y parenting beadm kubectl --disableexcludes = kubernetes systemctl enable 

# # 验证 验证 parenting 状态
systemctl status parenting

El comando anterior debe ejecutarse en el maestro y cada nodo por separado.

 

Instalar el nodo maestro kubernetes

Tenga en cuenta que si se trata de un Kubernetes de un solo nodo, debe configurarlo para permitir que los pods se distribuyan en el nodo maestro, de la siguiente manera

Kubectl Taint Nodos --todos node-role.kubernetes.io/master-

 

Haga una lista de las imágenes que deben instalarse.

lista de imágenes de configuración de kubeadm

 

Instalar herramienta de extracción

curl -Lo / usr / local / bin / azk8spull https: // github.com/xuxinkun/littleTools/releases/download/v1.0.0/azk8spullchmod + x / usr / local / bin / azk8spull

Cómo usar: azk8spull k8s.gcr.io/pause:3.1

 

Use la herramienta azk8spull para extraer las imágenes requeridas en secuencia

 

Configuración de red

echo  1 > / proc / sys / net / bridge / bridge-nf-call-iptables echo  1 > / proc / sys / net / ipv4 / ip_forward

 

Inicializa el maestro

sudo kubeadm init --pod-network-cidr = 10.244 . 0.0 / 16

Nota: --pod-network-cidr debe estar configurado, la dirección IP se escribe mejor arriba, porque también es la misma que la dirección de franela

Después de que la instalación sea exitosa, la declaración y el valor del token del clúster de unión se generarán de la siguiente manera:

Luego puede unir cualquier número de nodos de trabajo ejecutando lo siguiente en cada uno como root:
kubeadm unirse a  192.168 . 137.205 : 6443 --token 66ym67.0wdrafrclpzuwk74 --discovery-token-ca-cert-hash sha256: e7b32df67ec6d75bf79c94499a40450aa5e33f6b23365cd7f0f6eaeba4f15c70

Se puede guardar para la instalación del nodo

 

Si la instalación falla, puede restablecer

restablecimiento de kubeadm

 

Configurar información de autorización

Después de que el inicio es exitoso, el nodo maestro se inicializa con éxito, y se realizarán algunas operaciones después del éxito. (Si falla, realice mejoras según el problema).

Para comenzar a usar el clúster, debe ejecutar el siguiente comando:

Esto es para configurar la información de autorización, principalmente para guardar la información de configuración relacionada en el directorio del usuario, de modo que no sea necesario ingresar la información de autenticación relevante cada vez.

mkdir -p $ HOME / .kube

sudo  cp -i /etc/kubernetes/admin.conf $ HOME / .kube / config

sudo  chown $ ( id -u): $ ( id -g) $ HOME / .kube / config

 

Comprobar configuración de kubelet

cat / var / lib / kubelet / kubeadm-flags. env  
KUBELET_KUBEADM_ARGS = - cgroup-driver = cgroupfs --network-plugin = cni

 

Instalar franela

Flannel es una herramienta de Overlay Network diseñada por el equipo de CoreOS para Kubernetes. Su propósito es ayudar a cada host de CoreOS que use Kuberentes a tener una subred completa.

sysctl net.bridge.bridge-nf-call-iptables = kubectl apply -f https: // raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

acoplador de reinicio systemctl 

kubectl obtener nodos

 

Instalar nodo

Si solo desea instalar master, puede omitir

1. Instala la imagen

2. Configuración de red

3. Use la declaración guardada en el maestro para unir el nodo al clúster

kubeadm unirse a  192.168 . 137.205 : 6443 --token 66ym67.0wdrafrclpzuwk74 --discovery-token-ca-cert-hash sha256: e7b32df67ec6d75bf79c94499a40450aa5e33f6b23365cd7f0f6eaeba4f15c70

Si olvida, puede usar la siguiente declaración para obtener

kubeadm token de crear --print- unen -command

 

Instalar tablero

Obtener el archivo yaml del tablero

wget https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml

如果有墙,可以先把文件下载下来,然后复制到服务器

安装dashboard到k8s

kubectl apply -f kubernetes-dashboard.yaml

 

创建Admin用户

kubectl create clusterrolebinding admin --clusterrole=cluster-admin --user=admin

 

绑定Admin用户到kubernetes-dashboard服务

####如提示已经存在,则修改 clusterrolebinding  后的名称即可
kubectl create clusterrolebinding kubernetes-dashboard --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard

 

进行端口转发

默认情况下,dashboard只能在localhost访问,所以需要对端口转发

####这样使用https://ip:10443端口访问即可
nohup kubectl port-forward -n kubernetes-dashboard service/kubernetes-dashboard 10443:443 --address 0.0.0.0 &

 

经过一系列操作之后,可以通过https://ip:10443进行访问,但是此时是只能通过token访问的,token获取方式如下:

####执行如下命令,获取所有的secret,找到名字为dashboard-admin的kubectl get secrets

NAME                                       TYPE                                  DATA   
AGEdashboard
-admin-sa-token-zhjng kubernetes.io/service-account-token 3 16h
default-token-vqjcd   kubernetes.io/service-account-token 3 17h ####执行如下命令,获取Token kubectl describe secret dashboard-admin-sa-token-zhjng

 

复制输出的token到登录界面即可。

 

启用Basic Auth(用户名和密码)

默认是token方式,比较繁琐

编辑kubernetes-dashboard.yaml文件(默认在/etc/kubernetesdashboard下)

####找到kind为Deployment下的containers-->节点,加入如下配置,默认为token 
- --authentication-mode=basic

保存退出,现在访问https://ip:10443会有一个用户名和密码的输入框,可以登录成功,但是看不到数据。

通过kubectl getpods -n kubernetes-dashboard 查看DashBoard的pods状态,如果状态不为 Running,则表明其实失败或启动中。可以通过 kubectl describe pods -n kubernetes-dashboard进行查看,确定是否存在异常,如果发现最后的状态是Pull Image,表明拉取镜像太慢,可以手动通过 azk8spull imagename或者是通过docker pull imagename手动拉取。

Tips:强制替换执行yaml文件

kubectl replace --force -f kubernetes-dashboard.yaml

 

解决访问安全问题

经过上边的操作,可以使用用户名和密码登录,但是看不到数据,继续折腾。创建包含用户名和密码的csv文件

####格式是 密码,用户名,uid
echo "admin,admin,1" > /etc/kubernetes/config/basic_auth.csv

 

编辑kube-apiserver.yaml文件

 

vim /etc/kubernetes/mainfests/kube-apierver.yaml

####找到-kube-apiserver节点,加入如下配置,注意层级
 - --basic-auth-file=/etc/kubernetes/config/k8sdashboardauth.csv
 - --authorization-mode=Node,RBAC
 
 
####由于使用了配置文件,则需要把宿主机器的config文件夹挂载到容器中
####1.在配置文件中找到volumes节点,加入如下配置,注意层级
  - hostPath:
      path: /etc/kubernetes/config
      type: DirectoryOrCreate
    name: k8s-auth-config
    
####2.在配置文件中找到volumeMounts节点,加入如下配置,注意层级
    - mountPath: /etc/kubernetes/config
      name: k8s-auth-config
      readOnly: true


####退出编辑,保存文件

这个时候,退出登录DashBoard,重新登录,不出意外,可以看到所有的数据了,到此为止,DashBoard实现了使用用户名和密码登录。

注意:不管是启动的kubernest相关的组件,还是DashBoard,都是运行在docker中的容器,当出现问题的时候,可以使用docker logs 容器名称(容器id)查看日志,或者使用 kubectl pods -n namespace方式查看pod的信息,进行确定问题所在。

 

总结:

通过一步一步,我们终于把kubernetes给安装成功了,同时也安装了一个dashboard可以可视化操作,也开启了用户名和密码方式的登录。到这里,kubernetes的安装工作就完成了,相信你跟着上述的步骤,可以成功的安装成功。

 

参考文章

https://blog.csdn.net/jholy/article/details/84962357

Supongo que te gusta

Origin www.cnblogs.com/ListenFly/p/12733967.html
Recomendado
Clasificación