为容器设置一个环境变量创建 Pod 时,可以为其下的容器设置环境变量。通过配置文件的 env 或者 envFrom 字段来设置环境变量。 本示例中,将创建一个只包含单个容器的 Pod。Pod 的配置文件中设置环境变量的名称为 DEMO_GREETING, 其值为 "Hello from the environment"。下面是 Pod 的配置清单: 123456789101112131415apiVersion: v1kind: Podmetadata: name: envar-demo labels: purpose: demonstrate-envarsspec: # 指定规格信息 containers: # 指定要启动一个什么样的容器 - name: envar-demo-container image: gcr.io/google-samples/node-hello:1.0 env: # 设置环境变量 - name: DEMO_GREETING value: " ...
YAML 基础 它的基本语法规则如下: 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使用空格。 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 # 表示注释,从这个字符一直到行尾,都会被解析器忽略。 Pods基本原理Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。 Pod (就像在鲸鱼荚或者豌豆荚中)是一组(一个或多个) 容器; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 中的内容总是并置(colocated)的并且一同调度,在共享的上下文中运行。 Pod 所建模的是特定于应用的“逻辑主机”,其中包含一个或多个应用容器, 这些容器是相对紧密的耦合在一起的。 在非云环境中,在相同的物理机或虚拟机上运行的应用类似于 在同一逻辑主机上运行的云应用。 除了应用容器,Pod 还可以包含在 Pod 启动期间运行的 Init 容器。 你也可以在集群中支持临时性容器 的情况下,为调试的目的注入临时性容器。 Pod 简单模版1234567891011121314151617181920apiVersion: v1 # ...
Ansible部署keepalived高可用keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点状态,后来又加入了可以实现高可用的VRRP功能.此,keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx,Haproxy,MySQL等)的高可用解决方案软件. keepalived软件主要是通过VRRP协议实现高可用功能的.VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题的,他能够保证当个别节点宕机时,整个网络可以不间断地运行.Keepalived一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用功能。 思路: 安装keepalived 配置keepalived配置文件 使用到yum、file、service等模块。 启动服务测试 环境准备: 1[root@ansible01 ~/roles]$mkdir keepalived/{ ...
Ansible批量部署编译安装MySQL本文是通过ansible-playbook的roles功能实现批量编译安装mysql-5.7.31和初始化,使用Ansible角色来编译安装MySQL,来对之前学的做总结。 思路:安装MySQL的编译环境下载文件、解压、创建软连接初始化使用到yum、user、get_url、file、unarchive、shell等模块。 环境准备: 1[root@ansbile01 ~/roles]$ mkdir mysql/{vars,tasks,templates,handlers,files} -p 创建启动MySQL用户12345[root@ansbile01 ~/roles]$ cat mysql/tasks/user.yml - name: Create MySQL group group: name={{ group }} gid={{ gid }} system=yes- name: Create MySQL user user: nam ...
Ansible批量部署编译安装nginx使用Ansible角色来编译安装Nginx,来对之前学的做总结。 思路:安装nginx的编译环境下载文件、解压编译安装使用yum、user、get_url、file、unarchive、shell等模块。 创建启动nginx用户12345[root@ansbile01 ~/roles]$ cat nginx/tasks/user.yml - name: create nginx group group: name={{ group }} gid={{ gid }} system=yes- name: create nginx user user: name={{ user }} group={{ group }} uid={{ uid }} system=yes shell=/sbin/nologin create_home=no 安装依赖软件 ...
自动化运维
未读ansible角色概念角色(roles)是ansible自1.2版本开始引入的新特性,用于层次性,结构化地组织playbook。 roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。简单的说,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中、并可以便捷地include他们的一种机制。角色一般用于基于主机构建服务的场景中、但也可以是用于构建守护进程等场景中。 我理解的就是把多个节点都会用到的功能将其定义成模块,以后谁用到就调用该模块即可,而ansible中它有一个特有名称,即角色(rolers)官方文档:https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html 角色目录规划官方的目录结构,必须这样定义! 123456789[root@ansible /etc/ansible/roles]# tree.├── init # 角色名称│ ...
Linux运维
未读rpmbuild方式定制rpm包rpmbuid是用于制作rpm格式包的工具。rpm 4.4.x版本之前,rpmbuid工具默认的工作车间为/usr/src/redhat,所以造成普通用户不能制作rpm包。rpm 4.5.x版本开始,将rpmbuid工具默认的工作车间为$HOME/rpmbuild(用户家目录),并且推荐用户尽量不用root账号制作rpm包。 123456789101112#rpm版本查看方法:[root@moban ~]# rpm -qa|grep rpmredhat-rpm-config-9.1.0-88.el7.centos.noarchrpm-sign-4.11.3-45.el7.x86_64rpm-4.11.3-45.el7.x86_64rpm-build-libs-4.11.3-45.el7.x86_64python-srpm-macros-3-34.el7.noarchperl-srpm-macros-1-8.el7.noarchrpm-libs-4.11.3-45.el7.x86_64rpm-python-4.11. ...
管理K8S资源的三种基本方法 陈述式管理方法——命令行CLI工具 声明式管理方法——统一资源配置清单(mainfest) GUI式管理方法——web页面(dashboard) kubectl命令行 kubernetes集群管理集群资源的唯一入口式通过相应的方法调用apiserver的接口 kubectl是官方的CLI命令行工具,用于与apiserver进行通信,将用户在命令行输入的命令,组织并转化为apiserver能识别的信息,进而实现管理K8S各种资源的一种有效途径 陈述式资源管理方法基础管理 查看名称空间 12kubectl get namespaceskubectl get ns 查看名称空间内的资源 1kubectl get all [-n default] 创建名称空间 12kubectl create namespaces app_namekubectl create ns app_name 删除名称空间 12kubectl delete namespaces app_namekubectl delete ns app_name 创建deplo ...
MySQL8.0新特性MySQL从5.7一跃直接到8.0,这其中的缘由,咱就不关心那么多了,有兴趣的朋友自行百度,本次的版本更新,在功能上主要有以下6点: 账户与安全 优化器索引 通用表表达式 窗口函数 InnoDB 增强 JSON 增强 MySQL8.0安装MySQL Download 基础环境准备12345678910111213141516# 上传、解压[root@db01 ~]# mkdir /server/tools -p[root@db01 ~]# cd /server/tools/[root@db01 tools]# tar xf mysql-8.0.25-linux-glibc2.12-x86_64.tar.xz -C /application/[root@db01 ~]# ln -s /application/mysql-8.0.25-linux-glibc2.12-x86_64/ /application/mysql# 系统设置[root@db01 ~]# useradd -u 1020 -s /sbin/nologin -M mysql[root@db01 ...
项目背景介绍需求产生由于原生态的Nginx的一些安全防护功能有限,就研究能不能自己编写一个WAF,参考Kindle大神的ngx_lua_waf,自己尝试写一个了,使用两天时间,边学Lua,边写。不过不是安全专业,只实现了一些比较简单的功能: 功能列表: 支持IP白名单和黑名单功能,直接将黑名单的IP访问拒绝。 支持URL白名单,将不需要过滤的URL进行定义。 支持User-Agent的过滤,匹配自定义规则中的条目,然后进行处理(返回403)。 支持CC攻击防护,单个URL指定时间的访问次数,超过设定值,直接返回403。 支持Cookie过滤,匹配自定义规则中的条目,然后进行处理(返回403)。 支持URL过滤,匹配自定义规则中的条目,如果用户请求的URL包含这些,返回403。 支持URL参数过滤,原理同上。 支持日志记录,将所有拒绝的操作,记录到日志中去。 日志记录为JSON格式,便于日志分析,例如使用ELK进行攻击日志收集、存储、搜索和展示。项目背景介绍 WAF实现WAF一句话描述,就是解析HTTP请求(协议解析模块),规则检测 ...
Linux运维
未读ELK Stack简介对于日志来说,最常见的需求就是收集、存储、查询、展示,开源社区正好有相对应的开源项目:logstash(收集)、elasticsearch(存储+搜索)、kibana(展示),我们将这三个组合起来的技术称之为ELKStack,所以说ELKStack指的是Elasticsearch、Logstash、Kibana技术栈的结合。 Elasticsearch介绍及安装ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 Elasticsearch部署 Elasticsearch首先需要Java环境,所以需要提前安装好JDK,可以直接使用yum安装。也可以从Oracle官网下载JDK进行安装。开始之前要确保JDK正常安装并且环境变量也配置正确: 安装JDK。 12345yum -y install ja ...
Playbook简介playbook是ansible用于配置,部署,和管理被控节点的剧本。通过playbook的详细描述,执行其中的一系列tasks,可以让远端主机达到预期的状态。playbook就像Ansible控制器给被控节点列出的的一系列to-do-list,而被控节点必须要完成。也可以这么理解,playbook 字面意思,即剧本,现实中由演员按照剧本表演,在Ansible中,这次由计算机进行表演,由计算机安装,部署应用,提供对外服务,以及组织计算机处理各种各样的事情。 Playbook的使用优势 功能比ansible命令更强大 能很好的控制先后执行顺序, 以及依赖关系 语法展现更加的直观 ansible命令无法持久使用, playbook 可以持久使用 剧本的书写格式要求语法格式ansible剧本格式:遵循yaml语法格式(类似python脚本编写格式)rsync配置文件格式:ini语法格式sersync配置文件格式:xml语法格式(标签格式) 注意缩进合理的信息缩进,两个空格表示一个缩进关系一定不要使用tab 123标题一_ _ 标题二_ _ _ _ 标题三 冒号所有冒号 ...