K8s相关知识点

柔光的暖阳◎ 2022-09-14 06:26 379阅读 0赞

一、介绍

1.1 k8s概述、特性

概述:

  • 是谷歌在2014开源的一个容器化管理系统
  • 使k8s进行容器化部署
  • 使用ks8利用应用扩展
  • k8s的目标实施让部署容器化应用更加简洁和高效
    特性:
  • 水平扩展、服务发现、滚动更新、版本回退、自动恢复、密钥配置和管理

1.2 k8s架构组件

405cfb257aae2dd630533633552fb530.png_id_aHr7X_originHeight_942_originWidth_1584_originalType_binary_ratio_1_status_done_style_none

  • 主控节点 K8s Master

    • api server 集群统一接口
    • scheduler 节点调度,选择node进行应用部署
    • controller-manager 处理集群中常规定时任务,一个资源对应一个定时任务
    • etcd 存储,保持状态数据
  • 工作节点 k8s node

    • kubelet master派到node的节点代表,管理本机容器。
    • kub-proxy 提供网络代理,提供例如负载均衡的操作

1.3 k8s核心概念

Prod : 是最小的部署单元,这是一组容器的集合,并且一个prod中是共享网络的 ,生命周期是短暂的。
controller: 确保预期pod副本的数量
service: 定义一组prod的访问规则。

1.4 搭建集群的两种方式

1.通过kubadm的方式
2.通过二进制的方式

二、核心知识点-pod

2.1 kubetual 基本命令

  1. kubetual [command] [TYPES] [NAME] [FLAGES]
  2. // kubetual get nodes k8snode1
  3. // 创建一个 pod 步骤
  4. // 1、导出ymal 文件
  5. kubetual create [name] web --image= [镜像名字] --dry-run -o > web.ymal
  6. // 2、使用ymal 创建pod
  7. kubetual apply -f web.yaml
  8. // 3、对外发布

2.2 Pod

  • pod是 k8s创建和管理的最小单元,是资源对象模型中由用户创建和部署的最小资源对象模型;
  • 一个pod由多个容器组成;
  • 一个pod中容器的网络是共享的

pod存在的意义:
容器是使用docker创建,一个docker一个进程;pod是一个多进程的设计,里面可以允许多个docker容器;
为了亲密性应用而存在(两个应用间进行交互,网络之间的调用)

2.3 pod共享网络

在同一个namespace下;在创建pod的时候会创建一个 pause 容器(info 容器,根容器),他们会在同一个命名空间下,把业务容器加入 到该容器当中;

2.4 共享存储

共享存储:引入数据卷的概念volumn ,使用数据卷存储,持久化数据。

2.5 pod资源限制

  1. resources:
  2. limits:
  3. cpu: "4"
  4. memory: 4G // 调度 node 的设置
  5. requests:
  6. cpu: 500m
  7. memory: 4G // 最大设置
  8. restartPolicy: Always // 容器退出时 是否重启容器
  9. /** * Always 总是重启容器 * on failure * never /

2.6 容器健康检查

  1. livenessProbe:
  2. failureThreshold: 5
  3. httpGet: // 通过HTTP 进行检查
  4. path: /app-health/abs-service-biz/livez
  5. port: 15020
  6. scheme: HTTP
  7. initialDelaySeconds: 100
  8. periodSeconds: 10
  9. successThreshold: 1
  10. timeoutSeconds: 1

2.7 pod的创建过程

  1. **master 节点**
  • API Server 创建一个 pod在etcd 中
  • 然后sheduler 进行监听绑定 根据调度算法 把 pod 调度到某个node 当中

    Node节点

  • kublet 通过api- server 拿到当前节点 分配给pod ,然后docker创建容器

2.8 pod 调度

影响调度的属性:

  • 1、pod的资源限制对pod调度产生影响 reuqest中配置的 节点资源限制
  • 2、节点选择器标签
  • 3、节点亲和性
  • 4、污点 污点容忍

三、核心知识点-controller

在集群上管理和运行容器的一个镜像;pod和controller 通过label标签建立关系;容器的伸缩、回滚
delpment 可以用来部署无状态应用

四、核心知识点-service

  • 定义一组pod的访问规则 (负载均衡规则,通过service访问到pod)
  • 防止pod失联(pod的注册和发现)

pod与service的关系通过 lable标签建立联系;

4.1 service的常见类型

clusterIp :集群内部使用;
NodePort: 对外访问应用使用;
LoadBalancer:对外访问应用使用,公有云;

五、k8s集群的安全机制

访问k8s集群的时候,需要经过3个步骤完成操作:
1、认证
常见的方式: https、http的token认证、用户名+密码
2、授权
基于RBAC的一个访问控制
3、准入
就是准入控制器的列表;

5.1 ingress 访问

统一的入口,经过ip控制;也就是一个controller

六、k8s核心技术——helm

helm是k8s里面的包管理工具; Helm 有 3 个重要概念:
(1)helm:一个命令行客户端工具,主要用于 Kubernetes 应用 chart 的创建、打包、发布和管理。
(2)Chart:应用描述,一系列用于描述 k8s 资源相关文件的集合。
(3)Release:基于 Chart 的部署实体,一个 chart 被 Helm 运行后将会生成对应的一个 release;将在 k8s 中创建出真实运行的资源对象。

七、k8s持久化存储技术

创建nfs 网络数据存储。把k8s内部的数据 挂载出去;

  1. 1、创建nfs服务端
  2. 2ndoe节点创建 nfs
  3. 3、目录进行挂载
  4. 4、设置node 对应的nfs服务端的信息(弊端)

八、高可用k8s

6f9789aad25b20910d05a5e7215d0e4f.png_id_HvG6Z_originHeight_992_originWidth_1158_originalType_binary_ratio_1_status_done_style_none
通过一个 loanbalance 的虚拟机ip来进行 主节点的负载均衡;

九、容器交付流程

0c18c920a33a9f69842da506f892598c.png_id_XobSi_originHeight_780_originWidth_1382_originalType_binary_ratio_1_status_done_style_none

实际交付 java项目

39faed2276711fdc46dd722ef61cffd7.png_id_CeTVZ_originHeight_1494_originWidth_1356_originalType_binary_ratio_1_status_done_style_none

使用kubeadm搭建高可用的K8s集群.md
使用kubeadm快速部署一个K8s集群.md
kubernetes(k8s)课程.pdf

发表评论

表情:
评论列表 (有 0 条评论,379人围观)

还没有评论,来说两句吧...

相关阅读

    相关 K8s入门-相关名词

    一、Pod Pod是所有业务类型的基础,也是K8S管理的最小单位级,它是一个或多个容器的组合。 Pod 的context可以理解成多个linux命名空间的联合

    相关 k8s相关

    > 一、k8s是什么?请说出你的了解? Kubenetes是一个针对容器应用,进行`自动部署`,`弹性伸缩`和`管理`的开源系统。主要功能是生产环境中的`容器编排`。