Cree una base de publicación de aplicaciones nativa de la nube a través de Rancher

Aplicación Ranchero 2.7.0

Cero, requisito previo

0.1 Configurar el enrutamiento y reenvío del kernel

# vim /etc/sysctl.conf
# cat /etc/sysctl.conf
...
net.ipv4.ip_forward=1
# sysctl -p
net.ipv4.ip_forward = 1

0.2 instalación de docker-ce

Instale docker-ce en todos los hosts

# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# yum -y install docker-ce
# systemctl enable --now docker

0.3 despliegue ganadero

# mkdir -p /opt/data/rancher_data
# docker run -d --privileged -p 80:80 -p 443:443  -v /opt/data/rancher_data:/var/lib/rancher --restart=always --name rancher-2-7-0 rancher/rancher:v2.7.0

1. Configuración inicial del ranchero

Insertar descripción de la imagen aquí

2. Crea un clúster

Importe un clúster existente. La versión del clúster importada esta vez es k8s 1.25.2.

Insertar descripción de la imagen aquí

Seleccione Importación universal a cualquier clúster de Kubernetes

Insertar descripción de la imagen aquí

Agregar un nombre al clúster importado

Insertar descripción de la imagen aquí

Agregar etiquetas a grupos importados

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Registre el grupo existente como ranchero

Insertar descripción de la imagen aquí

Después de copiar, ejecute los comandos relevantes en el nodo maestro en el clúster k8s

[root@k8s-master01 ~]# curl --insecure -sfL https://192.168.10.163/v3/import/pg977t2z59g872brkj75qmxtkgkz8x5lrwwpdhkprvmcjhhr7tp6wm_c-m-p7wrqk4w.yaml | kubectl apply -f -

Después de la ejecución, verifique si se agregan 4 espacios de nombres

[root@k8s-master01 ~]# kubectl get ns
NAME                          STATUS   AGE
calico-apiserver              Active   36h
calico-system                 Active   36h
cattle-fleet-system           Active   60s 新添加
cattle-impersonation-system   Active   77s 新添加
cattle-system                 Active   81s 新添加
default                       Active   36h
kube-node-lease               Active   36h
kube-public                   Active   36h
kube-system                   Active   36h
local                         Active   27s 新添加
tigera-operator               Active   36h

Una vez completadas todas las ejecuciones, puede encontrar que todos los nodos del clúster k8s están registrados en Rancher.

Insertar descripción de la imagen aquí

3. Lanzamiento de la aplicación

Seleccione el clúster donde se publica la aplicación.

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

3.1 Implementar la aplicación Nginx

Antes de publicar la aplicación, cree un proyecto/espacio de nombres.

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Después de crear el proyecto/espacio de nombres, elija crear una carga de trabajo (escriba Implementaciones)

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Especifique el espacio de nombres, el nombre de la aplicación y el número de copias para la publicación de la aplicación.

Insertar descripción de la imagen aquí

Especificar etiqueta de grupo

Insertar descripción de la imagen aquí

Especifique la imagen y el tipo de contenedor utilizado por la aplicación (contenedor estándar)

Insertar descripción de la imagen aquí

Agregue un puerto para la publicación de aplicaciones, es decir, cree un servicio correspondiente

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Una vez completadas todas las configuraciones anteriores, haga clic en Crear

Insertar descripción de la imagen aquí

Observar la aplicación creada.

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Acceda a las aplicaciones creadas en una máquina física

Insertar descripción de la imagen aquí

3.2 Implementar la aplicación MySQL

Ver clases de almacenamiento existentes en el clúster k8s

Las clases de almacenamiento dinámico persistente deben prepararse con anticipación

[root@k8s-master01 ~]# kubectl get sc
NAME                   PROVISIONER      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
nfs-client (default)   fuseim.pri/ifs   Delete          Immediate           false                  15h

Ver en la interfaz de usuario de Rancher
Insertar descripción de la imagen aquí

Antes de publicar mysql, cree un proyecto/espacio de nombres

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Crear PVC

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Crear servicio

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Asegúrese de prestar atención a este selector. Créelo ahora. Cuando cree la aplicación MySQL, su etiqueta Pod debe ser coherente con esto.

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Verifique el SVC creado

[root@k8s-master01 ~]# kubectl get svc -n mydata1
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE
mysqldata1   ClusterIP   None         <none>        3306/TCP   49s

Analizar la dirección IP correspondiente a SVC

Dado que se utiliza Headless SVC, SVC no asigna ClusterIP, por lo que no hay ningún resultado.

[root@k8s-master01 ~]# dig -t a mysqldata1.mydata1.svc.cluster.local @10.96.0.10

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t a mysqldata1.mydata1.svc.cluster.local @10.96.0.10
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 18405
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;mysqldata1.mydata1.svc.cluster.local. IN A

;; AUTHORITY SECTION:
cluster.local.          30      IN      SOA     ns.dns.cluster.local. hostmaster.cluster.local. 1664333089 7200 1800 86400 30

;; Query time: 0 msec
;; SERVER: 10.96.0.10#53(10.96.0.10)
;; WHEN: 三 9月 28 10:47:03 CST 2022
;; MSG SIZE  rcvd: 158

Crear una aplicación de tipo Statefulset

Insertar descripción de la imagen aquí

Seleccione y complete el nombre correspondiente, el nombre del servicio es un servicio creado de antemano.

Insertar descripción de la imagen aquí

Seleccione la imagen del contenedor MySQL

Insertar descripción de la imagen aquí

Agregar variables de entorno

Establezca la contraseña del administrador de MySQL a través de variables de entorno y agréguela a la base de datos MySQL

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

La etiqueta del Pod debe ser coherente con la etiqueta utilizada por el selector en el SVC creado.

Insertar descripción de la imagen aquí

Dado que MySQL necesita almacenar datos de forma persistente, necesita seleccionar un almacenamiento, esta vez se utiliza el PVC creado anteriormente.

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Monte el PVC creado previamente en el directorio /var/lib/mysql en el contenedor MySQL

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Observar los lanzamientos de aplicaciones

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Ejecute el comando para observar si la aplicación está disponible.

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

3.3 Implementar la aplicación WordPress

Crear proyecto/espacio de nombres

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Observar el estado de creación del espacio de nombres

[root@k8s-master01 ~]# kubectl get ns
NAME                          STATUS   AGE
calico-apiserver              Active   37h
calico-system                 Active   37h
cattle-fleet-system           Active   59m
cattle-impersonation-system   Active   59m
cattle-system                 Active   59m
default                       Active   37h
kube-node-lease               Active   37h
kube-public                   Active   37h
kube-system                   Active   37h
local                         Active   58m
mydata1                       Active   34m
nginxweb                      Active   50m
tigera-operator               Active   37h
webpp1                        Active   34s  新添加命名空间

Publicar la aplicación correspondiente al Despliegue

Insertar descripción de la imagen aquí

Seleccione el tipo de controlador de implementación

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Agregue el puerto utilizado por la aplicación, esta vez use el puerto del nodo para publicarla.

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Configure las variables de entorno requeridas por la aplicación y conéctese a la base de datos a través de variables de entorno.

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Analizar el nombre de dominio de la base de datos para la definición de variable de entorno

[root@k8s-master01 ~]# dig -t a mysqldata1-0.mysqldata1.mydata1.svc.cluster.local. @10.96.0.10

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t a mysqldata1-0.mysqldata1.mydata1.svc.cluster.local. @10.96.0.10
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38690
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;mysqldata1-0.mysqldata1.mydata1.svc.cluster.local. IN A

;; ANSWER SECTION:
mysqldata1-0.mysqldata1.mydata1.svc.cluster.local. 30 IN A 10.224.69.203  解析出来Pod IP地址

;; Query time: 0 msec
;; SERVER: 10.96.0.10#53(10.96.0.10)
;; WHEN: 三 9月 28 11:32:07 CST 2022
;; MSG SIZE  rcvd: 143

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Observar la creación de la aplicación.

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Acceda a aplicaciones publicadas en máquinas físicas

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

4. Eliminar el clúster

Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_47758895/article/details/130599457
Recomendado
Clasificación