名词 | |
---|---|
安全组 | 类似于防火墙的设置,打开安全组,但要防止被当成矿机,需要设置主机的容器密码 |
VPC | 专有网络,私有网络:VPC虽然网段相同:但资源物理层隔离,不能使用内网相互通 |
Ipv4网段 | |
子网计数器 | |
容器平台跨云多集群统一管理 | 青云KubeSphere平台 |
高可用性 N个9 | 99.999....% |
限制源 | 限制入方向端口 |
EOF | 在操作系统中表示资料源无更多的资料可读取 |
\命令\命令 | 命令长时,分隔符 |
中间件 | 存储分布式多实例有状态的数据 |
版本slim | Linux版 |
多层镜像 | Dockerfile 的指令每执行一次都会在 docker 上新建一层。所以过多无意义的层,会造成镜像膨胀过大。&& 符号连接命令多条Run指令 |
匿名卷 | 在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。 |
exec函数 | |
金丝雀(Canary)灰度部署 | |
组内互信 | 不受防火墙影响 |
22端口 | |
交换分区Swapp | |
K8s网络calico | |
UI面包屑 | |
pod netwrk cidr pod网络范围域 | 集群中任意机器以及任意应用可以通过IP访问,外部不能访问 |
域名工具 utools | |
路径重写Rewrite | |
| 短竖线 大文本 redis.conf:| |
|
存储层管理数据文件 | Glusterfs 、NFS、 CephFS |
Mysql Workbench | |
Prometheus | (普罗米修斯)监控 |
lowcode低代码 | |
内网代码管理平台 | |
Blue Ocean | |
Linux三剑客之awk命令详解 | |
Groovy沙盒 SCM |
公有云 | 私有云 | 混合云 |
---|---|---|
第三方购买公共服务 | 硬件自己搭载 |
命令
tee
//----显示程序的输出并将其复制到一个文件中。
reboot
//----用来重新启动计算机。
scp [option] [原路径] [角色@IP:目标路径]
//----将文件从本地系统复制到远程节点;或将文件从远程系统复制到本地系统。
wget
下载
curl
发送web请求
Telnet
远程连接指令
Watch -n 1 kubectl get pod
每隔几秒执行此指令
nohup
后台启动Java 程序,在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中
环境准备:
注意:
不同进程指令制作为“镜像”,Docker的每个软件包称为“镜像”,用统一Docker指令操作。
虚拟化技术 | 容器化技术 | |||
---|---|---|---|---|
GB级别虚拟机隔离强, | MB级别隔离 |
K8S在Docker容器基上封装为 pod (Pod是运行的一组容器) 有的pod里一组容器,有的pod里一个容器类似于员工宿舍 |
||
移植不方便带上其他环境,环境的同步 | 基于OS差异化环境,其他软件OS已经存在。 携带与OS差异的部分 |
|||
不同的指令 | 统一化的指令 Dockerhub会告诉你上传镜像的指令 |
|||
Docker的主机叫Docker主机,Docker客户端 | ||||
下载到本地 | 安装包 | 镜像 | 资源对象(Yaml或指令行) | |
运行的实例 | 进程 | 容器(端口不冲突可多实例运行) | Pod | |
远程仓库 | DockerHub Harbor(私有) |
Helm | ||
配置资源放置中间件 | JenkinsFile | |||
重量级,启动慢 | 资源控制、多沙箱root、网络隔离 | |||
大主机 | 小主机 | |||
公网 -> 大Linux:端口 -> 小Docker: 端口 | ||||
1、映射挂载 2、容器命令台操作 |
环境准备:
镜像下载
docker pull
//----默认下载最新latest版
docker pull
//----下载指定版本
镜像删除
//----删除默认删除latest最新版
//----rmi 指定 镜像唯一ID
查看主机已下载镜像
docker images
docker ps
//----查看主机运行的容器进程
//----注意:如果有容器没有在后台运行,则会阻塞Docker Ps指令
docker run -help
//----显示如何运行容器
Docker run [Options] IMAGE [COMMAND] [ARG。。。]
//----docker run <--name=容器名> <-d:后台运行> <模糊镜像名>
//----docker run <--name=***命名> <-d后台运行 > <--restrt=always开启自动启动> <-p 85:80端口映射>
使用 docker ps -a 可以看见
//----rmi删除镜像 rm删除容器/id
rm 容器-f
//----删除rm容器,后模糊删除 不需要通配符
//----rm删除id也可以模糊
docker start
//----开启容器
docker stop
//----停止容器/id
docker update
//---- docker 部分参数如果没有加入
Docker exec -it <容器名>
//---- 进入容器命令行界面:/bin/bash 或 /bin/sh,app的功能路径在Hub商城描述
docker logs
//----显示容器的运行日志,可以排错
docker logs -f
//----跟踪日志:如果日志不够把Java程序日志调高
构建指令
docker commit --help
docker commit -a "xxxx" -m
//----以当前配置从容器创建一个新的镜像
docker build
//----配合 Dockerfile 文件创建镜像
镜像传输(离线安装)
docker save -o
//----将镜像保存称tar包
docker load -i
//----解压镜像tar包
远程仓库(在线安装:DockerHub需要登陆)
docker login
//----需要登录
docker logout
//----退出
docker tag
//----修改为仓库需要的新版名。本地镜像打标签 新的仓库名:版本号
docker push
//----新的标签标识
docker pull
//----公有不需要登录hub提示的标签名
挂载(映射思想)
docker run <-v挂载路径>
//----公有不需要登录hub提示的标签名挂载写卷或挂载只读卷,将外部文件写入容器路径,外部不同可以启动多份
docker run -v 外部主机:内部容器
//----公有不需要登录hub提示的标签名反向写挂载:由外挂内,首启动读取内部容器配置文件
docker cp <容器:容器路径> <主机挂载路径>
//----如果挂载路径是空的,访问也是空的。可以提前将容器内部路径下文件copy到挂载路径上;docker会寻找映射的文件,否则报错
DockerFile
FROM 基础镜像
LABEL key=value作者
COPY target/*.jra容器 /app.jar外部机器根
EntryPoint或CMD ["java","-jar","外部机器根的jar包"] 启动时的指令或指定要制行的sh脚本
docker build -t(tag) <镜像名:版本> -f <**Dockerfil(如果同名可以省略)> <.>
//----构建镜像
服务发现 | |
剔除 | |
服务起步依赖 | 监控探针检测、就绪探针、存活探针 |
负载均衡 | 多副本 |
故障转移 | 本机无法恢复,经过一会阈值,运行的Pod从其他机器拉起:称为“故障转移” |
存储编排管理: | 中心化管理子存储 |
自动部署和回滚功能: | 一键恢复 |
装箱计算 | 控制app的内存和CPU,进行监控 |
自愈: | 本机尝试恢复:称 restarts 为“自愈”,强制关机后重启也可以恢复 |
配置管理中心: | 配置中心,放置故障转移配置丢失 |
灰度部署: | 多实例单台资源镜像逐个升级 |
用户定义的运行状况检查
的容器,并且在准备好服务之前不将其通告给客户端,从而保证客户端的请求不会被分发到有问题的容器中--------------------------------
架构
Node 分为不同的工厂,通过api沟通(通过部署不同数量的实例来进行缩放从而适应不同的流量)。
Node( Kubelet 厂长 -> k-proxy 保安 与 后勤长 联络同步其他Node)
Control Plane集中控制中心
api Node协调者(通过部署不同数量的实例来进行缩放从而适应不同的流量)
Sched 调度者(监视那些新创建的未指定运行节点的 Pod,并选择节点让 Pod 在上面运行)
c-m 决策者(从逻辑上讲,每个控制器都是一个单独的进程, 但是为了降低复杂性,它们都被编译到同一个可执行文件,并在一个进程中运行)
etcd资料库(高可用性的键值key-value
数据库,负责保存Kubernetes Cluster的配置信息和各种资源的状态信息,当数据发生变化时,etcd 会快速地通知Kubernetes相关组件)
c-c-m 外联部 联络其他Cloud云(运行特定于云平台的控制回路)
---------------------------------
kubectl ceate deploy myapp --image=nginx
apiserver是架构访问,kube-proxy是应用间访问,kubelet是检测本地应用
环境准备:
-------------------------------
kubeadm init
初始化主节点机器为Control Plane,组件架构自动安装
kubeadm join
从节点称为Node,加入Control Plane后被动安装核心组件 kube-proxy
kubectl get nodes
打印集群节点,根据引导下载”网络插件";kubectl主节点Master可以查看全局结点,必要组件就绪Node状态为 ready
kubectl edit svc kub-dash -n kub-das
暴露接口
kubectl get svc -A | kub-dash
安全组打开L端口
kubeadm token create --print-join-command
如果集群加入的令牌过期,获取令牌
kubectl -n kub-dash get secret ${密钥} -o go-template="***"
获取令牌,令牌会失效,需要重复获取
kubectl apply -f calico.yaml
根据yaml配置文件,给集群创建资源
kubectl get pods -A
查看运行的进程,像是docker ps指令
kubectl run
kubectl get
查看default名称空间pod
kubectl describe pod
如果卡住没有变化展示pod事件 和 结点位置
kubectl get
名称空间:对资源进行隔离,不隔离网络,网络可以访问(但可以设置网络访问策略),属于逻辑隔离
kubectl create ns <命名>
kubectl delete ns <命名>
会删除名称空间下连带的资源
kubectl delete -filename
删除配置文件yaml生成的资源
kubectl discrebe
UI事件启动时信息
kubectl logs 【-f阻塞时运行式打印】 pod名
kubectl create deployment <--image=指定镜像>
使用kubectl detele deploy部署对象,会使pod自愈恢复
kubectl delete deploy <应用部署名>
kubectl get deploy
kubectl create deployment <--image=指定镜像> <--replicase=副本数量>
创建多副本
kubectl scale
副本扩容
kubectl scale <-n 名称空间> <--replicas=预期副本数> <缩容的deploy>
副本缩容
kubectl edit delpoy
已经创建的deploy 会进入资源配置设置
kubectl get deploy <部署名> -oyaml
kubectl get deploy/部署名 -oyaml | gerp image
kubectl set image <已存在镜像:预期新镜像> --record
灰度升级镜像
kubectl rollout status deploy/部署名
查看资源状态
kebectl rollout history deploy/部署名
打印历史记录
kubectl rollout undo undo deploy/部署名 -- to-revision=版本数则会回滚恢复
版本回退
kubectl get pod -owide
打印更详细pod的信息
kubectl get pod -w
长期打印
kubectl exec -it pod名 -- /bin/bash
如果想进入pod修改某配置文件,ls / 打印出当先路径
kubectl expose deploy <--port=定义一组Service的端口> <--taget-port=容器目标端口>
kubectl get service
可以看见当前的是否为ClusterIP类型
kubectl get pod --show-lables
打印pod的标签
kubectl expose deploy 部署名 --port=*** --target-prot=** --type=ClusterIP
kubectl get service(svc)
内部访问IP <服务名>.<名称空间>.svc(service)
kubectl get
可以展示所有ingres资源的hosts,访问到Igress 和 被转发到 Service的Pod处理 不一样,Pod能处理就会返回否则就是404
kubectl edit ing <***网关名> <-n名称空间>
打开资源文件,可以修改保存并执行
kubectl describe pod
查看事件 或图形化界面
kubectl get
先有PV -> 后PVC申请书,申请书,pv状态为Bound;申请书delete,则 pv 状态Release
Kubectl create cm redis-conf --fom-file=redis.conf
获取配置集 yaml形式
kubectl get cm redis-conf -oyaml
kubectl get cm
kubectl edit cm redis.conf
外部配置集文件修改,配置需要重启Pod才可以生效,客户端配置也将改变
kubectl get secret
Base64编码解码 ,实际UI界面可以看见
kubectl get sc
kubectl top nodes -a
kubectl top pods -a
资源对象 | ||||
---|---|---|---|---|
Pod | 无法自愈 | 同一个Pod里共享网络空间,可以使用127.0.0.1:8080 | ||
namespace | 名声空间 | 展示N的代表下的,不带N的是全局K8的 | ||
Deployment | 应用部署 | 拥有多副本,自愈,扩充容量 | 无状态应用,数据不存储 | |
StatefulSet | 有状态Pod 提供稳定固定网络,且数据保证挂载到其他位置 | |||
DameonSwt | 守护进程集,如日志收集,在每个机器有则只有一个 | |||
Job/CronJob | 定时任务:垃圾消息清理组件 | |||
Service | 服务发现 | 多个Pod是一组网络公开服务的负载均衡 与 服务发现,Service,对pod标签加组,暴露端口,设置TCP协议 | ClusterIP类型/ | |
Igress | 网管入口 | 搭配Nginx,Rule规则.Ingress Nginx网关层-反向代理到Service | Igress路径重写,流量限制 ,全局限流,限流等待状态码 | |
PersistentVolume (PV) | 存储抽象 | |||
PV池 | 删除Pod将会归还持久空间会从存储池拿取解决的持久空间 | |||
PersisitentVolumeClaim (PVC) |
||||
ConfigMap | 配置集 | 将 ConfigFile 制作为 配置集 存储在ETC | ||
Secret | 存储密文信息 密码 Oauth令牌 SSH密钥 |
|||
StorageClass | 默认存储 |
|||
serviceAccount | 集群指标监控组件 metrics-server |
KubeKey帮助你创建集群
./kk create cluster --wirh-kubernetes v1.20.4 --with-kubespere v3.1.1
前端 - 网关 - 配置中心 - 监控 - Seata - Nacos - 缓存 - 数据库 - 服务远程调用 - 对象存储oss
--------------------------------------
初始化
名词:Fork指令,获取当前库到自己库
一、阅读架构图的组件,有状态数据导入,无状态制作镜像(端口是微服务),网络如何访问,生产配置分离 URL
二、阅读代码核心配置,【阅读Nacos配置列表】调制配置
三、下载RuoYi核心组件、注册中心
四、准备指定RuoYi数据库,手动执行Ruoyi数据表
五、本地成功运行、打镜像上传镜像仓库,分架构上云->
--------------------------------------
落地案例 | ||
developer(Jira) | repository (Git) | build (Jenkins) |
Code Analysis (SonarQube) | Test(JUnit) | 制品 Artifact(Nexus) |
Build Report | Docker horbor/Docker(OOS) | K8S |
后期运维 | ||
监控 | 提交问题 | Jira |
一:分析项目,画出项目结构图<自顶向下>
二、编写Jenkisfile
可视化Jenkins Piepine、流水线Base GO Maven NodeJS
Template:以下顺序可以改变
拉取代码 | 执行主步骤后做后操作 |
项目编译 | 不同微服务不同路径 并行parallel:构建镜像 docker bulid -t tag版本 -f dockerfile位置 执行的微服务 tag推送规则 |
测试 | |
镜像推送到仓库 | |
登录 打tag push推送 | |
部署 | kubectl 需要Master其他系欸但没有权限 readinessProdbe就绪探针 |
人工卡点 | |
打印打针 | |
webhook | 触发Git钩子 |
三、Jenkins脚本片段
hook | 根据Git动作触发钩子 |
Pre部分前任务 | |
Post部分后任务 | |
配置跳板机 | |
Configuration | 运维邮箱通知事件 |
poll SCM Jenkins | 主动检Core规则测托管Git代码发生变化则 构建 |
脚本思路:
【Pipeline 流水线脚本】
agent 指定的构造器
stages
stage -------------环节1
stetps -------------步骤1
stetps -------------步骤2
stage -------------环节2
流水线语法 | |
声明式流水线 | 代码语法检测,逻辑弱,简单规范 |
脚本时流水线 | 自定义功能多,复杂度高,难调试,本地操作权限需要解决 |