about Ich habe mich beim Lesen von SoftwareDesign 2018/3 ein wenig für Kubernetes interessiert, also habe ich es versucht. Ich habe mich gefragt, ob es viele Dinge gibt, denen ich verfallen bin, aber ich konnte reibungslos vom Aufbau der Umgebung bis zur Bereitstellung und Skalierung vorgehen.
VirtualBox
$ brew cask install virtualbox
minikube
$ brew cask install minikube
Starten Sie die 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.
Sie können sehen, dass Minikube auf VirtualBox erstellt und gestartet wird
Bereitstellung erstellen
# 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
Wenn Sie das Dashboard in diesem Zustand überprüfen
#Starten Sie das Dashboard
$ minikube dashboard
Bereitstellungen und Pods werden erstellt.
#URL bestätigen
$ minikube service hello-minikube --url
$ curl $(minikube service hello-minikube --url)
CLIENT VALUES:
client_address=172.17.0.1
command=GET
real path=/
・
・
・
#Service entfernen
$ kubectl delete service hello-minikube
service "hello-minikube" deleted
#Bereitstellung löschen
$ kubectl delete deployment hello-minikube
deployment "hello-minikube" deleted
#Minikube Ende
$ minikube stop
Stopping local Kubernetes cluster...
Machine stopped.
Dieses Mal werden wir die fertige Version des offiziellen Tutorials verwenden. https://spring.io/guides/gs/spring-boot-docker/
Klonen Sie den Starter
$ git clone https://github.com/spring-guides/gs-spring-boot-docker.git
#Verwenden Sie die fertige Version
$ 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
Versuche dich zu bewegen
$ 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 wurde auf Docker gestartet.
Umgebungsvariablen einstellen
$ minikube start
$ eval $(minikube docker-env)
#In diesem Zustand können Sie von Ihrem lokalen PC aus vorübergehend keine Verbindung zum Docker herstellen. Wenn Sie das Terminal jedoch neu starten, werden die Einstellungen ausgeblendet und Sie werden wiederhergestellt.
Erstellen Sie eine Serviceeinstellungsdatei mit den folgenden Inhalten.
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
Serviceregistrierung
$ kubectl create -f kubernetes-service.yaml
Der Dienst "hellojavakubernetes" wurde registriert.
Erstellen Sie eine Bereitstellungskonfigurationsdatei mit den folgenden Inhalten.
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
Versuchen Sie zu implementieren.
$ 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
Eine Bereitstellung mit dem Namen "hellojavakubernetes" wurde erstellt, und es wurde auch ein Pod erstellt.
Suchen Sie die URL.
$ minikube service hellojavakubernetes --url
http://192.168.99.100:31830
Greifen Sie auf die angezeigte URL zu
Es wurde korrekt angezeigt. Ich konnte weitermachen, ohne bisher hängen zu bleiben.
Da es eine große Sache ist, werde ich versuchen, zu skalieren.
$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
hellojavakubernetes 1 1 1 1 17h
#Geben Sie Replikate an
$ kubectl scale --replicas=2 -f kubernetes-deployment.yaml
deployment "hellojavakubernetes" scaled
#Die Anzahl der Bereitstellungen wurde auf 2 erhöht.
$ kubectl get deployments
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
hellojavakubernetes 2 2 2 2 17h
Sie können sehen, dass die Anzahl der Pods auf zwei gestiegen ist.
Versuchen Sie als Nächstes, die Einstellungsdatei zu ändern. Ändern Sie die "Replikate" der oben erstellten "kubernetes-deploy.yaml" in "3".
#Einstellungen übernehmen
$ 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
Das konnte ich auch skalieren.
Fertig
$ kubectl delete service,deployment hellojavakubernetes
$ minikube stop
$ minikube delete
Es scheint, dass es noch viele Dinge zu untersuchen gibt, um es in der Produktion zu betreiben, aber ich hatte den Eindruck, dass Kubernetes selbst ziemlich vollständig ist.
[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