一、介绍
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