about J'étais un peu intéressé par Kubernetes en lisant SoftwareDesign 2018/3, alors je l'ai essayé. Je me demandais s'il y avait beaucoup de choses auxquelles j'étais accro, mais j'ai pu passer en douceur de la construction de l'environnement au déploiement et à l'échelle.
VirtualBox
$ brew cask install virtualbox
Préférences système> Sécurité et confidentialité
.
(J'ai oublié de prendre une capture d'écran)minikube
$ brew cask install minikube
Lancer le minikube
$ minikube start
Starting local Kubernetes v1.8.0 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
Kubectl is now configured to use the cluster.
Loading cached images from config file.
Vous pouvez voir que minikube est créé et démarré sur VirtualBox
Créer un déploiement
# deployment
$ kubectl run hello-minikube --image=k8s.gcr.io/echoserver:1.4 --port=8080
deployment "hello-minikube" created
$ kubectl expose deployment hello-minikube --type=NodePort
service "hello-minikube" exposed
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
hello-minikube-7844bdb9c6-88hl4 1/1 Running 0 2m
Si vous vérifiez le tableau de bord dans cet état
#Lancer le tableau de bord
$ minikube dashboard
Des déploiements et des pods sont créés.
#Confirmer l'URL
$ minikube service hello-minikube --url
$ curl $(minikube service hello-minikube --url)
CLIENT VALUES:
client_address=172.17.0.1
command=GET
real path=/
・
・
・
#Suppression du service
$ kubectl delete service hello-minikube
service "hello-minikube" deleted
#Supprimer le déploiement
$ kubectl delete deployment hello-minikube
deployment "hello-minikube" deleted
#fin de minikube
$ minikube stop
Stopping local Kubernetes cluster...
Machine stopped.
Cette fois, nous utiliserons la version complète du tutoriel officiel. https://spring.io/guides/gs/spring-boot-docker/
Cloner le démarreur
$ git clone https://github.com/spring-guides/gs-spring-boot-docker.git
#Utilisez la version finie
$ cd gs-spring-boot-docker/complete
$ ./gradlew build docker
・
・
・
:processTestResources NO-SOURCE
:testClasses
:test
:check
:build
:dockerClean UP-TO-DATE
:dockerPrepare
:docker
BUILD SUCCESSFUL
Total time: 1 mins 37.278 secs
Essayez de bouger
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
springio/gs-spring-boot-docker latest d486fdb38288 4 minutes ago 116MB
$ docker run -p 8080:8080 -t springio/gs-spring-boot-docker
Spring Boot a démarré sur le docker.
Définition des variables d'environnement
$ minikube start
$ eval $(minikube docker-env)
#Dans cet état, vous ne pourrez pas vous connecter temporairement au docker depuis votre PC local, mais si vous redémarrez le terminal, les paramètres disparaîtront et vous serez restauré.
Créez un fichier de paramètres de service avec le contenu suivant.
kubernetes-service.yaml
apiVersion: v1
kind: Service
metadata:
name: hellojavakubernetes
labels:
app: hellojavakubernetes
tier: backend
spec:
type: NodePort
ports:
# the port that this service should serve on
- port: 8080
selector:
app: hellojavakubernetes
tier: backend
Inscription au service
$ kubectl create -f kubernetes-service.yaml
Le service hellojavakubernetes
a été enregistré.
Créez un fichier de configuration de déploiement avec le contenu suivant.
kubernetes-deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: hellojavakubernetes
spec:
replicas: 1
template:
metadata:
labels:
app: hellojavakubernetes
tier: backend
spec:
containers:
- name: hellojavakubernetes
image: springio/gs-spring-boot-docker
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 8080
Essayez de déployer.
$ kubectl create -f kubernetes-deployment.yaml
deployment "hellojavakubernetes" created
$ kubectl get deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
hellojavakubernetes 1 1 1 1 3m
Un déploiement appelé «hellojavakubernetes» a été créé et un pod a également été créé.
Recherchez l'URL.
$ minikube service hellojavakubernetes --url
http://192.168.99.100:31830
Accéder à l'URL affichée
Il était affiché correctement. J'ai pu continuer sans me coincer pour autant.
Puisque c'est un gros problème, je vais essayer de mettre à l'échelle.
$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
hellojavakubernetes 1 1 1 1 17h
#Spécifier les répliques
$ kubectl scale --replicas=2 -f kubernetes-deployment.yaml
deployment "hellojavakubernetes" scaled
#Le nombre de déploiements est passé à 2.
$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
hellojavakubernetes 2 2 2 2 17h
Vous pouvez voir que le nombre de pods est passé à deux.
Ensuite, essayez de changer à partir du fichier de paramètres. Remplacez les «répliques» de «kubernetes-deployment.yaml» créées ci-dessus par «3».
#Appliquer les paramètres
$ kubectl apply -f kubernetes-deployment.yaml
Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply
deployment "hellojavakubernetes" configured
$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
hellojavakubernetes 3 3 3 3 17h
J'ai également pu mettre à l'échelle cela.
terminer
$ kubectl delete service,deployment hellojavakubernetes
$ minikube stop
$ minikube delete
Il semble qu'il y ait encore beaucoup de choses à étudier pour l'exploiter en production, mais j'ai eu l'impression que Kubernetes lui-même est assez complet.
[minikube] https://github.com/kubernetes/minikube
[Spring Boot with Docker] https://spring.io/guides/gs/spring-boot-docker/
[getting started] https://www.bluefyre.io/getting-started-springboot-kubernetes/
Recommended Posts