1. k8s概述

Kubernetes(简称K8S) 是Google开源的分布式的容器管理平台,方便我们在服务器集群中管理我们容器化应用。

教程主要介绍怎么使用阿里云容器服务(kubernetes版本)。

2. k8s常用概念介绍

  • 节点 (Master node and Worker node)
    节点通常指的就是服务器,在k8s中有两种节点:管理节点(Master Node)和工作节点(Worker Node)
    管理节点(Master Node):负责管理整个k8s集群,一般由3个管理节点组成HA的架构。
    工作节点(Worker Node):主要负责运行容器。
  • 命名空间 (Namespace)
    k8s命名空间主要用于隔离集群资源、隔离容器等,为集群提供了一种虚拟隔离的策略;默认存在3个名字空间,分别是默认命名空间 default、系统命名空间 kube-system 和 kube-public。
  • Object
    k8s 对象(Object)是一种持久化存储并且用于表示集群状态的实体。k8s 对象其实就是k8s自己的配置协议,总之我们可以通过定义一个object让k8s根据object定义执行一些部署任务、监控任务等等。
  • POD
    Pod是 Kubernetes 部署应用或服务的最小的基本单位。一个Pod 封装多个应用容器(也可以只有一个容器)、存储资源、一个独立的网络 IP 以及管理控制容器运行方式的策略选项。
  • 副本集 (Replica Set,RS)
    是一种控制器,负责监控和维护集群中pod的副本(replicas)数,确保pod的副本数是我们期望的样子。
  • 部署 (Deployment)
    表示对k8s集群的一次更新操作,是k8s集群中最常用的Object,主要用于部署应用。支持滚动升级。
  • 服务 (service)
    是对应用的抽象,也是k8s中的基本操作单元,一个服务背后由多个pod支持,服务通过负载均衡策略将请求转发到容器中。
  • Ingress
    是一种网关服务,可以将k8s服务通过http协议暴露到外部。
  • 无状态应用 & 有状态应用

    • 无状态应用指的是应用在容器中运行时候不会在容器中持久化存储数据,应用容器可以随意创建、销毁;如果一个应用有多个容器实例,对于无状态应用,请求转发给任何一个容器实例都可以正确运行。例如:web应用
    • 有状态应用指的是应用在容器中运行时候需要稳定的持久化存储、稳定的网络标识、固定的pod启动和停止次序。例如:mysql数据库

3. k8s架构

通过上图可以看出k8s整体架构主要由左边的master节点和右边的worker组成,master节点负责对整个集群进行管理,右边的电脑表示worker节点负责运行我们部署的容器。

4. 基于k8s的常见web应用部署架构


从上往下看,ingress作为http请求入口接收客户端请求,ingress根据路由规则将请求转发给对应的服务,服务再根据负载均衡策略将请求转发给对应的容器实例,底层基础云服务由所有容器实例共享。

5. 部署应用

下面是通过阿里云容器服务后台以可视化的方式部署应用。

阿里云部署应用连接。

https://help.aliyun.com/document_detail/87784.html?spm=a2c4g.11186623.6.631.6ca67d26RVHzA4

6. 容器之间共享文件存储

在集群环境中,默认情况如果应用在容器A创建了一个文件,容器B无法读取这个文件。

在k8s中提供了持久卷(Persistent Volumes)解决持久化存储问题,持久卷将存储细节和存储数据访问分离,对于用户而言使用同统一的接口访问不同存储系统上的数据。

根据存储方式不同,k8s支持多种持久卷(Persistent Volumes)类型,阿里云也对k8s进行一些扩展支持,目前支持NAS、OSS、云盘三种持久卷类型。

下面是关于阿里云支持的持久卷类型的介绍:

  • NAS  - 阿里云高性能分布式文件系统,支持共享存储。
  • OSS  - 阿里云对象存储, 也是一个分布式文件系统,支持共享存储。
  • 云盘 - 阿里云云盘,不支持共享存储。

根据上面的介绍我们可以选择NAS或者OSS实现共享文件数据,OSS主要用于图片,视频存储场景可以支持文件直接对外提供访问服务,在容器共享文件数据,我们一般选择NAS, 下面是K8S使用NAS的教程:

https://help.aliyun.com/document_detail/88940.html?spm=a2c4g.11186623.6.680.18656b80CZtc9r

关于云盘,不能多个容器共享,每个POD独占自己的云盘实例,适合用于为部署有状态应用提供持久化存储,例如部署mysql, 将mysql数据保存到云盘中。

提示:无论使用何种持久卷类型,最终都是以挂载的方式,关联到容器中。 对用户来讲,最终看到的就是一个目录。

7. k8s配置管理

如果希望一个镜像(image)更具有通用性,与环境无关,那么应该将环境相关的配置参数从镜像中分离出来。

举个例子:

我们将一个web应用的代码打包到一个镜像中,如果web应用关于数据库的连接地址、帐号、密码也一同打包到镜像中,那么如果我们希望这个镜像换一个数据库配置信息怎么办? 只能重新打包镜像。

k8s为我们提供了两种配置管理的方式:configMap和secret。

他们都是键值对的形式,区别就是secret专门用于管理铭感信息配置,例如:密码。

无论使用那种方式管理配置,最终配置信息都需要注入到容器中。

目前有两种方式将配置信息注入到容器中:环境变量和挂载(mount)数据卷

  • 通过环境变量方式注入容器,容器中的程序只要通过读取环境变量值就可以获取配置信息。
  • 通过挂载数据卷的方式注入,一般都是挂载到某个目录,只要读取这个目录中的数据就可以获取配置信息。

下面是阿里云使用配置的例子:

首先是创建配置项:

接下来是配置注入到容器中,先看通过环境变量注入:

在阿里云后台新建应用或者编辑应用,都会出现下面的窗口

下面是通过挂载的方式注入配置信息:

同样是在新建应用或者编辑应用窗口中,设置数据卷。

阿里云后台操作详细说明连接:

https://help.aliyun.com/document_detail/86769.html?spm=a2c4g.11186623.6.671.667f142e1EUHo4

k8s入门教程的更多相关文章

  1. 反手来个K8S入门到跑路

    layout: post title: 反手来个K8S入门到跑路 category: linux date: 2019-06-09 tags: linux k8s 反手来个K8S入门到跑路 前言 放假 ...

  2. k8s入门你至少需要会哪些

    body { margin: 0; overflow: auto; font: normal 14px Verdana; background: rgba(255, 255, 255, 1); pad ...

  3. k8s入门之集群搭建(二)

    一.准备三台节点 从上篇文章 k8s入门之基础环境准备(一)安装的Ubuntu虚拟机克隆出三台虚拟机,如图所示 启动这三台虚拟机节点,分别做如下配置 虚拟机名称 IP HostName k8sMast ...

  4. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  5. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

  6. wepack+sass+vue 入门教程(一)

    一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...

  7. Content Security Policy 入门教程

    阮一峰文章:Content Security Policy 入门教程

  8. gulp详细入门教程

    本文链接:http://www.ydcss.com/archives/18 gulp详细入门教程 简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优 ...

  9. UE4新手引导入门教程

    请大家去这个地址下载:file:///D:/UE4%20Doc/虚幻4新手引导入门教程.pdf

随机推荐

  1. kali Linux 入门(二)

    九.软件安装 1.apt install --软件名称-- -y 2.apt install packge_name----库安装 3.apt install kali-linux-all -y--- ...

  2. bzoj5178 [Jsoi2011]棒棒糖 主席树+线段树二分

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5178 https://lydsy.com/JudgeOnline/problem.php?id ...

  3. 解决 pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' ([Errno 61] Conne

    pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' ([Errno 61] ...

  4. go入门收集(转)

    go mod 使用 原文地址: https://juejin.im/post/5c8e503a6fb9a070d878184a  

  5. Selenium-三种等待方式

    在UI自动化测试中,必然会遇到环境不稳定,网络慢的情况,这时如果不做任何处理的话,代码会由于没有找到元素而报错.这时我们就要用到wait,而在Selenium中,我们可以用到一共三种等待,每一种等待都 ...

  6. 5G即将到来!我们需要一部怎样的手机呢?

    随着5G技术研发试验即将于年底宣告完成,也就意味着2019年起,5G商用将会宣布启动,现在OPPO.vivo.小米.华为.一加等众多手机厂商也宣布启动5G计划,这时5G势必会掀起一股新鲜的血液,5G手 ...

  7. python内建模块——collections模块

    在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict.namedtuple和Ord ...

  8. asp.net大文件断点续传

    以ASP.NET Core WebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API ,包括文件的上传和下载. 准备文件上传的API #region 文件上传  ...

  9. luogu P1307 数字反转 x

    题目描述 给定一个整数,请将该数各个位上数字反转得到一个新数.新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2). 输入输出格式 输入格式: 输入 ...

  10. Apache服务器出现Forbidden 403错误提示的解决方法

    默认web目录/var/www/html 改成 /data/www出现403问题解决: vim /etc/apache2/apache2.conf <Directory /data/www/&g ...