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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
传统型负载均衡 CLB,每月750个小时 15LCU
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 快速学习第一步如何创建集群及部署应用

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

课程地址: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 环境里面,没有太多的隔离性的。那可能区分不同的机器,或者说配置不同的安全策略,那可能就有很好的隔离性其次,正常情况下,弹性以及

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

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

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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
6月前
|
开发者 iOS开发
【教程】修改应用程序开发者名称的步骤
【教程】修改应用程序开发者名称的步骤
|
2月前
|
监控 JavaScript Java
部署应用程序的具体步骤
部署应用程序的具体步骤
95 4
|
3月前
|
Java Linux 开发工具
eft搭建详细步骤!
1、安装vmware 2、下载合适版本的centos并安装 稍后安装操作系统(安装第二个时把安装程序光盘映像文件ISO清空) 自定义硬件-内存4G-处理器2X2-网络适配器NAT-CD/DVD使用ISO映像 网络和主机名:主机名设置、开启以太网(安装好使用ip addr查看ip地址1-9-2开头的) root密码设置 3、安装xshell 使用ip addr看ip然后连接上 4、安装jdk yum search java|grep jdk yum install -y java-1.8.0-openjdk*
93 2
|
3月前
|
边缘计算 运维 Kubernetes
在K8S中,常见部署K8S方式有哪些?
在K8S中,常见部署K8S方式有哪些?
|
4月前
|
弹性计算 Kubernetes Java
阿里云云效操作报错合集之在绑定其他主体下的k8s集群时,通过kubeconfig导入集群时,出现报错,该如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
Linux
如何创建和配置linux虚拟机(一)
如何创建和配置linux虚拟机
173 0
|
Linux 数据安全/隐私保护
如何创建和配置linux虚拟机(二)
如何创建和配置linux虚拟机(二)
115 0
|
关系型数据库 OLAP API
创建并管理应用|学习笔记
快速学习创建并管理应用
创建并管理应用|学习笔记
|
安全 Java 关系型数据库
案例之创建资源服务器准备工作|学习笔记
快速学习案例之创建资源服务器准备工作
案例之创建资源服务器准备工作|学习笔记
|
Serverless 开发者 容器
应用环境部署及创建|学习笔记
快速学习应用环境部署及创建
应用环境部署及创建|学习笔记
下一篇
无影云桌面