部署一個簡單的springboot服務,有個restful接口,以下:node
List-1spring
mjduan@mjduan-host:/opt/software/tool/virtualbox-vagrant/master$ curl http://192.168.33.10:30002/person/1 {"id":1,"name":"name=1","address":"address"} mjduan@mjduan-host:/opt/software/tool/virtualbox-vagrant/master$
咱們將這個springboot部署到k8s上,製做鏡像就不描述了,k8s的yaml文件以下,以後執行"kubectl apply -f k8s-demo.yaml",就能夠了。api
List-1.1 k8s-demo.yaml瀏覽器
apiVersion: v1 kind: Service metadata: name: k8s-learn-service namespace: default labels: app: k8s-learn-service spec: type: NodePort ports: - port: 8080 nodePort: 30002 selector: app: k8s-learn-service --- apiVersion: apps/v1 kind: Deployment metadata: name: k8s-learn-deployment labels: app: k8s-learn-deployment spec: replicas: 1 selector: matchLabels: app: k8s-learn-service template: metadata: labels: app: k8s-learn-service spec: containers: - name: k8s-learn-container1 image: k8s-learn:1.0 imagePullPolicy: IfNotPresent ports: - containerPort: 8080 volumeMounts: - mountPath : /opt/applog name: my-volume volumes: - name: my-volume emptyDir: {}
NodePort方式,是直接暴露端口,這種方式不是很好。ClusterIP方式,集羣外是訪問不了的,咱們用Ingress方式來暴露端口,以下:springboot
List-2.1 k8s-demo.yamlbash
apiVersion: v1 kind: Service metadata: name: k8s-learn-service namespace: default labels: app: k8s-learn-service spec: type: ClusterIP ports: - port: 8080 selector: app: k8s-learn-service --- apiVersion: apps/v1 kind: Deployment metadata: name: k8s-learn-deployment labels: app: k8s-learn-deployment spec: replicas: 1 selector: matchLabels: app: k8s-learn-service template: metadata: labels: app: k8s-learn-service spec: containers: - name: k8s-learn-container1 image: k8s-learn:1.0 imagePullPolicy: IfNotPresent ports: - containerPort: 8080 volumeMounts: - mountPath : /opt/applog name: my-volume volumes: - name: my-volume emptyDir: {}
以後執行"kubectl apply -f k8s-demo.yaml",以後查看該服務:restful
List-2.2app
[root@master springboot]# kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ... k8s-learn-service ClusterIP 10.107.55.103 <none> 8080/TCP 3m ...
以後建立用於ingress,以下curl
List-2.3 springboot-ingress.yamlui
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: apps-springboot spec: rules: - host: springboot-ui http: paths: - path: / backend: serviceName: k8s-learn-service servicePort: 8080
執行"kubectl apply -f springboot-ingress.yaml ",查看ingress狀態:
List-2.4
[root@master springboot]# kubectl get ingress NAME HOSTS ADDRESS PORTS AGE apps-springboot springboot-ui 80 17m
以後在你本地/etc/hosts中加入"k8s的任一節點IP springboot-ui",在瀏覽器中訪問"http://springboot-ui/person/12"