Cree una imagen reflejada y cargue el proyecto en el almacén de Alibaba Cloud
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.
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