about I was a little interested in Kubernetes while reading SoftwareDesign 2018/3, so I tried it. I was wondering if there were many things I was addicted to, but I was able to proceed smoothly from environment construction to deployment and scale.
$ brew cask install virtualbox
System Preferences> Security & Privacy. (Forgot to take a screenshot)
$ brew cask install 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.
You can see that minikube is created and started on VirtualBox
Creating a deployment
# 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
If you check the dashboard in this state
#Launch the dashboard $ minikube dashboard
Deployments and pods are created.
#URL confirmation $ minikube service hello-minikube --url $ curl $(minikube service hello-minikube --url) CLIENT VALUES: client_address=172.17.0.1 command=GET real path=/ ・ ・ ・
#Service removal $ kubectl delete service hello-minikube service "hello-minikube" deleted #Deploy deployment $ kubectl delete deployment hello-minikube deployment "hello-minikube" deleted #minikube end $ minikube stop Stopping local Kubernetes cluster... Machine stopped.
This time we will use the completed version of the official tutorial. https://spring.io/guides/gs/spring-boot-docker/
Clone the starter
$ git clone https://github.com/spring-guides/gs-spring-boot-docker.git #Use the finished 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
Try to move
$ 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 has started on docker.
Setting environment variables
$ minikube start $ eval $(minikube docker-env) #In this state, you will not be able to connect to docker from your local PC temporarily, but if you restart the terminal, the settings will disappear and you will be restored.
Create a service configuration file with the following contents.
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
$ kubectl create -f kubernetes-service.yaml
hellojavakubernetes service has been registered.
Create a deployment configuration file with the following contents.
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
$ 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
A deployment called
hellojavakubernetes has been created and a pod has also been created.
Look up the URL.
$ minikube service hellojavakubernetes --url http://192.168.99.100:31830
Access the displayed URL
It was displayed correctly. I was able to proceed without getting stuck so far.
Since it's a big deal, I'll try scaling.
$ kubectl get deployments NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE hellojavakubernetes 1 1 1 1 17h #Specify replicas $ kubectl scale --replicas=2 -f kubernetes-deployment.yaml deployment "hellojavakubernetes" scaled #The number of deployments has increased to 2. $ kubectl get deployments NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE hellojavakubernetes 2 2 2 2 17h
You can see that the number of pods has increased to two.
Next, try changing from the configuration file.
replicas of the
kubernetes-deployment.yaml created above to
#Apply settings $ 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
I was able to scale this as well.
$ kubectl delete service,deployment hellojavakubernetes $ minikube stop $ minikube delete
It seems that there are still many things to investigate in order to operate it in production, but I got the impression that Kubernetes itself is quite complete.
[Spring Boot with Docker] https://spring.io/guides/gs/spring-boot-docker/
[getting started] https://www.bluefyre.io/getting-started-springboot-kubernetes/