第一步如何创建集群及部署应用|学习笔记

简介: 快速学习第一步如何创建集群及部署应用

开发者学堂课程【云原生实践公开课第一步如何创建集群及部署应用】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/698/detail/12266


第一步如何创建集群及部署应用


  • 基础篇∶5步上手K8s
  • 第1步︰如何创建集群及部署应用?
  • 第2步∶上K8s 到生产环境之前,有哪些是需要注意事项?
  • 第3步:Kubernetes集群的监控与日志
  • 第4步∶关注K8s集群的弹性伸缩问题
  • 5步∶怎样升级一个Kubernetes集群?

 

内容介绍:

一、 集群部署的常用方法

二、 手把手带你创建一个集群

三、 手把手教你部署应用


一、集群部署的常用方法

  • minikube :本地开发测试 minikube start

https://github.com/kubernetes/minikube

minikube 原理,在机器上面启动一个虚拟机,然后在虚拟机里面部署相应的这个环境。

当然了,随着这个minikube演进,里面的驱动,支持的越来越多了。

  • kind : K8s相关的集成测试

kind create cluster

https://github.com/kubernetes-sigs/kind

kind,围绕kubernetes来创建一个 K8s 环境,很启动很快

那kind常用的用途,做 K8s 开发相关的极限测试的时候,提前测试前把 kind 启动起来。

  • kubeadm :高可用环境

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/high-availability/

安装方式在普遍的官方文档里面,有介绍,怎么去部署一个高可用的这个课内环境一系列的这个组件是如何安装的。相对来说,安装会比较复杂一些,因为一个高可用的集群,配置起来麻烦。


二、手把手带你创建一个集群

1. 下载并安装 minikube 二进制文件

社区版: https://minikube.sigs.k8s.io/docs/start/

中国版: https://developer.aliyun.com/article/221687

  • 这个版本,是在社区的 minikube 的这个基础上,做了一些优化,把里面的

一些镜像,换成了阿里默认的镜像源,使用起来非常方便的,是完全免费的。

  • 安装只要把根据系统,照着文档执行就可以了。命令执行了,就会下载

输入机器的密码,就下载完成了。在本地做调试的时候方便的。

  • 正常情况下启动一个集群,只要输入 minikube version,会有一些 driver

项,默认情况下选择 docker driver。

  • 不同的driver之间,会有差异
  • Minikube支持很多种 driver,第一种,是 docker 比较清亮,背后是在一个

docker 的这个容器里面,启动 K8S 的一个集群,但是不支持 arm 架构。偶尔需要重启一下,因为不稳定Ingress 无法使用,做某些实验的时候,可能太好用

  • Hyperkit:对应 hypervisor, 是一种裁剪过的一个虚拟机。在开发环境中,大部

分情况下都是用 Hyperkit,然后对应到 Windows 上面就是 Hyperv。在使用的过程中,其实就把这 minikube start --driver 中的 driver 改一下,改成 hyperkit。启动方式后面加一个参数就可就可以了,非常方便

  • 最主要的问题是对 Cpu 消耗比较多,把 Minikube 的关掉就可以解决
  • virtualbox :更稳定,实际上相当于启动了一个完整的虚拟机。

2. Minikube常用命令∶

启动集群: minikube start

插件系统: minikube addons

Dashboard 界面: minikube dashboard

查看集群状态: minikube status

使用阿里云 ACK_快速创建一个生产可用的集群

  • minikube启动的过程是通过 status来启动,有几个组件,最常用的是

kubelet和 apiserver,一启动就配置成功了,可以直接本地的 minikube 上使用

  • Minikube 会安装一些默认的插件,可以在 minikube addons list 上看到。

Minikube 默认创建了一个本地的存储的供应相当于本地的磁盘当成存储这个应用以及插件就可以使用了

  • 不知道命令怎么输入,可以输入 help
  • Dashboard 的安装。在 K8S 体系里,一切都是 K8S 上面的插件,背后的模卡

是ContainerC。在 minikube 里面,通过 dashboard的命令就可以使用了,一个集群就已经创建好了。


三、手把手教你部署应用

访问 github.com/search?o=desc&q=golang+前端&s=stars&type=Repositories网页,选择 Sort: Most stars,找到 flipped-aurora / gin-vue-admin 应用,该应用大致分为三个组件 service、mysqlredis也可以分这样三个结构, server 的一个应用、mysql的一个存储应用, redis 的缓存应用。

  • 创建一个包含前端、缓存以及数据库的应用。

怎么创建应用?首先把刚搜索的应用复制到本地,写三个 yaml 文件即可完成应用部署。第一个 yaml 文件是 mysql。组件之间如何访问的 mysql?可以配置一个serviceService 通过 label K8S 里的 pod 进行对应。所以其他的组件,去访问这个service,就可以访问到 K8S 上的这个 pod Mysql 存储持久化可以通过配置一个持久化存储用 K8S 里面 deployment 模式,把整个应用的这个配置起来。

填补镜像涉及到一些环境变量,环境变量就是通过这个KS里面的env传进去。里面有一些细节,比如imagePullPolicy: IfNotPresent 这IfNot,这里可以填 always,也可以填 if not present always,就是每次这个 pod 重启的时候,都会把镜像拉一下。if not present 就是,如果当前的这个本地的 docker 镜像仓库里面存在这样一个镜像,就可以直接使用他。

redis 如何被其他的组件访问通过 service 去访问,配置的端口是6379,然后有一个 department 去配置的同时,也是通过这个 label 来这个筛选到。

然后一个对应关系,就是应启动 webservice 的启动了。然后,这里面也是一个镜像拉取的方式,这里有一些访问的端口,就是这个 readinessProbe 和

livenessProbe,可以判断这个应用有没有正常启动里面有一些配置,通过configmap 的方式,写进来,一些配置通过 config map 绑定到 volumes 里面去,然后再把这个 rom 的绑定进去。password,这里其实是应该配置成 secret 的。这样的话就能避免铭文去使用了。

password 里面有一个访问的方式,正常情况下,就里面的不同的组件怎么去访问?因为配置的 service,所以有一个 service 的地址,如果是本地的这个 service,直接就使用 default.svc.cluster.local 后缀,加上这个 service 名称就可以了,然后配合上端口号。

service 机制的好处,就是假设 service 背后的这个 pod 销毁了,有一个新的 pod出现,那么这个服务,其实是可以正常使用的,并不会因为某一个 pod 销毁,或者说因为绑定了某一个 IP,导致这个背后的实际运行的进程销毁,这个访问服务就出现问题了,所以service机制带一定程度的这个负载均衡,同时,也为后续的一系列的这个功能来做好这个铺垫。

最后再来部署一下。本地部署了 K8S 的这个文件夹,可以通过 Watch 的命令,看到创建情况,最后会慢慢的这个去启动。

  • 组件之间是如何互相访问的?

可以配置一个 serviceService 通过 label K8S 里的 pod 进行对应。所以其他的组件,去访问这个 service,就可以访问到 K8S 上的这个 pod

  • 应用之间的依赖关系怎么办?如何探测应用已经存活?

web 应用是依赖于 mysql 的,mysql 如果还没启动, web 应用肯定就无法启动。在 K8S 里面的理念,就是 pod 是可以不断的重启的。怎样保证这个应用已经正常的运行?就是有一个活的机制,就是刚刚介绍的 readinessProbe 和livenessProbe就是保证了这个应用已经正常的这个存活了。在 web service 里面,配置 readinessProbe 和 livenessProbe代表这个进程,已经正常在运行可以正常的工作了。

  • 参数、配置文件该如何处理?
  • 数据库的持久化存储怎么处理?
  • 小技巧∶本地的镜像如何调试?
  • service的这个类型clusterIPnodeportloadbalancer这三个经常有同学分不

清楚是什么意思。

  • clusterIP是最小的一个范畴,就是在这个集群范围内才能使用,这个service

出了这个集群可能就用不了,就是一个集群范围内的一个IP。

  • Nodeportnode是节点的nodeport是端口的port。Note的这个使用这个方

式,就是在这个宿主机上面去开一个端口,通过宿主机的IP就可以去访问了。

loadbalancer一般情况下有外部的组建要访问的话,会使用这个loadbalancer,会配置一个集群中的这个负载均衡器所分配的一个地址,比如阿里云上面SLB那种负载均衡,就是实际上就是一个可以外网访问的一个IP或者域名等等,类似于这种方式就可以正常的这个外部的去访问。

  • 网络慢解决方法:在本地的这个docker里面,先把image铺起来,本地的话

就会快很多,把本地铺起来。就会很快把本地的这个docker镜像的保存起来,相当于本地已经拉取了这样一个镜像,可以保存起来多save。

  • 建一个文件夹build-image把save这个镜像放进去。之后,把镜像放到这个

Minikube master的这个命令库里面去然后master相当于本地的build-image文件夹,复制到docker里面,就是Minikube的这个环境里面去了。

  • 通过Minikube SSH命令进去Minikube。进去就是docker load。把它load进

,已经把docker image载入进去了

  • yaml文件使用docker is not present的好如果本地已经有镜像就不会再

导入。在开发的过程中,遇到了镜像的这个问题?使用Minikube,可以非常容易解决镜像已经放到Minikube里面的镜像仓库了其实整体来说,已经运行起来了

  • 访问可以通过Minikube service。
  • 我们先看一下到底有哪些service,因为我们刚刚创建了service。通过

coolcity or get service,可以看到这个web server已经启动起来,然后通过url访问这个应用让一个url加上一些命令

  • 登录页面,然后默认情况,应用的密码123456以及验证码七五进到这个页面

里面了这里面会有一些功能,比如角色管理等等。整体、应用的附属的,没有太多的问题。那这个应用,就算部署成功了。


四、应用部署成功了,我还会遇到什么问题?

遇到的问题

流水线、迁移、均衡、负载、调度、隔离、安全弹性、沙箱、高可用、编排、路

由、监控、日志、报警、金丝雀、证书、灰度

原生应用要真正做到生产可用,其实是有非常多的问题要去解决的。比如隔离。

应用都在一个 doc 环境里面,没有太多的隔离性的。那可能区分不同的机器,或者说配置不同的安全策略,那可能就有很好的隔离性其次,正常情况下,弹性以及

这个高可用日志,监控如何去配置,怎么去使用。

日志,包括监控报警,是非常重要的一个环节。如何做这个灰度发布金丝雀部署等等一系列的这个问题,都会这个接踵而至,所以,在后面的课程,会为大家分分门别类的。

一步一步解开这些问题到底该如何解决,为大家深入的介绍怎么去实践这些这些技术。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
存储 缓存 NoSQL
【Redis】Redis魔法:揭秘Key的自动消失术——过期删除机制解析
【Redis】Redis魔法:揭秘Key的自动消失术——过期删除机制解析
531 0
|
2月前
|
SQL 安全 关系型数据库
PostgreSQL 18 发布
PostgreSQL 18重磅升级:新增异步I/O提升高并发性能,原生支持UUID v7增强索引效率,并优化并行查询、逻辑复制,强化安全与SQL功能,全面提升数据库性能与可靠性。
215 8
|
3月前
|
监控 Java API
Spring WebFlux 响应式编程技术详解与实践指南
本文档全面介绍 Spring WebFlux 响应式编程框架的核心概念、架构设计和实际应用。作为 Spring 5 引入的革命性特性,WebFlux 提供了完全的响应式、非阻塞的 Web 开发栈,能够显著提升系统的并发处理能力和资源利用率。本文将深入探讨 Reactor 编程模型、响应式流规范、WebFlux 核心组件以及在实际项目中的最佳实践,帮助开发者构建高性能的响应式应用系统。
704 0
|
存储 UED 开发者
Flutter鸿蒙版本灵活使用方法间的回调处理复杂化的逻辑
在 Flutter 开发中,灵活使用函数回调可以提高代码的可重用性、简化异步编程、增强解耦设计和提升用户体验。本文通过一个简单的示例,展示了如何在 Flutter 中实现函数调用和回调的基本使用。示例代码包括主入口、页面组件和回调函数的定义与调用,详细解析了每个部分的功能和作用。通过这种方式,开发者可以在操作完成后执行特定逻辑,使代码更易读和维护。
280 0
|
Kubernetes 负载均衡 算法
如何在kubernetes中实现分布式可扩展的WebSocket服务架构
如何在kubernetes中实现分布式可扩展的WebSocket服务架构
461 1
|
数据采集 机器学习/深度学习 人工智能
探索AI在软件测试中的应用与挑战
【2月更文挑战第28天】 随着人工智能(AI)技术的迅猛发展,其在软件测试领域的应用逐渐显现出巨大的潜力和价值。本文将深入探讨AI在软件测试中的具体应用,包括自动化测试、智能化缺陷检测、测试用例生成等方面,并分析其面临的挑战,如数据质量、模型泛化能力、技术融合等。通过对比分析和案例研究,旨在为软件测试领域提供新的视角和解决方案。
515 1
|
JSON 前端开发 Java
Spring Boot3统一结果封装
Spring Boot3统一结果封装
640 1
|
SQL XML Java
【SQL用法】Mybatis框架中的xml文件中经常使用的sql语句
【SQL用法】Mybatis框架中的xml文件中经常使用的sql语句
235 0
|
存储 Kubernetes 负载均衡
从零开始:阿里云上Kubernetes集群的搭建与部署
Kubernetes (通常简称为K8s) 是一个用于自动化部署、扩展和管理容器化应用程序的开源平台。它最初由 Google 开发,现在由云原生计算基金会(CNCF)维护。Kubernetes 提供了一个可靠的容器编排环境,使得在多个节点上运行和管理容器化应用程序变得更加容易。它支持多种容器运行时,例如 Docker、rkt、CRI-O 等,可以在不同的云服务商、虚拟机或物理机上运行。Kubernetes 具有许多功能,例如自动化应用程序部署和扩展、负载均衡、自动容器重启、滚动更新、存储管理、自动发布和回滚等。它还提供了一些常见的应用程序模式,例如微服务、分布式系统和无状态应用程序,
14139 3