Git | Linux | Docker | K8S
文章平均质量分 80
运维相关知识分类
Wang's Blog
Keep learning for the innovation era.
展开
-
K8s: 在Pod里面配置容器启动的命令参数及容器间依赖的环境变量
在 Pod 配置文件中设置了一个命令与两个参数。现在,创建一个只包含单个容器的 Pod。2.2 将环境变量作为命令参数。以上是打印出来了几个环境变量。创建 args.yaml。原创 2024-04-19 07:30:00 · 346 阅读 · 0 评论 -
K8s: 在Pod里面创建init容器与健康检查
kubelet会向容器内运行的服务(服务会监听 8080 端口)发送一个 HTTP GET 请求来执行探测。如果服务器上 /healthz 路径下的处理程序返回成功代码,则 kubelet 认为容器是健康存活的。同时pod中和容器中打印的时间相差 20s,这两个相差的时间一定是 大于 睡了的10s的。容器存活的最开始 10 秒中, /healthz 处理程序返回一个 200 的状态码。这样,通过探针的健康检查,可以判断pod的运行健康状态。下面的例子定义了一个有 init 容器和一个业务容器。原创 2024-04-18 23:30:00 · 577 阅读 · 0 评论 -
K8s: 关于Kubernetes中的Pod的生命周期(状态)以及生命周期的钩子函数处理
在上述配置文件中,可以看到 postStart 命令在容器的 /usr/share 目录下写入文件 message。创建一个包含一个容器的 Pod,该容器为 postStart 和 preStop 事件提供对应的处理函数。在Pod配置文件中,定义 postStart 和 preStop 处理函数。创建一个 pod, 新建一个 lifecycle-demo.yaml 文件。命令 preStop 负责优雅地终止 nginx 服务。当因为失效而导致容器终止时,这一处理方式很有用。查看文件是否被写入内容。原创 2024-04-18 20:45:00 · 405 阅读 · 0 评论 -
K8s: 关于Kubernetes中的Pod的创建,实现原理,Job调度pod以及pod网络
Pod 是最小部署的单元,Pod里面是由一个或多个容器组成,也就是一组容器的集合一个pod中的容器是共享网络命名空间,每个Pod包含一个或多个紧密相关的用户业务容器Pod 是 k8s 系统中可以创建和管理的最小单元是资源对象模型中由用户创建或部署的最小资源对象模型也是在 k8s 上运行容器化应用的资源对象,其他的资源对象都是用来支撑或者扩展 Pod 对象功能的, 比如控制器对象是用来管控 Pod 对象的Service 或者 Ingress 资源对象是用来暴露 Pod 引用对象的。原创 2024-04-18 19:15:00 · 627 阅读 · 0 评论 -
K8s: 将一个节点移出集群和相关注意事项
如果在执行 kubectl cordon 和 kubectl drain 命令后,节点的状态变为 NotReady,SchedulingDisabled。此外,如果你在生产环境中操作,请务必先在测试环境中验证所有步骤,以确保操作的正确性和安全性。但尚未成功将所有Pod驱逐到其他节点或节点本身存在某些问题导致它无法进入Ready状态。请注意,在执行这些操作之前,确保已经备份了所有重要的数据和配置,以防万一出现意外情况。可以通过执行以下命令来检查集群中的节点列表:$3 ) 从集群中移除节点。原创 2024-04-14 17:42:16 · 782 阅读 · 0 评论 -
K8s: 裸机初始化Kubernetes集群环境
目前可用的 k8s版本在 1.29,每个版本配置不一样,最新版本基于 containerd.io 的, 删除了docker运行时。也可以使用 docker 的运行时,但配置比较麻烦,所以,我们使用 1.22.4版本,这是一个简单的版本。如果在 阿里云等云产品上,还需要配置安全组, 配置安全组类似于这样。还有需要了解 master 节点不跑任务,都是在 工作节点来跑。删除之前服务器上的一些 相关软件,(裸机的话,不用执行)现在工作节点上,也有这个文件了, 在工作节点上 执行。配置 Docker 安装源。原创 2024-04-13 13:56:35 · 651 阅读 · 0 评论 -
consul: 集群搭建和数据中心通信
对于当前的两台机器和单机部署的场景,每台机器上的Consul实例已经是其数据中心内的唯一服务器节点,因此它们不会通过WAN Gossip层进行通信。在大多数情况下,server节点需要这些配置来确保跨数据中心的通信,而client节点则主要关注与本地server节点的通信。在多数据中心的Consul配置中,client和server的配置会有所不同,具体取决于它们在架构中的角色和功能。同样的,并在 dc2 的 server.json 中添加指向dc1的配置,这里不再赘述。原创 2024-04-05 00:55:18 · 818 阅读 · 0 评论 -
nginx: 集群环境配置搭建
在构建和管理NGINX集群时,有许多关键的注意事项,如下。从这里可以看到,每个端口都可以自行配置管理。4 )服务器的硬件与配置。2 ) 目录结构配置。3 )网络带宽与延迟。原创 2024-04-04 19:30:00 · 1115 阅读 · 2 评论 -
Nginx: proxy_set_header 与 add_header 区别
proxy_set_header 和 add_header 是 Nginx 配置中两个不同的指令, 它们各自有不同的用途proxy_set_header 指令用于修改转发到代理服务器(通常是后端应用服务器)的 HTTP 请求头它允许您设置或覆盖请求头中的字段,以便后端服务器能够接收正确的信息或根据这些信息做出响应例如,有时可能会使用 proxy_set_header 来设置 Host 头,这样后端服务器就知道它正在为哪个域名提供服务有时候,还可以设置 X-Real-IP 和 X-Forwarded-原创 2024-04-01 20:59:42 · 657 阅读 · 0 评论 -
github: 关于博客文章图片无法显示的问题
博客的图片托管于github之上,部分博客文章图片可能会不能正常加载,是github的一些域名无法正常解析造成的同时此篇文章也是解决github图片无法正常加载的处理方式原创 2020-04-24 11:53:29 · 610 阅读 · 1 评论 -
Github: Github actions自动化工作原理与多workflow创建和部署
参考:https://docs.github.com/en/actions/learn-github-actions/environment-variables。可以看到,在里面可以使用环境变量和自定义变量, 同时,类似 jobs 下可定义多个任务,比如 再加一个 Test2。在项目目录下新建 .github/workflows 目录, 在里面 新建 test.yml。如果没有触发,可能由于提交到真实的主机上,或workspaces 目录或具体配置错误。上面的简单示例可以很明白的看清楚会发生什么。原创 2024-03-17 11:20:30 · 860 阅读 · 0 评论 -
Jenkins: 配合docker来部署项目
测试将jenkins构建后的项目部署到docker的nginx镜像中nginx 镜像内的默认目录在 /usr/share/nginx/html将待部署项目存放在 /usr/share/nginx/html 项目名称目录在Mac环境下的 jenkins系统 中,工程项目默认的路径在 ~/.jenkins/workspace/项目名称目录原创 2024-03-16 21:38:41 · 550 阅读 · 0 评论 -
Jenkins: 配置自动化发布脚本
在Jenkins的 一个工程项目任务中, 点击左侧 配置 栏在下面的 Build Steps 中,点击上面的 可用的环境变量列表找到里面有一个 WORKSPACE 的变量这个变量指向我们的jenkins下工程项目源码的目录需要把这个变量利用起来原创 2024-03-16 17:49:31 · 644 阅读 · 0 评论 -
Jenkins: 搭建Jenkins服务,调通Webhook链路
成功后,每次触发push, 就会在 Recent Deliveries 中添加一条 ping 的记录。当在本地项目中提交并推送代码到 github 远程的时候, 可以看到 smee 终端出现了一条记录。而 github 的webhook Recent Deliveries 中也出现了一条记录。接下来,通过 webhook 触发的时候,触发的是通过本机构建的。同时,jenkins 项目任务中也有一条新的构建任务生成。这些就是我们想要的结果, 说明这条链路已经打通了。5 )Jenkins 的工作流配置。原创 2024-03-16 14:58:34 · 1058 阅读 · 0 评论 -
Docker笔记:Docker Swarm, Consul, Gateway, Microservices 集群部署
配置dockerfile,简单示例仅供参考 micro_a_Dockerfile。配置dockerfile,简单示例仅供参考 micro_b_Dockerfile。配置dockerfile,简单示例仅供参考 micro_c_Dockerfile。1 )将各个微服务项目打包,比如goWeb应用, 这个步骤是前置任务。3.3 启动第二个节点(端口8501), 加入到 consul1。3.4 启动第三个节点(端口8502), 加入到 consul1。以下步骤是大体步骤,比较粗略,忽略一些细节赘述,仅供参考。原创 2023-12-15 19:24:14 · 1416 阅读 · 0 评论 -
Docker笔记:Docker Swarm Web 管理工具之portainer及其汉化版
当 Docker 部署规模逐步变大后,可视化监控容器环境的性能和健康状态将会变得越来越重要, Docker的图形化管理工具提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能原创 2023-12-15 06:00:00 · 194 阅读 · 0 评论 -
Docker笔记:Docker Swarm 结合 Docker Compose 来部署集群
1 )准备 docker-compose.yml的文件, 示例 demo 如下。以上三个层,是我们服务端一般的设计方案,当然上面没用到 mysql 集群。)nginx 服务器接收到请求后转发到集群中的各台主机上。以上架构可支持 100W 的访问量 (使用mysql集群)4 )配置部署额外的一台Nginx服务器(非集群内)如果需要负载更多, 可把这套架构复制到多个城市地区。)mysql 或 mysql集群。)集群里面有各类服务。原创 2023-12-14 21:10:40 · 614 阅读 · 1 评论 -
Docker笔记:Docker Swarm 搭建集群与项目部署
Docker Compose 只能编排单节点上的容器,即: 单台服务器上的集群部署, 如果要实现多台服务器上的集群部署,就可以选择 Swarm, Docker Swarm 是Docker公司推出的用来管理docker集群的工具, 使用 Docker Swarm 可以快速方便的实现高可用集群, Docker Swarm 可以让我们在单一主机上操作来完成对整个容器集群的管理工作原创 2023-12-14 19:26:22 · 258 阅读 · 0 评论 -
Docker笔记:docker compose部署项目, 常用命令与负载均衡
以上是纯docker命令部署,也可通过 Dockerfile来配置部署goweb应用程序。不管是原生docker命令部署,还是 Dockerfile部署,其实都比较麻烦。2 )方案2: 基于docker-compose.yml文件。启动nginx映射端口,配置映射目录,连接web服务。2 )配置 docker-compose.yml。1 )安装 docker compose。改写 compose 文件。1 )mysql 的部署。3 )nginx的部署。1 )方案1:基于命令。ping 域名 成功。原创 2023-12-13 23:15:26 · 412 阅读 · 0 评论 -
Docker笔记:配置docker网络与不通网络之间的通信及跨主机通信
上面创建网络时,需要制定网络类型,网络类型,有如下四种。通过上述命令创建好网络后,启动容器并加入该网络。要解决默认网络的问题,就需要自定义网络。1 ) Docker0 网络。4 )使用默认网络的问题。关于 /16 和 /24。5 )关于微服务通信。原创 2023-12-13 21:22:09 · 807 阅读 · 0 评论 -
Docker笔记:简单部署 nodejs 项目和 golang 项目
docker images 获取刚编译好的 goimage 的 imageId。curl 127.0.0.1:8080 访问物理机上的go应用,正常。curl 127.0.0.1:8080 访问容器上的go应用,正常。之后走正常的,将web应用打包镜像,运行生成容器,访问ip。注意,golang 应用 和 beego框架应用都类似。2 )部署未编译好的golang项目和beego项目。1 )部署编译好的golang项目。部署未编译的 beego 项目。安装golang的方法1。安装golang的方法2。原创 2023-12-13 12:59:23 · 202 阅读 · 0 评论 -
Docker笔记:容器转换成镜像,导出导入镜像,数据拷贝,查看日志
容器转换成镜像,导出导入镜像,数据拷贝,查看日志原创 2023-12-12 22:06:55 · 381 阅读 · 0 评论 -
Docker笔记:关于Dockerfile及构建镜像
Dockerfile让docker命令变得更简单,是用于构建docker镜像,实现自动化部署原创 2023-12-12 19:30:12 · 253 阅读 · 0 评论 -
Docker笔记:Docker中简单配置Mysql/Redis/Mongodb容器
该用户是在 admin 身份验证数据库中创建的,并被赋予角色, 这是一个"超级用户"角色。1 )方案1:基于centos等linux操作系统。2 )方案2:直接用 mysql 镜像 (推荐)在客户端连接docker容器的mongo服务。结合起来使用来传递环境变量,配置账户密码。创建一个新用户并设置该用户的密码。原创 2023-12-11 22:26:59 · 1066 阅读 · 0 评论 -
Docker笔记:数据卷挂载的三种方式及物理机与容器内的环境变量的传递
以上,三种方式挂载后,在物理机或容器内操作,都会互相同步数据。1 ) 实名(指定路径)挂载数据卷。2 )匿名(自动分配)挂载数据卷。3 )具名挂载数据卷。原创 2023-12-10 23:47:25 · 259 阅读 · 0 评论 -
Docker笔记:多容器的应用:基于python框架Flask的web应用与redis容器进行通信
docker多容器的应用1 ) 任务使用python写个web页面,将数据存放于redis在docker开发中,我们应该遵循每个容器只做一件事情的原则在这一任务中我们使用两个容器:一个用于运行python代码, 另一个跑redis数据库2 ) 准备redis容器在hub.docker.com中查阅关于redis的镜像信息,可以找到alpine版本的拉取镜像, $ docker ...原创 2020-02-07 20:55:41 · 730 阅读 · 1 评论 -
Docker笔记:运行web服务和构建自己的镜像文件
在docker中运行web服务1 ) 以nginx为例运行一个web服务以nginx为例,如果要运行nginx就要有一个nginx镜像在hub.docker.com中搜索nginx镜像,可以查看到有很多版本,我们找到一个基于alpine的版本(因为体积小,最新的体积会很大)$ docker pull nginx:alpine 此时我们下载好了基于alpine制作的nginx镜像如果运行...原创 2020-02-07 19:44:27 · 557 阅读 · 1 评论 -
Docker笔记:基本概念、镜像、容器、仓库以及数据卷的使用
什么是dockerdocker 是一个开源的应用容器引擎可以使用docker将应用程序和依赖打包到一个镜像之中可以非常方便的移植到其他机器上运行使用docker构建打包我们的应用(build),之后可以像集装箱一样很方便的传输到别的机器上(ship),可以在任何环境下运行我们的应用程序用官方的话概况为:Build, ship, and Run Any App, Anywheredoc...原创 2020-02-07 18:07:42 · 458 阅读 · 0 评论 -
Linux笔记:自动化运维之部署管理:Fabric、SSH免密码登录、Ansible、Paramiko的应用
连接服务器的远程终端工具SecureCRT 收费Xshell 收费mtputty 免费(windows下的putty的外壳程序,下载后放入putty同级,可以对多台服务器进行有效管理)测试服务器代码的部署代码完成后,需要进行测试, 就需要将我们的代码部署到测试服务器上!测试服务器上创建一个git仓库,同步最新的项目代码!每次需要测试时, 通过代码更新, 将最新代码同步即可!...原创 2020-02-07 10:33:36 · 2014 阅读 · 0 评论 -
Linux笔记:自动化运维之服务器软件的自动化安装与配置
概述在部署一台新服务器的时候,总是要安装各种各样的软件:mysql,nginx,python等,如果要避免重复劳动批量化部署多台服务器,那么我们就要编写自动化运维脚本, 让我们的安装和配置工作都能自动的完成。编写自动化安装程序安装软件一般有两种方式:二进制包(简单需要下载后手动安装)、源码编译(麻烦)我们以源码编译的方式来实现脚本编写源码编译的方式安装步骤以编译安装Nginx为例...原创 2020-02-05 23:45:02 · 643 阅读 · 0 评论 -
Linux笔记:自动化运维之自动化监控与报警:监控硬件使用率和自动发送邮件微信通知报警
概述在项目上线后,总有很多不确定的因素存在,例如并发高,代码逻辑错误等, 这些异常往往会导致很严重的后果,造成服务中断, 需要尽早的发现问题, 所以对服务器各方面的监控就变得尤为重要我们需要使用程序自动监控服务器状态,并且在出现异常后主动告诉我们。自动监控CPU、内存使用率创建文件监控文件monitor.py, 这里的一些方法都是类方法,可以直接调用,不需要实例化import psu...原创 2020-02-04 18:17:36 · 1348 阅读 · 0 评论 -
Linux笔记:自动化运维之常用模块psutil、IPy、dnspython
常用模块psutil用它来获取系统信息IPy高效处理ip地址相关的功能dnspython实现是dns的服务监控可以实现域名解析,对域名的A记录,NS记录进行相应的查询等解析结果的校验系统信息的获取在Windows系统中可以通过任务管理器来获取系统的时时状态在linux服务器中如何获取呢?可以使用top命令可以看到CPU、内存、进程等信息可以...原创 2020-02-02 15:12:25 · 941 阅读 · 0 评论 -
Linux笔记:高并发下的Web架构之RabbitMQ消息队列
什么是消息队列在项目架构中消息队列(Message queue) 简称 MQ, 应用场景非常多, 它是一个异步框架。一般项目做大了之后,会将http-server中的一些业务逻辑放到MQ中, 后端独立处理这些消息。消息队列的场景1 ) 同步业务处理存在的问题拿用户注册来说,首先要进行数据库操作,之后可能会发短信,发邮件等,之后再通知注册成功,而每一步花费时间会非常多,如果按照正常流程...原创 2020-02-02 12:20:32 · 845 阅读 · 0 评论 -
Linux笔记:高并发下的Web架构之Memcached缓存技术
概述在我们把系统做好反向代理和负载均衡之后, 还有一个性能问题没有解决,就是我们的数据库,此时如果并发量大了,数据库将是一个很大的瓶颈。假如我们有一台4核8G的服务器, 它能承受的并发数通常也就在2000左右。以电商系统为例, 如果所有的商品信息都是直接从数据库中读取, 首先挂掉的将会是我们的数据库。为了解决这个问题,在DB层和业务逻辑层之间, 会加入一层缓存, 利用缓存可以很好分担数据库的压力...原创 2020-02-01 21:08:10 · 1905 阅读 · 0 评论 -
Linux笔记:高并发下的Web架构之Nginx反向代理配置
做反向代理的目的主动断开用户和真实服务器之间直接通信,只有通过我们的代理服务器才能访问我们的服务Nginx反向代理的配置查看nginx服务器IP地址, $ip addr, 查看到此服务器ip: 192.168.55.66 (仅作为举例)编辑nginx服务器配置 $vi /etc/nginx/sites-enabled/defaultserver { listen ...原创 2020-01-31 19:52:36 · 1089 阅读 · 0 评论 -
Linux笔记:高并发下的Web架构之代理与负载均衡与Nginx配置
代理所谓代理就是让别人帮你办事,将结果反馈给你。1) 正向代理(Proxy)是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。例如:你无法去国外,让能出国的朋友去国外购买商品后再转交给你。例如:中国无法访问google.com, 我们...原创 2020-01-31 17:23:25 · 2626 阅读 · 0 评论 -
Linux笔记:高并发下的Web架构之高可用、高并发和经典系统架构
概述在中国的互联网行业最大的特点就是访问量大,我们在做项目时要考虑如何面对高并发,当一台服务器不能满足需求时,我们要考虑搭建多台服务器同时对外提供服务,这时候我们就要用到反向代理和负载均衡的技术,随着项目的扩展,对后端的数据库也有很大压力,我们需要用到一些缓存的技术来提高我们响应的速度,减轻对数据库的压力。还有一些场景下,我们需要优化用户体验,提高服务的稳定性或者减少模块之间的依赖,我们会采用异...原创 2020-01-31 15:46:31 · 3580 阅读 · 0 评论 -
Linux笔记:关于性能测试(压力测试)
性能测试概述我们的项目不仅仅要考虑功能同时需要关注性能需要考虑并发访问时服务器会出现什么样的输出关于性能测试需要考虑几点吞吐率(Requests per second)反映了服务器的并发处理能力比如在50个并发下,服务器每秒钟能处理多少请求并发连接数(The number of concurrent connections)表示服务器在同一时间能够承受多少并发的请求...原创 2020-01-31 12:49:42 · 2093 阅读 · 0 评论 -
Linux笔记:使用uWSGI将python项目发布到linux服务器上
检查服务器软件环境$apt update 安装软件之前的通用操作$python3 -V 检查是否安装python3$pip3 -V 检查是否安装pip3$apt install python3 如果没有,则执行安装$apt install python3-pip 如果没有,则执行安装$pip3 install django 安装django框架使用django创建一个简单的项目...原创 2020-01-31 12:04:37 · 812 阅读 · 0 评论 -
Linux笔记:安装mysql以及使用命令行对mysql进行管理和维护
MySQL 安装$ apt update$ apt install -y mysql-server mysql-client安装时设置密码,继续后面的安装MySQL 连接$ mysql -uroot -p输入密码即可进入关于MySQL服务的操作停止:$service mysql stop启动:$service mysql start重启:$service mysql ...原创 2020-01-31 11:06:46 · 1622 阅读 · 0 评论