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
2. Crea un clúster
Importe un clúster existente. La versión del clúster importada esta vez es k8s 1.25.2.
Seleccione Importación universal a cualquier clúster de Kubernetes
Agregar un nombre al clúster importado
Agregar etiquetas a grupos importados
Registre el grupo existente como ranchero
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.
3. Lanzamiento de la aplicación
Seleccione el clúster donde se publica la aplicación.
3.1 Implementar la aplicación Nginx
Antes de publicar la aplicación, cree un proyecto/espacio de nombres.
Después de crear el proyecto/espacio de nombres, elija crear una carga de trabajo (escriba Implementaciones)
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.
Especificar etiqueta de grupo
Especifique la imagen y el tipo de contenedor utilizado por la aplicación (contenedor estándar)
Agregue un puerto para la publicación de aplicaciones, es decir, cree un servicio correspondiente
Una vez completadas todas las configuraciones anteriores, haga clic en Crear
Observar la aplicación creada.
Acceda a las aplicaciones creadas en una máquina física
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
Antes de publicar mysql, cree un proyecto/espacio de nombres
Crear PVC
Crear servicio
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.
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
Seleccione y complete el nombre correspondiente, el nombre del servicio es un servicio creado de antemano.
Seleccione la imagen del contenedor MySQL
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
La etiqueta del Pod debe ser coherente con la etiqueta utilizada por el selector en el SVC creado.
Dado que MySQL necesita almacenar datos de forma persistente, necesita seleccionar un almacenamiento, esta vez se utiliza el PVC creado anteriormente.
Monte el PVC creado previamente en el directorio /var/lib/mysql en el contenedor MySQL
Observar los lanzamientos de aplicaciones
Ejecute el comando para observar si la aplicación está disponible.
3.3 Implementar la aplicación WordPress
Crear proyecto/espacio de nombres
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
Seleccione el tipo de controlador de implementación
Agregue el puerto utilizado por la aplicación, esta vez use el puerto del nodo para publicarla.
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.
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
Observar la creación de la aplicación.
Acceda a aplicaciones publicadas en máquinas físicas