热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

本地单节点Kubernetes集群搭建

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

本篇内容:

  • 本地安装minikube

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


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


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


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


下面是分享笔者在学习Kubernetes
过程中,在mac os
上安装minikube
时留下的笔记。在安装minikube
之前需要先安装一个虚拟机,如VirtualBox
VMWare 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
时需要拉取的一些镜像文件的仓库地址为阿里云提供的镜像仓库地址,如果你有vpn
,那么可以不考虑。


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


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

  • VMWare Fusion
    vmwarefusion

  • VirtualBox
    virtualbox

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

minikube start


电脑重启之后启动:

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


查看状态:

minikube status


启动dashboard

minikube dashboard


停止minikube
:

minikube stop


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


首先确保本地机器上已经安装了VirtualBox
minikube
Docker
kubectl


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
 打标签,再将镜像push
docker hub
push
之前需要先登陆。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 \
--docker-username=xxxxxx@qq.com \
--docker-password=xxxxx \
--docker-email=xxxxxx@qq.com


其中--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艺术

扫码关注最新动态


推荐阅读
author-avatar
Ken張創彬
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有