Proceso de proyecto SpringBoot de implementación de clúster de Kubernetes

Cree una imagen reflejada y cargue el proyecto en el almacén de Alibaba Cloud

https://www.yuque.com/docs/share/69500bda-8be1-4a8b-9794-6c27fb66eef7?# "Docker carga la imagen en el almacén de imágenes de Alibaba Cloud y luego la extrae localmente"

La imagen de implementación de implementación crea un pod

kubectl crear implementación [nombre de implementación] –image = [dirección espejo] --dry-run -o yaml> [nombre de archivo yaml] .yaml

[root@zjj101 k8s]# kubectl create  deployment javademo1 --image=registry.cn-beijing.aliyuncs.com/zjjmkmkksjm/zjj101:1.0 --dry-run -o yaml >javademo1.yaml
W0228 16:41:04.046934   11821 helpers.go:535] --dry-run is deprecated and can be replaced with --dry-run=client.
[root@zjj101 k8s]#

--Dry-run -o yaml> javademo1.yaml significa exportar un archivo yaml en el directorio actual, por conveniencia

Ver archivos creados

[root@zjj101 k8s]#  cat javademo1.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: javademo1
  name: javademo1
spec:
  replicas: 1
  selector:
    matchLabels:
      app: javademo1
  strategy: {
    
    }
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: javademo1
    spec:
      containers:
      - image: registry.cn-beijing.aliyuncs.com/zjjmkmkksjm/zjj101:1.0
        name: zjj101
        resources: {
    
    }
status: {
    
    }
[root@zjj101 k8s]#

Ejecutar archivo yaml

kubectl apply -f [nombre de archivo yaml] .yaml

[root@zjj101 k8s]# kubectl apply -f javademo1.yaml
deployment.apps/javademo1 created

Ver grupo

kubectl obtener vainas

Descubrí que ya lo hay. Debe esperar pacientemente, generalmente debe esperar diez minutos para que el estado se vuelva activo.

[root@zjj101 k8s]# kubectl get pod
NAME                         READY   STATUS    RESTARTS   AGE
javademo1-69f7678847-qf5gf   1/1     Running   0          6m59s

Puede usar kubectl describe pod [pod name] para ver si se informa de un error

[root@zjj101 k8s]#  kubectl describe pod javademo1-69f7678847-qf5gf
Name:           javademo1-69f7678847-qf5gf
Namespace:      default
Priority:       0
Node:           zjj103/172.16.10.103
Start Time:     Sun, 28 Feb 2021 17:22:23 +0800
Labels:         app=javademo1
                pod-template-hash=69f7678847
Annotations:    <none>
Status:         Pending
IP:
IPs:            <none>
Controlled By:  ReplicaSet/javademo1-69f7678847
Containers:
  zjj101:
    Container ID:
    Image:          registry.cn-beijing.aliyuncs.com/zjjmkmkksjm/zjj101:                                                                               1.0
    Image ID:
    Port:           <none>
    Host Port:      <none>
    State:          Waiting
      Reason:       ContainerCreating
    Ready:          False
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-z                                                                               plfm (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  default-token-zplfm:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-zplfm
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type    Reason     Age    From               Message
  ----    ------     ----   ----               -------
  Normal  Scheduled  5m20s  default-scheduler  Successfully assigned def                                                                               ault/javademo1-69f7678847-qf5gf to zjj103
  Normal  Pulling    5m19s  kubelet, zjj103    Pulling image "registry.c                                                                               n-beijing.aliyuncs.com/zjjmkmkksjm/zjj101:1.0"

Luego lo comprobé y descubrí que estaba bien.

[root@zjj101 k8s]# kubectl get pod -o wide
NAME                         READY   STATUS    RESTARTS   AGE     IP             NODE     NOMINATED NODE   READINESS GATES
javademo1-69f7678847-qf5gf   1/1     Running   0          9m52s   10.244.3.141   zjj103   <none>           <none>

La ip 10.244.3.141 anterior es utilizada internamente por el clúster de kubernetes y el navegador externo no puede acceder a ella, por lo que el puerto debe exponerse externamente.

Agregue tres copias para hacer una expansión

Implementación a escala kubectl [implementación 名字] --replicas = 3

[root@zjj101 k8s]# kubectl  scale deployment javademo1 --replicas=3
deployment.apps/javademo1 scaled

k8s se expandirá en el nodo nodo

Descubrió que la capacidad se ha ampliado.

[root@zjj101 k8s]# kubectl  get deployment javademo1
NAME        READY   UP-TO-DATE   AVAILABLE   AGE
javademo1   3/3     3            3           14m
[root@zjj101 k8s]# kubectl get pod -o wide
NAME                         READY   STATUS    RESTARTS   AGE     IP             NODE     NOMINATED NODE   READINESS GATES
javademo1-69f7678847-68z2w   1/1     Running   0          3m12s   10.244.3.143   zjj103   <none>           <none>
javademo1-69f7678847-nsnbc   1/1     Running   0          3m12s   10.244.3.142   zjj103   <none>           <none>
javademo1-69f7678847-qf5gf   1/1     Running   0          17m     10.244.3.141   zjj103   <none>           <none>

El servicio expone aplicaciones

Cuando Service expone puertos al mundo exterior, en realidad tiene un efecto de equilibrio de carga.

kubectl exponer implementación [nombre de implementación] –port = [puerto proporcionado externamente] --target-port = [puerto interno] --type = NodePort

Descripción:

- Port es el puerto proporcionado al exterior - target
-port es el puerto interno,
–type = NodePort está expuesto

Tenga en cuenta que el puerto no debe estar escrito, debe coincidir con el puerto de su proyecto; de lo contrario, no será accesible. Por ejemplo, si el puerto del proyecto original es 8080, debe escribir el puerto 8080; de lo contrario, no podrá para acceder a él.

[root@zjj101 k8s]# kubectl  expose deployment javademo1 --port=8080  --target-port=8080 --type=NodePort
service/javademo1 exposed

Ver los puertos expuestos

kubectl obtener svc

[root@zjj101 k8s]# kubectl  get svc
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
javademo1    NodePort    10.105.149.218   <none>        8080:31420/TCP   5s
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP          46h
[root@zjj101 k8s]#

Puedes visitar

Verifique que javademo1 sea el puerto 31420 externamente, luego puede usar el puerto 31420 de cualquier máquina en el clúster para acceder a él

Durante la visita, se le dividirá en partes iguales entre varias copias de este módulo.

imagen-20210228175354234

Ver el registro de la ventana acoplable

kubectl get pod -o wide javademo1

[root@zjj101 k8s]# kubectl get pod -o wide
NAME                         READY   STATUS    RESTARTS   AGE   IP             NODE     NOMINATED NODE   READINESS GATES
javademo1-69f7678847-68z2w   1/1     Running   0          23m   10.244.3.143   zjj103   <none>           <none>
javademo1-69f7678847-nsnbc   1/1     Running   0          23m   10.244.3.142   zjj103   <none>           <none>
javademo1-69f7678847-qf5gf   1/1     Running   0          37m   10.244.3.141   zjj103   <none>           <none>

Descubrí que todos los nodos están en la máquina zjj103

Usando docker ps -a en la máquina zjj103, encontré que se implementaron tres máquinas docker en esta máquina

[root@zjj103 ~]# docker ps -a
CONTAINER ID        IMAGE                                                 COMMAND                  CREATED             STATUS                        PORTS               NAMES
ea2786f7e715        3e63062a76cc                                          "java -Djava.securit…"   16 minutes ago      Up 15 minutes                                     k8s_zjj101_javademo1-69f7678847-68z2w_default_eec5b2d6-93d0-4cbd-9002-269c989b4010_0
e191795d4c3b        3e63062a76cc                                          "java -Djava.securit…"   16 minutes ago      Up 15 minutes                                     k8s_zjj101_javademo1-69f7678847-nsnbc_default_a3370b98-6db4-4693-9350-832e2490175b_0
7cd16dd0c99a        registry.cn-beijing.aliyuncs.com/zjjmkmkksjm/zjj101   "java -Djava.securit…"   23 minutes ago      Up 23 minutes                                     k8s_zjj101_javademo1-69f7678847-qf5gf_default_4fb122ba-ae81-4153-8f5e-a22012e58a30_0

Utilice los registros de la ventana acoplable ea2786f7e715 y los registros de la ventana acoplable 7cd16dd0c99a y los registros de la ventana acoplable e191795d4c3b para ver los registros en ejecución de tomcat

Supongo que te gusta

Origin blog.csdn.net/qq_41489540/article/details/114252763
Recomendado
Clasificación