概述:
Prod : 是最小的部署单元,这是一组容器的集合,并且一个prod中是共享网络的 ,生命周期是短暂的。
controller: 确保预期pod副本的数量
service: 定义一组prod的访问规则。
1.通过kubadm的方式
2.通过二进制的方式
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、对外发布
pod存在的意义:
容器是使用docker创建,一个docker一个进程;pod是一个多进程的设计,里面可以允许多个docker容器;
为了亲密性应用而存在(两个应用间进行交互,网络之间的调用)
在同一个namespace下;在创建pod的时候会创建一个 pause 容器(info 容器,根容器),他们会在同一个命名空间下,把业务容器加入 到该容器当中;
共享存储:引入数据卷的概念volumn ,使用数据卷存储,持久化数据。
resources:
limits:
cpu: "4"
memory: 4G // 调度 node 的设置
requests:
cpu: 500m
memory: 4G // 最大设置
restartPolicy: Always // 容器退出时 是否重启容器
/**
* Always 总是重启容器
* on failure
* never
/
livenessProbe:
failureThreshold: 5
httpGet: // 通过HTTP 进行检查
path: /app-health/abs-service-biz/livez
port: 15020
scheme: HTTP
initialDelaySeconds: 100
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
**master 节点**
API Server 创建一个 pod在etcd 中
然后sheduler 进行监听绑定 根据调度算法 把 pod 调度到某个node 当中
Node节点
kublet 通过api- server 拿到当前节点 分配给pod ,然后docker创建容器
影响调度的属性:
在集群上管理和运行容器的一个镜像;pod和controller 通过label标签建立关系;容器的伸缩、回滚
delpment 可以用来部署无状态应用
pod与service的关系通过 lable标签建立联系;
clusterIp :集群内部使用;
NodePort: 对外访问应用使用;
LoadBalancer:对外访问应用使用,公有云;
访问k8s集群的时候,需要经过3个步骤完成操作:
1、认证
常见的方式: https、http的token认证、用户名+密码
2、授权
基于RBAC的一个访问控制
3、准入
就是准入控制器的列表;
统一的入口,经过ip控制;也就是一个controller
helm是k8s里面的包管理工具; Helm 有 3 个重要概念:
(1)helm:一个命令行客户端工具,主要用于 Kubernetes 应用 chart 的创建、打包、发布和管理。
(2)Chart:应用描述,一系列用于描述 k8s 资源相关文件的集合。
(3)Release:基于 Chart 的部署实体,一个 chart 被 Helm 运行后将会生成对应的一个 release;将在 k8s 中创建出真实运行的资源对象。
创建nfs 网络数据存储。把k8s内部的数据 挂载出去;
1、创建nfs服务端
2、ndoe节点创建 nfs
3、目录进行挂载
4、设置node 对应的nfs服务端的信息(弊端)
通过一个 loanbalance 的虚拟机ip来进行 主节点的负载均衡;
使用kubeadm搭建高可用的K8s集群.md
使用kubeadm快速部署一个K8s集群.md
kubernetes(k8s)课程.pdf