quick-win
This commit is contained in:
@ -85,6 +85,7 @@ module.exports = {
|
||||
collapsable: false,
|
||||
children: [
|
||||
'k8s-core-concepts',
|
||||
'quick-win',
|
||||
'why-kuboard',
|
||||
'concepts'
|
||||
]
|
||||
|
||||
@ -1 +1,139 @@
|
||||
# 部署 cloud-eureka
|
||||
# 部署 cloud-eureka
|
||||
|
||||
|
||||
|
||||
## 检查 cloud-eureka 项目的配置
|
||||
|
||||
**部署类型**
|
||||
|
||||
对于 cloud-eureka 项目,在部署到 Kubernetes 时,建议选择 StatefulSet 作为 Controller,因为 StatefulSet 可以为其管理的容器组提供稳定的网络标识 [StatefulSet Pod Identity](https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#pod-identity),例如,如果 StatefulSet 的名字是 cloud-eureka,副本数为 3, 则 StatefulSet 将确保如下三个容器组的按照 cloud-eureka-0,cloud-eureka-1,cloud-eureka-2 的顺序启动和运行。
|
||||
|
||||
| 容器组名字 | HOSTNAME(环境变量) | DNS name |
|
||||
| -------------- | -------------------- | --------------------------- |
|
||||
| cloud-eureka-0 | cloud-eureka-0 | cloud-eureka-0.cloud-eureka |
|
||||
| cloud-eureka-1 | cloud-eureka-1 | cloud-eureka-1.cloud-eureka |
|
||||
| cloud-eureka-2 | cloud-eureka-2 | cloud-eureka-2.cloud-eureka |
|
||||
|
||||
Eureka Server 要求将 Eureka 实例的 URL 以逗号分隔配置在 eureka.client.serviceUrl.defaultZone 字段中。请参考 [Spring Cloud Eureka Server Peer Awareness](https://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html#spring-cloud-eureka-server-peer-awareness)
|
||||
|
||||
结合 StatefulSet 的特性,在配置 eureka.client.serviceUrl.defaultZone 时,可使用如下类似的参数:
|
||||
|
||||
```yaml
|
||||
eureka.client.serviceUrl.defaultZone: http://cloud-eureka-0.cloud-eureka:9200/eureka, http://cloud-eureka-1.cloud-eureka:9200/eureka, http://cloud-eureka-2.cloud-eureka:9200/eureka
|
||||
```
|
||||
|
||||
|
||||
|
||||
**环境变量**
|
||||
|
||||
参考 cloud-eureka 项目的 [application.yaml](https://github.com/eip-work/kuboard-example/blob/master/cloud-eureka/src/main/resources/application.yml) 文件
|
||||
|
||||
``` yaml
|
||||
spring:
|
||||
application:
|
||||
name: cloud-eureka
|
||||
|
||||
server:
|
||||
port: 9200
|
||||
management:
|
||||
endpoints:
|
||||
web.exposure.include: metrics
|
||||
server:
|
||||
port: 9500
|
||||
|
||||
eureka:
|
||||
instance:
|
||||
preferIpAddress: true
|
||||
hostname: ${HOSTNAME}
|
||||
client:
|
||||
register-with-eureka: false
|
||||
fetch-registry: false
|
||||
service-url:
|
||||
defaultZone: ${CLOUD_EUREKA_DEFAULT_ZONE}
|
||||
server:
|
||||
eviction-interval-timer-in-ms: 60000
|
||||
enable-self-preservation: false
|
||||
```
|
||||
|
||||
该项目中有两个值取自环境变量:
|
||||
|
||||
* HOSTNAME
|
||||
|
||||
Kubernetes 自动配置,如前所述,实际运行时取值为 cloud-eureka-0,cloud-eureka-1,cloud-eureka-2
|
||||
|
||||
* CLOUD_EUREKA_DEFAULT_ZONE 这个参数必须通过环境变量进行配置
|
||||
|
||||
建议配置的值为:
|
||||
|
||||
`http://cloud-eureka-0.cloud-eureka:9200/eureka, http://cloud-eureka-1.cloud-eureka:9200/eureka, http://cloud-eureka-2.cloud-eureka:9200/eureka`
|
||||
|
||||
因为各微服务也需要用到 CLOUD_EUREKA_DEFAULT_ZONE 这个参数(请参考 部署 svc-example 章节),所以建议将该参数配置在 Kubernetes 的 ConfigMap 中最为便捷。
|
||||
|
||||
|
||||
|
||||
**容器 Command 参数**
|
||||
|
||||
参考 cloud-eureka 项目的 [Dockerfile](https://github.com/eip-work/kuboard-example/blob/master/cloud-eureka/Dockerfile) 文件
|
||||
|
||||
```dockerfile
|
||||
FROM eipwork/jdk:1.0.0
|
||||
|
||||
ARG JAR_FILE_NAME=cloud-eureka-0.0.1-SNAPSHOT.jar
|
||||
ARG PORT=9200
|
||||
ARG MANAGEMENT_PORT=9500
|
||||
|
||||
COPY ./target/lib /eip-work/lib
|
||||
COPY ./target/$JAR_FILE_NAME.original /eip-work/app.jar
|
||||
|
||||
ENV CLASSPATH=/eip-work/lib
|
||||
|
||||
EXPOSE $PORT
|
||||
EXPOSE $MANAGEMENT_PORT
|
||||
|
||||
WORKDIR /eip-work
|
||||
|
||||
ENTRYPOINT ["java", "-jar", "/eip-work/app.jar"]
|
||||
```
|
||||
|
||||
ENTRYPOINT 中指定了启动命令为
|
||||
|
||||
``` sh
|
||||
java -jar /eip-work/app.jar
|
||||
```
|
||||
|
||||
因此在 kubernetes 中部署该容器时,无需额外指定 Command 参数。
|
||||
|
||||
|
||||
|
||||
**访问方式及互联网入口**
|
||||
|
||||
Eureka 运行在 9200 端口。Spring Cloud 的微服务通过 CLOUD_EUREKA_DEFAULT_ZONE 中的配置直接与 Eureka 服务通信。
|
||||
|
||||
是否配置访问方式及互联网入口?
|
||||
|
||||
* 如果开发者不需要查看 Eureka 的 Web 界面,则
|
||||
* 无需配置访问方式和互联网入口;
|
||||
* 如果开发者需要查看 Eureka 的 Web 界面,则
|
||||
* 配置集群内访问(Type 为 ClusterIP 的 Service)
|
||||
* 容器端口为9200
|
||||
|
||||
|
||||
|
||||
## 部署 cloud-eureka
|
||||
|
||||
**创建ConfigMap**
|
||||
|
||||
|
||||
|
||||
**创建工作负载**
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## 检查部署结果
|
||||
|
||||
**查看 Eureka 界面**
|
||||
|
||||
|
||||
|
||||
|
||||
BIN
overview/quick-win.assets/image-20190731135811556.089b0e53.png
Normal file
BIN
overview/quick-win.assets/image-20190731135811556.089b0e53.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 74 KiB |
BIN
overview/quick-win.assets/image-20190731225235232.png
Normal file
BIN
overview/quick-win.assets/image-20190731225235232.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
62
overview/quick-win.md
Normal file
62
overview/quick-win.md
Normal file
@ -0,0 +1,62 @@
|
||||
# 最快速的 Kubernetes+微服务 落地方案
|
||||
|
||||
## Kubernetes 落地难
|
||||
|
||||
**Kubernetes 是趋势**
|
||||
|
||||
Kubernetes 是一个全新的基于容器技术的分布式架构领先方案。Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg)。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。
|
||||
|
||||
Kubernetes是一个完备的分布式系统支撑平台,具有完备的集群管理能力,多扩多层次的安全防护和准入机制、多租户应用支撑能力、透明的服务注册和发现机制、內建智能负载均衡器、强大的故障发现和自我修复能力、服务滚动升级和在线扩容能力、可扩展的资源自动调度机制以及多粒度的资源配额管理能力。同时Kubernetes提供完善的管理工具,涵盖了包括开发、部署测试、运维监控在内的各个环节。
|
||||
|
||||
2016、2017年开始,各大互联网厂商就已经进行了各种容器化 + Kubernetes的尝试,请参考 [案例介绍](https://www.kubernetes.org.cn/tags/%E4%BC%81%E4%B8%9A%E6%A1%88%E4%BE%8B),各种实践证明 Kubernetes 越来越成熟。
|
||||
|
||||
**Kubernetes 门槛高**
|
||||
|
||||
然而,Kubernetes 在更大范围内落地的过程却困难重重,原因主要在于其过高的学习门槛:
|
||||
|
||||
* 基础知识要求多,Linux、网络、Docker等;
|
||||
* 集群安装管理复杂;
|
||||
* Kubernetes 的配置文件 YAML 冗长,对象类型繁多、关联关系复杂
|
||||
|
||||
请参考 [如何降低 Kubernetes 学习门槛](concepts)
|
||||
|
||||
## Kuboard 助力
|
||||
|
||||
Kuboard 从以下几方面解决 Kubernetes 落地的难题:
|
||||
|
||||
### Kubernetes 安装手册
|
||||
|
||||
通过对 Kubernetes 安装步骤的反复研究,提供了精简的 Kubernetes 安装手册,并且听取网友实际安装过程中的反馈,多次修改和优化,逐渐形成经过检验的、简洁的 Kubernetes 安装手册。请参考 [安装 Kubernetes 单Master节点](/install/install-k8s) , [安装 Kubernetes 高可用](/install/install-kubernetes)。
|
||||
|
||||

|
||||
|
||||
### 图形化管理界面
|
||||
|
||||
提炼 Kubernetes 各核心概念之间的关系,帮助用户理解如何配置 Kubernetes,并以此为依据设计了 Kuboard 工作负载编辑器。使用 Kuboard,用户无需手工编写和维护冗长的 YAML 文件,配合 Kuboard 提供的其他辅助手段,完全通过图形界面就可以实现微服务的部署和维护。
|
||||
|
||||

|
||||
|
||||
### Spring Cloud 微服务部署实战案例
|
||||
|
||||
Kuboard 提供 Spring Cloud 在 Kubernetes 上部署的实战案例分析,手把手帮助技术团队完成 Spring Cloud 微服务在 Kubernetes 上的部署和维护。请参考 [Spring Cloud on Kubernetes](/micro-service/spring-cloud/)
|
||||
|
||||

|
||||
|
||||
### 免费自助
|
||||
|
||||
这么好的东西卖多少钱?您完全无需为了使用此方案而进入漫长的商务谈判、内部审批流程。
|
||||
|
||||
使用 https://kuboard.cn 网站上提供的任何文档、资源、方案、软件 **完全免费**,已经有许多技术团队参考这些资料,结合其已有经验,顺利地完成 Kubernetes + 微服务的落地交付。碰到问题时,您也可以通过 Kuboard 社群获得支持。
|
||||
|
||||

|
||||
|
||||
Kuboard 团队的盈利方式是为企业提供业务、IT咨询和定制化开发的服务。主要服务内容包括:
|
||||
* 业务架构设计及领域建模
|
||||
* 应用架构设计、数据架构设计
|
||||
* 微服务架构设计
|
||||
* 微服务开发技术培训
|
||||
* DevOps 体系建设及培训
|
||||
|
||||
商务联系请表明您的意图:
|
||||
|
||||

|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 212 KiB After Width: | Height: | Size: 204 KiB |
Reference in New Issue
Block a user