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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 快速学习第一步如何创建集群及部署应用

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

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

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

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

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

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
10天前
|
弹性计算 前端开发 持续交付
云效产品使用常见问题之导入ECS主机到资源池找不到导入的入口如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
Serverless 开发者 容器
应用环境部署及创建|学习笔记
快速学习应用环境部署及创建
81 0
应用环境部署及创建|学习笔记
|
监控 大数据 流计算
环境篇之项目概述|学习笔记
快速学习环境篇之项目概述
64 0
|
分布式数据库 数据库 开发者
创建集群|学习笔记
快速学习创建集群
77 0
创建集群|学习笔记
|
Shell Python
Fabric 源码学习:如何实现批量管理远程服务器?
简单来说,它是一个用 Python 开发的轻量级的远程系统管理工具,在远程登录服务器、执行 Shell 命令、批量管理服务器、远程部署等场景中,十分好用。 Fabric 2 是其最新的大版本,跟早前的 Fabric 1 有挺大的不同,更加好用了,但是没填上的坑也挺多的……
156 0
Fabric 源码学习:如何实现批量管理远程服务器?
|
弹性计算 Linux 数据安全/隐私保护
轻松复用你搭建好的环境和应用——镜像管理|学习笔记
快速学习 轻松复用你搭建好的环境和应用——镜像管理
137 0
轻松复用你搭建好的环境和应用——镜像管理|学习笔记
|
域名解析 弹性计算 运维
【视频】配置信息管理 的 使用方法(四):功能节点维护
用配置信息管理来功能节点的维护的演示。  
616 0
|
负载均衡 应用服务中间件 容器
阿里云容器服务新建集群优化方案(更新版)-使用控制台创建与ingress绑定的SLB
本文为之前博文 阿里云容器服务新建集群优化方案:https://yq.aliyun.com/articles/696136 的补充,使用控制台可以更快速的创建于 ingress 绑定的VPC 类型 SLB
1510 0
|
弹性计算 Kubernetes 应用服务中间件
阿里云容器服务新建集群优化方案
前言 选择阿里云的容器服务,主要原因是公司主要业务基本都运行在阿里云上。相较自建 kubernetes 集群,容器服务的优势在于部署相对简单,与阿里云 VPC 完美兼容,网络的配置相对简单,而如果使用 kubeadmin 安装部署 kubernetes 集群,除了众所周知的科学上网问题,还有一系列的问题,包括 etcd 、 scheduler 和 controller-manager 的高可用问题等。