热门标签 | 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艺术

扫码关注最新动态


推荐阅读
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • 五、RabbitMQ Java Client基本使用详解
    JavaClient的5.x版本系列需要JDK8,用于编译和运行。在Android上,仅支持Android7.0或更高版本。4.x版本系列支持7.0之前 ... [详细]
  • eclipse_在eclipse上使用github,向github中提交项目
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了在eclipse上使用github,向github中提交项目相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • maven配置阿里云仓库的实现方法(2022年)_java
    本文主要介绍了maven配置阿里云仓库的实现方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的 ... [详细]
  • 1jdk去网站下载,然后拷贝到linux上;或直接wgethttp:download.oracle.comotn-pubjavajdk8u181-b1 ... [详细]
  • jenkins用户手册15进程内脚本认证
    jenkins和一些插件,允许用户在jenkins中执行groovy脚本。这些脚本功能是由下面支持的:.脚本控制台.jenkins通道.扩展的邮件插件.groovy插件-当 ... [详细]
  • springboot基于redis配置session共享项目环境配置pom.xml引入依赖application.properties配置Cookie序列化(高版本不需要)测试启 ... [详细]
  • 在IDEA中如何安装配置maven
    这篇文章主要介绍在IDEA中如何安装配置maven,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、下载maven:1、maven官网:h ... [详细]
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社区 版权所有