K8s相关知识点

一、介绍

1.1 k8s概述、特性

概述:

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

1.2 k8s架构组件

  • 主控节点 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 基本命令

kubetual [command] [TYPES] [NAME] [FLAGES] 

// kubetual get nodes k8snode1


// 创建一个 pod 步骤
// 1、导出ymal 文件
kubetual  create [name] web --image= [镜像名字] --dry-run  -o > web.ymal

// 2、使用ymal 创建pod
kubetual apply  -f  web.yaml

// 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资源限制

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

2.6 容器健康检查

   livenessProbe:
      failureThreshold: 5
      httpGet:    // 通过HTTP 进行检查
        path: /app-health/abs-service-biz/livez
        port: 15020
        scheme: HTTP
      initialDelaySeconds: 100
      periodSeconds: 10
      successThreshold: 1
      timeoutSeconds: 1

2.7 pod的创建过程

**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、创建nfs服务端
2、ndoe节点创建 nfs
3、目录进行挂载
4、设置node 对应的nfs服务端的信息(弊端)

八、高可用k8s


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

九、容器交付流程

实际交付 java项目

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

猜你喜欢

转载自blog.csdn.net/weixin_43732955/article/details/120576113