云原生学习——容器的基本概念和Kubernetes 核心概念

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

https://developer.aliyun.com/learning/course/572/detail/7786

什么是容器(Container)

什么是镜像(docker)

分层和复用

运行后名称为 demo进程是top命令

二、容器的生命周期


数据卷是一个特殊的目录

四、容器 VS VM


虚拟机

一、什么是 Kubernetes


二、Kubernetes 有如下几个核心的功能


三、Kubernetes 的架构


水平扩张负载

热备从广义上讲就是服务器高可用应用的另一种说法可写可读之类。

四、Kubernetes 的核心概念与它的 API


五、以一个 demo 结尾


最后一部分我想以一个例子来结束让大家跟我一起来尝试一个 kubernetes在尝试 Kubernetes 之前我希望大家能在本机上安装一下 Kubernetes安装一个 Kubernetes 沙箱环境。

安装这个沙箱环境主要有三个步骤

  • 首先需要安装一个虚拟机来在虚拟机中启动 Kubernetes。我们会推荐大家利用 virtualbox 来作为虚拟机的运行环境

安装 VirtualBox https://www.virtualbox.org/wiki/Downloads

  • 其次我们需要在虚拟机中启动 KubernetesKubernetes 有一个非常有意思的项目叫 minikube也就是启动一个最小的 local 的 Kubernetes 的一个环境。

minikube 我们推荐使用下面写到的阿里云的版本它和官方 minikube 的主要区别就是把 minikube 中所需要的 Google 上的依赖换成国内访问比较快的一些镜像这样就方便了大家的安装工作

安装 MiniKube中国版: https://yq.aliyun.com/articles/221687

  • 最后在安装完 virtualbox 和 minikube 之后大家可以对 minikube 进行启动也就是下面这个命令。

启动命令minikube start —vm-driver virtualbox

如果大家不是 Mac 系统其他操作系统请访问下面这个链接查看其它操作系统如何安装 minikube 沙箱环境。

https://kubernetes.io/docs/tasks/tools/install-minikube/

当大家安装好之后我会跟大家一起做一个例子来做三件事情

  1. 提交一个 nginx deployment

kubectl apply -f https://k8s.io/examples/application/deployment.yaml

  1. 升级 nginx deployment

kubectl apply -f https://k8s.io/examples/application/deployment-update.yaml

  1. 扩容 nginx deployment。

kubectl apply -f https://k8s.io/examples/application/deployment-scale.yaml

第一步我们提交一个 nginx 的 Deployment然后对这个 Deployment 进行一次版本升级也就是改变它中间 Pod 的版本。最后我们也会尝试对 nginx 进行一次扩容进行一次水平的伸缩下面就让大家一起跟我来尝试这三个操作吧。

首先我们先看一下 minikube 的 status可以看到 kubelet master 和 kubectl 都是配置好的。

下一步我们利用 kubectl 来看一下这个集群中节选的状态可以看到这个master 的节点已经是running状态

我们就以这个为节点下面我们尝试去看一下现在集群中 Deployment 这个资源

可以看到集群中没有任何的 Deployment我们可以利用 watch 这个语义去看集群中 Deployment 这个资源的变化情况。

下面我们去做刚才想要的三个操作第一个操作是去创建一个 Deployment。可以看到下面第一个图这是一个 API 的 content它的 kind 是 Deploymentname 是 nginx-deployment, 有图中它的 replicas 数目是2它的镜像版本是 1.7.9。

我们下面还是回到 kubectl 这个 commnd 来执行这次 Deployment 的真正的操作。我们可以看到一个简单的操作就会去让 Deployment 不停地生成副本。

Deployment 副本数目是 2 个下面也可以 describe 一下现在的 Deployment 的状态。我们知道之前是没有这个 Deployment 的现在我们去 describe 这个 nginx-deployment。

下图中可以看到有一个 nginx-deployment 已经被生成了它的 replicas 数目也是我们想要的、selector 也是我们想要的、它的 image 的版本也是 1.7.9。还可以看到里面的 deployment-controller 这种版本控制器也是在管理它的生成。

下面我们去升级这个 Deployment 版本首先下载另外一个 yaml 文件 deployment-update.yaml可以看到这里面的 image 本身的版本号从 1.7.9 升级到 1.8。

接下来我们重新 apply 新的 deployment-update 这个 yaml 文件。

可以看到在另一边的屏幕上显示出了这个 Deployment 升级的一些操作最终它的 up-to-date 值从 0 变成了 2也就是说所有的容器都是最新版本的所有的 Pod 都是最新版本的。我们也可以 discribe 具体去看一下是不是所有 Pod 的版本都被更新了可以看到这个 image 的版本由 1.7.9 真正更新到了 1.8。

最后我们也可以看到 controller 又执行了几次新的操作这个控制器维护了整个 Deployment 和 Pod 状态。

最后我们演示一下给 Deployment 做水平扩张下载另一个 yaml 文件 deployment-scale.yaml这里面的 replicas 数目已经从 2 改成了 4。

回到最开始的窗口用 kubectl 去 apply 这个新的 deployment-scale.yaml 文件在另外一个窗口上可以看到当我们执行了 deployment-scale 操作之后它的容器 Pod 数目从 2 变成了 4。我们可以再一次 describ 一下当前集群中的 deployment 的情况可以看到它的 replicas 的数目从 2 变到了 4同时也可以看到 controller 又做了几次新的操作这个 scale up 成功了。

最后让我们利用 delete 操作把我们刚才生成的 Deployment 给删除掉。kubectl delete deployment也是刚才我们本身的 deployment name当我们把它删除掉之后我们今天所有的操作就完成了。

我们再去重新 get 这个 Deployment也会显示这个资源不再存在这个集群又回到了最开始干净的状态。

以上这就是这堂课中所有的内容了我们关注了 kubernetes 的核心概念以及 kubernetes 的架构设计希望大家能在这节课中有所收获也希望大家能关注云原生技术课堂中的其他内容谢谢大家的观看

本节总结


  • Kubernetes 是一个自动化的容器编排平台它负责应用的部署、应用的弹性以及应用的管理这些都是基于容器的

  • Kubernetes 架构是一个比较典型的二层架构和 server-client 架构

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: k8s