Kubernate_K8S_Rancher
2023-12-25 10:54:43 0 举报
AI智能生成
Kubernate及Rancher知识
作者其他创作
大纲/内容
可扩展
Grafana
N9E的DataSourc:https://github.com/n9e/grafana-n9e-datasource
用户资源中心
人员权限
资源
主机设备
网络设备
redis实例
普通用户和超级管理用户
普通视角
超管视角
管理用户
邀请注册
角色管理
页面角色
资源角色
页面角色和全局角色的区分:第7分钟 https://www.bilibili.com/video/BV14V41127hw/?spm_id_from=333.788.recommend_more_video.2
团队管理
树节点管理
组织资源树
视频11分钟: https://www.bilibili.com/video/BV14V41127hw/?spm_id_from=333.788.recommend_more_video.2
最为核心的部分
租户
成本结算中心
节点的类别只有在超管视角中“树节点管理”创建
地位:平台的底座
用户
权限
角色
组织
资源
资产管理系统
和agent相关
硬件设备
和租户相关
任务执行中心
机器上有语言解析器
shell
python
脚本模板(是否可以作为创建租户实例的方式?)
可以看做是一个命令通道,后续可以基于这个命令通道构建一些场景化应用,比如机器初始化平台、服务变更发布平台、配置分发系统等
API 对外暴露
对于运行Helm部署条件
安装Kubectl
安装Helm3
创建任务模板
自动化部署工具 ansible
监控告警系统
报警策略
标签过滤
触发条件
平台底座,所有的运维系统,都需要依赖这个,内置用户、权限、角色、组织、资源的管理
偏硬件资产的管理,开源版本开放了一个主机设备的管理。agent安装之后,会自动注册到资产管理系统,自动采集到机器的sn、ip、cpu、mem、disk等信息。
非常好的文档: https://www.yuque.com/ictc/n9e/gniqvo
可用部分梳理
使用任务执行中心实现BF实例的部署
创建不同的任务模板实现APP服务的安装
超级管理员实现对普通管理员账号的重置
监控告警可复用
触发条件
各种通知方法
将Redis实例当作资源管理的方式
https://www.bilibili.com/video/BV1Ut4y1v74p
第11:37分钟开始讲解
在夜莺界面用户登陆
超级管理员
创建租户实例
使用namespace隔离
创建域名
生成Helm配置
生成APP列表入口关联到不同的用户
查看租户实例
列出所有租户实例
监控平台资源
集成普罗米修斯
集成Grafanna
告警通知
租户管理员
管理用户
进入应用
查看租户资源
普通用户
进入应用
ChildTopic
单点登陆
Docker Image
Docker Compose
Docker Swarm
K8S
kubectl
K8S最常用工具
对Kubernetes API执行HTTP请求
Helm
Helm chart
采用create 语句创建
具有固定的文件夹结构
用户只需要一行简单的命令就可以完成应用的安装、卸载与升级
封装好的应用包,集中存放在统一的仓库中供用户浏览下载
k8s的应用包管理工具
区分Helm与yaml的关系
一个Helm应用包生命周期
1.创建一个Docker Image
2.上传到仓库中
3.创建 Helm chart
chart索引
template
deployment
service
4.将chart放入Helm仓库
自建仓库 chart museum
开放的仓库 Cloud Native APP Hub
5.安装应用: helm install tomcat
6.得到服务的外部访问地址
https://www.cnblogs.com/xiao987334176/p/12753979.html
https://www.yuque.com/kylinxiang/dtthu6/me73r2
Kubernetes API
一切皆资源
Pod (容器载体)
状态
Pending
Running
Failed
Unknown
K8S通过Pod管理容器
有独立的IP
service可能有一个或者是多个pod组成
Service
用来解决Pod销毁IP消失的问题
K8S的反向代理:是K8S中Pod对外提供服务的门户 具体实现方式:
POD打标签
Service配置selector
rc
自动部署一个容器应用的多份副本
持续监控保证一定量的副本
Job
定义一个批处理任务
Node
物理主机
虚拟主机
configMap
标签
资源可通过标签来管理
nameSpace
组织各种对象,实现用户分组
Docker看成Kubernetes内部使用的低级别组件
内置域名解析服务DNS
Racher
多集群管理模式
需要工作在K8S引擎之上
K8S的图形化操作界面,更简便
具有APP store
自定义商店:
使用gitHub创建应用商店:
和GitLab集成
文档:https://www.rancher.cn/
提供强大的权限管理
Active Directory
LDAP
GitHub
层级关系
集群
项目
命名空间
监控告警
规则引擎
邮件通知
最优的介绍
K8S的过人之处
实现自我修复
物理机宕机
自动寻求新的Node来部署原有的Pod
容器挂掉
弹性伸缩
根据服务请求数量增减容器个数
自动部署
自动回滚
负载均衡
机密配置管理
节点分类
Master Node
ApiServer
Scheduler
controller
etcd数据库
记录每个Node、服务、Ip等信息
Worker Node
Kubelet
kube-proxy
管理容器的的IP
一个完整的创建调度流程 8:20开始:
最核心概念
Pod
Controller
控制Pod的启动停止等活动
Service
是Node对外的口岸,登记并更新内部所有pod的内部IP
Label
用于对象资源的查询、关联、筛选
nameSpace
将对象进行逻辑上的隔离
对应视频: https://www.bilibili.com/video/BV1Uk4y1q7vj?p=3
生产环境中的要求
Master 至少3个 且奇数个
可以先部署成单Master,后升级为多Master
集群至少6台
8核16G内存
etcd至少三个
worker 越多越好
16核64G内存
视频教程: https://www.bilibili.com/video/BV1Uk4y1q7vj?p=5&t=222
K8S搭建方式
KubeAdm
二进制方式
Helm
包管理器
apt
pip
yum
helm客户端
Tiller 服务器
chart打包格式
描述k8s集群资源
https://www.yuque.com/ictc/n9e/gv5b1g
部署步骤
搭建DNS服务器
实现局域网中域名解析
所有访问导向域名服务器
登录夜莺平台
创建租户实例
使用任务中心运行部署脚本
ChildTopic
实现域名和租户实例的绑定
用户根据域名访问租户空间
登录并进入租户应用
租户内实现单点登录
如何实现新应用中页面访问权限的增加
单独部署UAA,供各个用户共用
租户实例内可将部分信息发布到夜莺平台的日志管理中,通过预留的MQTT接口
K8S的本质:Kubernetes是一个完全以资源为中心的系统。这意味着,Kubernetes保持内部资源状态,所有Kubernetes操作都是对这些资源的CRUD操作。您可以通过操纵这些资源来完全控制Kubernetes
多租户实现技术
独立数据库
共享数据库,独立Schema
共享数据库、共享Schema、共享数据表
搭建K8S
1.安装Linux操作系统
2.关闭系统防火墙
3.安装etcd和K8S(自动安装Docker)
4.修改配置文件
Docker配置文件
K8S配置文件
5.启动所有服务
systemctl start etcd
systemctl start docker
systemctl start kube-apiserver
systemctl start kube-controller-manager
systemctl start kube-scheduler
systemctl start kubelet
systemctl start kube-proxy
至此单机版K8S集群环境安装完毕
6.创建服务
创建RC定义文件:mysql-rc.yaml
发布到k8s集群中 : kubectl create -f mysql-rc.yaml
7.创建Web服务
创建myweb-rc.yaml
副本控制器
创建myweb-svc.yaml
服务Service
发布到集群:kubectl create -f myweb-svc.yaml
发布到集群: kubectl create -f myweb-rc.yaml
8.查看
查看创建的RC: kubectl get rc
查看创建的pod: kubectl get pod
K8S操作命令
kubectl
get
all 查看缺省名字空间下所有在运行的资源
namespace / ns 查看所有namespace
包含缺省的default空间中
configmap/cm
delete
pod
svc / service
ChildTopic
exec -it
查看
apply
-f xx.yml
logs
id
k8s内置了kube-dns,任意Pod对服务的访问(通过服务名),都会经过kube-dns解析成clusterIP进行访问,该dns住在sysem名字空间下
k8s中的核心概念
nameSpace
https://www.bilibili.com/video/BV1Ja4y1x748?p=10
kube-dns
configMap
https://www.bilibili.com/video/BV1Ja4y1x748?p=11
存在理由: 微服务需要可变配置
分类
以环境变量的方式注入到Pod中
ChildTopic
原理:将微服务共享的配置定义再ConfigMap中,通过发布注入Pod中
实际操作: 在Pod的发布文件中添加字段:configMapRef来指定 对应的ConfigMap
ChildTopic
我们假设有个住户社区,k8s就相当于这个社区的大房东,社区里面有一栋一栋的大楼,大楼可以看做虚拟机器,俗称的VM,大楼里面有很多的住户,每个住户就代表一个pod,那每个住户如何找到他们的位置呢?每个住户如何找到他们的位置就是通过门牌号,我们就理解为IP的位置,在每个住户里面有非常多的家庭成员,爸爸,妈妈,兄弟姐妹,爷爷奶奶,姥爷姥姥,女儿儿子,这些角色就可以理解为container,在这个pod里面的成员,就共享了这个房间里面的资源,水电网络,那些资源就可以把它理解成计算资源,cpu,内存,硬盘。对于大房东k8s,他最主要的功能就是管理,每个住户Pod使用多少资源,那为了就是让整栋大楼,会更有效率的使用很多资源,举例来说:A栋大楼住了太多的住户,太多的Pod,他们直接肯定会相互竞争资源的问题,那它就可以协调某一些pod,就是某一些住户搬到B大楼去,这样会让变得更加的均衡使用。
使用Kubernetes只需一个部署文件,使用一条命令就可以部署多层容器(前端,后台等)的完整集群$ kubectl create -f single-config-file.yaml
一切资源皆可通过YAML发布
Pod
kind: pod
spec: 容器镜像
通过Pod-forward可访问Pod
app: petClinic
Service
主要实现反向路由和负载均衡,多种类型的Service
Node Port类型的Service
selector
app: petClinic
type : NodePort
LoaderBalance类型的Service
将公有云上的对外暴露?
ClusteIP 类型的Service
实现内部微服务之间的通信
ChildTopic
ChildTopic
Helm
Chart
满足k8s声明式
通过Value实现实现release
通过不同的value实现不同的Release
templates
k8s所需所有资源的声明方式
Service
deployment
configMap
模板中可使用{{}} 管道操作符使用value中参数
还支持很多的函数: https://www.bilibili.com/video/BV1TD4y1X7gi
value
value.yaml
所有的配置项
所有的参数
子Chart
实现应用和其依赖的数据库
release
升级
回退
ChildTopic
安装
Helm install
指定chart名称
指定 Release 名称
指定参数文件
Docker
关键的docker命令
docker build
使用docker file 生成镜像
docker run
创建一个新的容器并运行一个命令
查看
docker image ls
docker container ls
docker ps
删除
docker rmi
docker rm container
0 条评论
下一页