目录

云原生一基础概念-容器-Kubernets

【云原生】一、基础概念-容器-Kubernets

文章目录

云原生

云原生历程

https://i-blog.csdnimg.cn/blog_migrate/ee7b70f0fbadb45897465b1863c258f3.png

云原生技术范畴

https://i-blog.csdnimg.cn/blog_migrate/1c52c95a5ae95dd5ecca18a5f5a410ef.png

云原生与传统部署

https://i-blog.csdnimg.cn/blog_migrate/ba428cf376eaf935fec7854e11f56cd4.png

云原生关键技术

https://i-blog.csdnimg.cn/blog_migrate/0eb4cfde208e5d52c70522ff06c2b157.png

传统vs微服务vsServerless

https://i-blog.csdnimg.cn/blog_migrate/7d242944df0d790d8d53f3401a8359ce.png

Serverless

https://i-blog.csdnimg.cn/blog_migrate/5624b6277b3e31d218561295cebf089a.png

容器

容器,是一个视图隔离、资源可限制、独立文件系统的进程集合,

视图隔离-如能看见部分进程;独立主机名 等等;

控制资源使用率:如2G内存大小: CPU 使用个数等等

分层复用模式

https://i-blog.csdnimg.cn/blog_migrate/c7208c78755f90b0a0bf29235d89c494.png

容器运行

https://i-blog.csdnimg.cn/blog_migrate/21a919778571a6efb3cb644969cf94c3.png

构建镜像

https://i-blog.csdnimg.cn/blog_migrate/5b9984f9139e7551a49163df0141f746.png

**## 容器生命周期

单进程模型**

  • Init 进程生命周期 = 容器生命周期
  • 运行期间可运行exec 执行运维操作

数据持久化

  • 独立于容器的生命周期
  • 数据卷 -docker volume vs bind

https://i-blog.csdnimg.cn/blog_migrate/40cbf82913db098de21a3909ba21e50e.png

容器引擎架构-moby

https://i-blog.csdnimg.cn/blog_migrate/4062b5d89a0cb2d4c5c3a618ad57c0a2.png

容器和VM之间的差异

https://i-blog.csdnimg.cn/blog_migrate/6726f2b25b1b8eaac61cd69235fb7339.png

Kubernetes

  • Kubernetes 源于希腊语,意为“舵手”或“飞行员
  • k8s 是通过将8个字母“Kubernete” 替换为8而导出的缩写
  • 工业级容器编排平台

https://i-blog.csdnimg.cn/blog_migrate/f80f3338b01b82ed8aadbdf2e433f264.png

调度

根据容器大小、计算资源、把容器分布到不同机器

https://i-blog.csdnimg.cn/blog_migrate/fbf3fa1b936e4d2d0c40ccfc29ce8cb7.png

自动恢复

机器故障,自动将容器分布到健康的机器上。

https://i-blog.csdnimg.cn/blog_migrate/918bcc6b4a332c1177f7dca5cfe862c6.png

水平伸缩

如果黄颜色业务忙碌,自动将黄颜色容器负载均衡到其他机器上。

https://i-blog.csdnimg.cn/blog_migrate/9e1412039c04147a079b5f13a7cfa4d8.png

总架构

https://i-blog.csdnimg.cn/blog_migrate/039628823811f5bd8e0034d488a5e0f1.png

Master架构

  • CLI控制端命令

  • API Server:所有组建与其建立连接,用于组建间的消息的传送

  • Controller:控制水平伸缩、恢复的功能

  • Scheduler:调度器,控制容器调度

  • etcd:资源管理存储

  • Node:节点

    https://i-blog.csdnimg.cn/blog_migrate/56d3347a6f73f924e33986f9a4b62ba5.png

Node架构

  • Node:包括多个Pod

  • Pod:运行一个或多个容器,最小的调度以及资源单元。由一个或者多个容器组成。定义容器运行的方式Command、环境变量等提供给容器共享的运行环境(网络、进程空间)

    https://i-blog.csdnimg.cn/blog_migrate/6f990bb83bce0df3575556c90a64e61a.png

Pod一个kubernet架构

https://i-blog.csdnimg.cn/blog_migrate/4c434431bd6378a03064fdfd6c101fbf.png

Volume

https://i-blog.csdnimg.cn/blog_migrate/686296574201f51dfe21577e812a6d39.png

Deployment

https://i-blog.csdnimg.cn/blog_migrate/a0bf402c99a13b3775493649e8186e95.png

Service

https://i-blog.csdnimg.cn/blog_migrate/559a4dc6f801a931aad93ce0c5b41978.png

Namespace

https://i-blog.csdnimg.cn/blog_migrate/2b0f234a053a2b6781e0e08ebab921b8.png

API

https://i-blog.csdnimg.cn/blog_migrate/c438c1f125012ad18a6687e5becadcd8.png

API-Label

https://i-blog.csdnimg.cn/blog_migrate/0c80e3912a2bfc3d9e990a2db6e6e9e7.png

实验

安装MinKube

https://i-blog.csdnimg.cn/blog_migrate/529bf3ffe3db98c23803b5cdcb74be22.png

部署命令

https://i-blog.csdnimg.cn/blog_migrate/a98b2734c92326596facb7076e8e5314.png

常用命令

# 查看状态
minikube status
# 获取node
kubectl get nodes
# 获取deployments
kubectl get deployments
# 实时查看deployments
kubectl get --watch deployments
# 根据deployment.yaml部署
kubectl apply -f deployment.yaml
# 查看已经部署
kubectl describe deployment nginx-deployment
# 删除
kubectl delete deployment nginx-deployment

deployments.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2 # tells deployment to run 2 pods matching the template
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80