运维常用工具
Harbor Harbor (goharbor.io) 尽管Docker官方提供了公共的镜像仓库DockerHub,但从安全性和稳定性等方面考虑,部署私有镜像仓库是非常有必要的。Harbor是一个由VMware公司开源的企业级的Docker Registry管理项目,是我们搭建私有镜像仓库的不二之选。 整体架构 如上图所示是 Harbor 2.0 的架构图,从上到下可分为代理层、功能层和数据层。 代理层:代理层实质上是一个 Nginx 反向代理,负责接收不同类型的客户端请求,包括浏览器、用户脚本、Docker 等,并根据请求类型和 URI 转发给不同的后端服务进行处理。 功能层: Portal:是一个基于 Argular 的前端应用,提供 Harbor 用户访问的界面。 Core:是 Harbor 中的核心组件,封装了 Harbor 绝大部分的业务逻辑。 JobService:异步任务组件,负责 Harbor 中很多比较耗时的功能,比如 Artifact 复制、扫描、垃圾回收等。 Docker Distribution:Harbor 通过 Distribution...
Kubernetes 第三讲
Kubernetes...
Kubernetes 第三讲
Kubernetes 第四讲 调度 Kubernetes允许你去影响pod被调度到哪个节点。起初,只能通过在pod规范⾥指定节点选择器来实现,后⾯通过其他机制的逐渐加⼊来扩容这项功能。 固定节点(NodeName) 指定Pod调度到某个节点上并且固定 apiVersion: apps/v1kind: Deploymentmetadata: name: node-name-test labels: app: node-name-testspec: replicas: 5 selector: matchLabels: app: node-name-test template: metadata: labels: app: node-name-test spec: nodeName: master # 指定节点名即可 containers: - image: nginx name: nginx 标签选择器 根据标签选择可以调度的节点 给节点打标签 kubect label...
Kubernetes 第二讲
在没有工作负载之前,我们都是直接手动创建一个一个的Pod。但是如果当我们需要将一个复杂的服务部署到庞大的集群上并且实现高可用,我们总不能每个节点上都部署一遍吧。况且如果你可以将所有的Pod手动都创建好,但是如果镜像发生了更新,我们也需要将一个一个的Pod手动进行更新。太麻烦了,这个时候我们就可以使用工作负载,它可以帮助我们更高的管理Pod。 工作负载 工作负载 | Kubernetes 工作负载是在 Kubernetes 上运行的应用程序。 为了减轻用户的使用负担,通常不需要用户直接管理每个 Pod。 而是使用负载资源来替用户管理一组 Pod。 这些负载资源通过配置控制器来确保正确类型的、处于运行状态的 Pod 个数是正确的,与用户所指定的状态相一致。 Kubernetes 提供若干种内置的工作负载资源 Deployment和ReplicaSet StatefulSet:有状态服务,为 Pod...
计算机网络
计算机网络(第七版)谢希仁 1.概述 互联网的两个基本特点:连通性和共享 互联网概述 计算机网络又若干**节点(node)和连接这些节点的链路(link)**组成。 网络之间可以通过路由器互连起来,这样的网络成为互连网(internetwork),互连网是“网络的网络”(network of networks) 网络把许多计算机连接在一起,而互连网则把许多网络通过路由器连接在一起。与网络相连的计算机称为主机。 互连网与互联网的区别: 互连网(internet)是一个通用名词,泛指多个计算机网络互连而成的计算机网络。这些网络之间的通信规则可以任意选择,不一定非要使用TCP/IP协议 互联网(Internet)是一个专有名词,指的是当前全球最大的、开放的、由众多网络相互连接而成的特定互连网,它采用TCP/IP协议族作为通信的规则,且其前身是美国的ARPANET(一个单个的分组交换网) 第一阶段:从单个网络ARPANET向互联网发展的过程 第二阶段:建成了三级结构的互联网,分为主干网、地区网、校园网(或企业网) 第三阶段:形成了多层次的ISP结构的网络 ISP(Internet...
数据结构练习记录
Q1 Q2.1 #include <stdio.h>#include <stdlib.h>typedef struct{ int *elem; int length; // 当前长度 int listsize; // 当前分配的存储空间} SqList;// 初始化顺序表int initList(SqList *L, int listsize){ L->elem = (int *)malloc(sizeof(int) * listsize); if(!L->elem){ return -1; } L->length = 0; return 0;}// 有序插入void OrderedList_Insert(SqList *L, int x){ // 寻找x的前一个元素和后一个元素 //int prior = 0, next = 0, pos; //for(int i = 0; i...
数据结构学习记录
数据结构 绪论 数据:所有能输入到计算机中并可以被计算机处理的信号。 数据元素:用于完整地描述一个对象,是数据的基本单位。 数据项:组成数据元素的、有独立含义的、不可分割的最小单位。 数据对象:性质相同的数据元素的集合,是数据的一个子集。 数据结构:相互之间存在一个或多种特定关系的数据元素的集合。 逻辑结构:从具体问题抽象出来的数学模型。 存储结构:逻辑结构在计算机中的存储表示。分顺序存储结构和链式存储结构。 抽象数据类型:由用户定义的,表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称。 时间复杂度 O(1) < O(logn) < O(n) < O(nlogn) < O(n*n) < O(n*n*n) O(2的n次方) < O(n!) < O(n的n次方) 冒泡排序 最好时间复杂度:O(n) -> 一轮冒泡就排好 最坏时间复杂度:O(n*n) 线性表 顺序表的基本操作 顺序表的存储结构 #include <stdio.h>#include <stdlib.h>#define MAXSIZE...
GoLang学习记录
GoLang记录 goroute、select、channel练习 请写出一个场景:二营长的意大利炮 为了高效的打鬼子,二营长搬出了他珍藏的一门意大利炮,并命令一堆手下来操作意大利炮 发射一下意大利炮需要经过三个步骤:装填→瞄准→发射 每个阶段打印出这个阶段的名称即可 每一个手下都是一个 goroutine 每个手下只负责一个步骤 需要使用 channel 来同步各个手下的操作 作为指挥的二营长,他希望一个命令就可以停止打炮 按下 q 就停止打炮了,kill 进程不算 可以使用 "github.com/eiannone/keyboard" 来监听键盘按键事件 package mainimport ( "fmt" "github.com/eiannone/keyboard" "time")func main() { var ( // 创建用于同步的通道 aim = make(chan struct{}) load = make(chan...
C语言学习记录
Q1 编程利用循环打印如下字符图形:12345678987654321 234567898765432 3456789876543 45678987654 567898765 6789876 78987 898 9 #include <stdio.h>int main(){ int i, j; for(i=1;i<=9;i++){ // 控制行数(1-9行) for(j=1;j<i;j++) { // 打印每行开头的空格,空格与当前行数有关 printf(" "); } for(j=i;j<=9;j++){ // 打印递增数字 printf("%d",j); } for(j=8;j>=i;j--) { // 打印从9递减至当前行数 ...
全国艾滋病数据可视化分析-README
Beatrueman/analysis: A data visualization project related to HIV. 全国艾滋病数据可视化分析 整体效果 技术栈 Python:使用pandas做数据处理,使用[pyecharts](简介 - pyecharts - A Python Echarts Plotting Library built with love.)做数据可视化生成,使用flask制作接口(用于根据年份更新对应的数据) 数据来源于公共卫生科学数据中心 (phsciencedata.cn) HTML + CSS + JS:用于前端页面的渲染。 使用jQuery库实现AJAX发送请求到服务器用来更新各年份对应的数据以及生成对应省份的3D图。 使用Bootstrap库实现图片的轮播以及3D模态框的展示。 参考10分钟在网站上增加一个AI助手,利用[阿里云百炼](阿里云百炼 (aliyun.com)),将通义千问接入项目,提供艾滋病相关知识的科普。 接口介绍 POST...