制作和使用自签名证书
在很多使用到证书的场景, 比如HTTPS, 可以选择去申请一个免费的证书, 也可以尝试自签名证书, 申请免费证书请看:使用certbot自动申请ssl证书或者使用acme.sh来自动更新https证书, 本文介绍自签名证书.
SSL协议加密方式SSL协议即用到了对称加密也用到了非对称加密(公钥加密),在建立传输链路时,SSL首先对对称加密的密钥使用公钥进行非对称加密,链路建立好之后,SSL对传输内容使用对称加密。
对称加密 速度高,可加密内容较大,用来加密会话过程中的消息。
公钥加密 加密速度较慢,但能提供更好的身份认证技术,用来加密对称加密的密钥。
CA 证书生成 CA 私钥1openssl genrsa -out ca.key 4096
生成一个 ca.key 文件
生成 CA 证书交互式创建非交互式创建1openssl req -utf8 -new -x509 -days 3650 -key ca.key -out ca.crt
需要交互式输入:
提示
含义
输入内容
Country Name
国家
CN
State or Province Nam ...
Nginx设置图片防盗链
常见的使用Nginx进行防盗链配置是利用了referer, 也就是来源地址来判断, 只要不是白名单中的地址, 就禁止访问, referer是比较有效的方式, 但是可以轻松绕过, 目的是为了防止页面被别人复制粘贴我们的文章, 图片等资源依然使用我们的连接, 占用带宽或流量造成费用.
白名单模式这种模式就是在白名单之外的所有域名都不能请求我们的图片等资源
配置示例:
1234567891011121314151617181920212223242526# 资源防盗链(指定目录or指定文件类型) location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { # location /upload/ { access_log off; # none:表示没有 referer 的可以访问 # blocked:表示 referer 没有值的可以访问 # server_names:表示 Nginx 的 server_name 可以访问 # ~.*google\.:google 前后都是正则匹配, ~表示后面的是正则匹配 ...
Kubernetes回滚应用之kubectl rollout
kubernetes 每次更新资源会记录资源的历史版本, 方便我们进行回滚操作。真的k8s解决了很多运维的痛点问题, 想起来以前没有用k8s的时候,用jenkins和ansible来做的发布和回滚…
查看历史版本12345678kubectl rollout history deployment nfs-client-provisionerdeployment.apps/nfs-client-provisionerREVISION CHANGE-CAUSE1 <none>2 <none>4 <none>5 <none>
这里列出的就是版本, 为什么没有3, 因为从版本4回滚到了版本3, 则版本3就变成了版本5
查看指定版本详情1kubectl rollout history deployment nfs-client-provisioner --revision=4
也可以以yaml格式输出
1kubectl rollout history deployment n ...
Kubeadm之单节点master升级高可用master
单节点升级master总体来说就是两步, 先修改apiserver地址为负载均衡地址,然后添加新的master节点。
搭建集群的时候我们注意一下就可以减少后期维护的烦恼,比如:
使用hostname而不是ip来作为kube-apiserver地址
单节点也把负载均衡安排上
假设已经有一个没有负载均衡的单节点master,现在想将它切换为高可用集群,记录以下步骤:
部署负载均衡参考部署负载均衡
更新证书
因为我们部署了负载均衡,所以需要通过负载均衡的地址来访问apiserver,因为证书是针对域名或者ip做的签名,如果ip变了证书就失效了,这也是为什么建议使用hostname来代替ip
如果你是用kubeadm init 来创建的集群,那么你需要导出一个kubeadm配置
1kubectl -n kube-system get configmap kubeadm-config -o jsonpath='{.data.ClusterConfiguration}' > kubeadm.yaml
添加证书SANs信息123456789101 ...
使用kubeasz搭建一套高可用的Kubernetes集群
kubeasz 是基于ansible和shell制作的工具,可以快速搭建一个高可用的k8s集群(二进制部署),不需要额外的负载均衡。项目地址:https://github.com/easzlab/kubeasz, kubeasz 每个版本对应了支持的k8s版本, 可以到项目主页查看, 这里使用 kubeasz版本3.0.0, 部署k8s 1.18.2
另见kubeadm部署在centos使用kubeadm部署k8s在ubuntu使用kubeadm部署k8s
安装准备准备机器如下:
机器
IP
kubeasz操作机
10.0.0.7
master1
10.0.0.31
master2
10.0.0.32
master3
10.0.0.33
worker1
10.0.0.41
首先确保操作机可以通过ssh连接到其他所有机器,最好密钥打通(这是使用ansible的必要条件)
安装kubeasz安装ansible12yum install epel-release -yyum install ansible -y
下载ezdown部署工具123export ...
Kubernetes集群调度之节点亲和性、Pod亲和性、污点与容忍
调度器Scheduler 是 Kubernetes 的调度器,主要的任务是把定义的 pod 分配到集群的节点上。听起来非常简单,但有很多要考虑的问题:
公平:如何保证每个节点都能被分配资源
资源高效利用:集群所有资源最大化被使用
效率:调度的性能要好,能够尽快地对大批量的 pod 完成调度工作
灵活:允许用户根据自己的需求控制调度的逻辑k
Scheduler 是作为单独的程序运行的,启动之后会一直监听 API Server,获取PodSpec.NodeName为空的 pod,对每个 pod 都会创建一个 binding(必须遵守的),表明该 pod 应该放到哪个节点上
调度过程调度分为几个步骤:
首先是过滤掉不满足条件的节点,这个过程称为predicate(预选);
然后对通过的节点按照优先级排序,这个是priority(优选);
最后从中选择优先级最高的节点。
Predicate(预选)有一系列的算法可以使用:
算法
说明
PodFitsResources
节点上剩余的资源是否大于 pod 请求的资源
PodFitsHost
如果 pod 指定了 NodeNa ...
MySQL主从同步配置
主从同步可以相当于实时备份,读写分离还能提高数据库的性能,记录一下主从同步的配置
不停机增加从库可以查看优雅地给正在运行的MySQL添加从库
一.准备
主从数据库版本最好一致
保证数据库的uuid不一致
服务器
ip地址
MySQL Master
192.168.21.53
MySQL Slave
192.168.21.54
二.操作主数据库操作开启binlog123[mysqld]log_bin=mysql-binserver-id=1
这里注意server-id主从不能一样, 配置完成重启mysql
创建用于同步的用户账号登陆数据库
1mysql -hlocalhost -uroot -ppassword
创建用户并授权
1CREATE USER 'repl'@'%' IDENTIFIED BY 'A4MyDNdzpHvg5M02KRtm';
授权
12GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';flush p ...
Docker容器间优雅的互联
本文主要介绍如何优雅的让Docker容器和Docker容器之间相互通信,以及Docker容器如何和宿主机进行网络通信。
容器间网络通信docker容器间通信常见的方式是使用 –link 进行连接,但是Docker已经弃用这种方式,并且容器数量一旦一多,–link 会显得很乱。官方推荐使用自定义网络来进行互联。
创建自定义网络1docker network create my-network
创建容器使用自定义network比如一个nginx容器需要访问php容器
12docker run -p 80:80 --network my-network nginxdocker run --name php --network my-network php
这个时候nginx可以直接通过php来访问php容器,打开/etc/hosts可以发现是docker自动帮你添加了解析
容器访问主机服务可以使用容器的网关IP来访问(nat网络),不过使用ip不优雅,旧版本的Docker可以使用host.docker.internal来访问主机,新版本的无法直接访问,可以通过 doc ...
Elasticsearch常用API操作
如果有Kibana的话,以下所有操作都可以在Kibana的DevTools页面进行调试,可以免去认证操作。
接口
功能
/_cat/health?v
集群健康状态
/_cat/shards
分片信息
/_cat/nodes
节点信息
/_cat/indices
索引信息
?v 是详细信息输出
删除索引1curl -u elastic:xlFnyMMyZiqjkzLIV5Kd -s -XDELETE 192.168.13.127:9200/索引名字
索引名字可以通过查看索引接口查看
修改密码1curl -H "Content-Type:application/json" -XPOST -u elastic:xlFnyMMyZiqjkzLIV5Kd 'http://127.0.0.1:9200/_xpack/security/user/elastic/_password' -d '{ "password" : "123456" }'
...
MySQL常用操作记录
记录一下日常工作中常用到的MySQL语句和一些配置等,方便日后查询
用户授权相关创建用户MySQL 5.7及以下版本MySQL 8.01CREATE USER 'root'@'%' IDENTIFIED BY '123456';1CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
修改密码MySQL 5.7及以下版本MySQL 8.01ALTER USER 'root'@'%' IDENTIFIED BY '123456';1ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
授权1Grant all privileges on *.* to 'ro ...