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