搭建本地Kubernetes集群与部署微服务

关注“Java艺术”一起来充电吧!

本篇内容:

  • 本地安装minikube

  • 在本地单节点Kubernetes集群上部署服务


本地安装用于学习的单节点Kubernetes集群

Kubernetes官方文档有《互动教程》,可以在线学习kubectl的使用,而不需要自己搭建Kubernetes环境,但没有dashboard,网络不好会很卡。而minikube是一个快速搭建单节点Kubenetes集群的工具,可以在本地快速的搭建一个单节点的Kubenetes集群,并且提供dashboard,这对新手比较友好。

也可以在阿里云上、或者aws购买Kubernetes服务用于学习,服务器按需购买,在搭建项目框架时,还是可以先体验一把的,也更接近生产环境。后续文章也会跟大家分享如何在阿里云Kubernetes上部署服务。

下面是分享笔者在学习Kubernetes过程中,在mac os上安装minikube时留下的笔记。在安装minikube之前需要先安装一个虚拟机,如VirtualBoxVMWare Fusion

为什么要装虚拟机呢?因为安装minikube只是用来搭建Kubernetes集群的工具,而minikube是在虚拟机上搭建的Kubernetes集群。首次启动minikube的过程很慢,因为minikube需要下载安装Kubernetes所需要的镜像。

如果使用VMWare Fusion,在启动minikube时可能会遇到一些坑,作为初学者,我们肯定不想一开始就折腾,卡住学习的进度,因此笔者建议大家安装VirtualBox

第一步:安装kubectl

brew install kubernetes-cli

第二步:安装虚拟机

 VirtualBox的安装跳过。

第三步:安装minikube:

brew install minikube

启动minikube,由minikube在虚拟机上安装Kubernetes集群。

首次启动minikube需要指定虚拟机驱动--vm-driver,并指定拉取安装Kubernetes时需要拉取的一些镜像文件的仓库地址为阿里云提供的镜像仓库地址,如果你有,那么可以不考虑。

minikube start --vm-driver=virtualbox \--image-mirror-country='cn' \--image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'

每种虚拟机对应的--vm-driver的值可到官网了解,这里列出两种常用的:

  • VMWare Fusionvmwarefusion

  • VirtualBoxvirtualbox

搭建本地Kubernetes集群与部署微服务_第1张图片

后续启动不需要再指定一大堆参数:

minikube start

电脑重启之后启动:

minikube start --image-mirror-country='cn' \--image-repository='registry.cn-hangzhou.aliyuncs.com/google_containers'

查看状态:

minikube status
搭建本地Kubernetes集群与部署微服务_第2张图片

启动dashboard

minikube dashboard
搭建本地Kubernetes集群与部署微服务_第3张图片

停止minikube:

minikube stop


在本地单节点Kubernetes集群上部署服务

首先确保本地机器上已经安装了VirtualBoxminikubeDockerkubectl

mac上安装docker可下载dmg安装,非常简单,还提供一个Docker dashboard可视化界面。下载链接:https://download.docker.com/mac/stable/Docker.dmg

第一步:项目打包

执行 mvn clean package -DskipTests 构建打包服务。

第二步:构建应用程序镜像

执行 docker-compose build 在本地(或jenkins)构建镜像。

第三步:将镜像push到镜像仓库

执行 docker image tag 打标签,再将镜像pushdocker hubpush之前需要先登陆。push到私有仓库也是一样的步骤。

第四步:配置kubectl 

使用kubectl之前确保 ~/.kube/config 的配置已修改为Kubernetes服务提供的凭据。但使用minikube不需要配置,因为minikube在启动Kubernetes集群时就已经配置好了,但如果是使用阿里云的容器服务就需要修改配置。

第五步:配置secret(看情况,不是必须的步骤) 

如果是使用私有的镜像仓库,则需要为kubernetes容器从私有镜像仓库拉取镜像提供secret

kubectl create --namespace=default secret \
docker-registry my-docker-reg-secret \
--docker-server=registry.cn-shenzhen.aliyuncs.com \
[email protected] \
--docker-password=xxxxx \
[email protected]

其中--namespace用于指定名称空间,因为不同名称空间下,secret是不共享的。

第六步:将服务部署到Kubernetes 

执行 kubectl apply -f [配置文件] 部署服务。

例如:

kubectl apply -f demo-srv.yaml

demo-srv.yaml的配置文件如下:

apiVersion:apps/v1
kind:Deployment
metadata:
  name:demo-srv
  namespace:default
spec:
  replicas:1
  selector:
    matchLabels:
      app:demo-srv
  template:
    metadata:
      labels:
        app:demo-srv
        env:default
    spec:
      containers:
        - name:demo-srv
          image:registry.cn-shenzhen.aliyuncs.com/wujiuye/demo-srv
          # 镜像拉取策略:Always(总是拉取)、IfNotPresent(默认值,本地有则使用本地镜像,不拉取)、Never(只使用本地镜像,从不拉取)
          imagePullPolicy:Always
          ports:
            - name:http-port
              containerPort:8080
          # 指定环境变量的配置文件
          # envFrom:
          #   - configMapRef:
          #     name: ycpay-common-config
      # 配置拉取镜像的Secret
      imagePullSecrets:
        - name:my-docker-reg-secret
      # 指定ServiceAccount
      # serviceAccountName: pod-configmap-sa
---
apiVersion:v1
kind:Service
metadata:
  name:demo-srv
  namespace:default
spec:
  selector:
    app:demo-srv
    env:default
  ports:
    - protocol:TCP
      port:80
      targetPort:8080

后续在搭建用于学习的Spring Cloud kubernetes项目时,我们再学习如何将服务部署到阿里云上的kubernetes,会比本篇介绍的部署在本地kubernetes集群上复杂一些,包含一些权限的配置文件,以及配置中心的读权限、日记收集、网络这些。

公众号:Java艺术

扫码关注最新动态

你可能感兴趣的:(Spring,Cloud)