Kubernetes使用NFS作为存储
我们玩单机的容器,如果需要持久化的话,需要将容器目录映射到主机,但是在K8S环境下容器是可能会被调度到任意节点的,所以需要使用远程服务存储数据。在云平台上都会提供自己的云盘存储,但是自己搭建的Kubernetes没有办法使用云盘做存储,所以需要用自己搭建的存储,NFS是比较常见的一种,其他还有glusterfs、ceph等。
关于NFS搭建教程,可以查看https://zahui.fan/posts/4b677f68/容器镜像开源地址https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner
安装NFS client工具所有的worker节点上都需要安装NFS client
Ubuntu
1sudo apt install nfs-common -y
CentOS
1sudo yum install nfs-utils -y
rbac授权rbac.yml
12345678910111213141516171819202122232425262728293031323334353637383940 ...
Kubernetes之ingress-nginx安装配置
部署ingress-nginx
ingress-nginx 官方文档 https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal-clusters自建的Kubernetes可以参数bare-metal安装
1kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.2/deploy/static/provider/baremetal/deploy.yaml
部署成功后修改NodePort,把里面30xxx的端口换成你想要的端口
1kubectl edit service ingress-nginx-controller -n ingress-nginx
也可以wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.2/deploy/static/provider/baremetal/dep ...
Linux Shell 命令补全
12kubectl操作k8s集群,如何自动补全pod、service名字?kubectl的命令补全主要依赖于bash自动补全。
用户层级K8s命令自动补全1234yum install -y bash-completionsource /usr/share/bash-completion/bash_completionsource <(kubectl completion bash)echo "source <(kubectl completion bash)" >> ~/.bashrc
系统层级开启bash_completion把/etc/bash.bashrc如下几行的注释取消
12345678# enable bash completion in interactive shellsif ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_comp ...
Nginx使用module_vts模块来做监控
最近我们想要用Prometheus来监控Nginx的状态,所以看了一下有个module可以支持。项目地址在:https://github.com/vozlt/nginx-module-vts.git
重新编译Nginx首先执行nginx -V 查看编译参数,记录一下, 比如
1--prefix=/usr/local/nginx --user=www --group=www --with-stream --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-openssl=../openssl-1.1.1k --with-pcre=../pcre-8.45 --with-pcre-jit --with-ld-opt=-ljemall ...
正则表达式入门
在线测试正则表达式: https://c.runoob.com/front-end/854/
字符匹配普通字符:普通字符按照字面意义进行匹配,例如匹配字母 “a” 将匹配到文本中的 “a” 字符。
元字符:元字符具有特殊的含义,例如 \d 匹配任意数字字符,\w 匹配任意字母数字字符,. 匹配任意字符(除了换行符)等。
量词123456*:匹配前面的模式零次或多次。+:匹配前面的模式一次或多次。?:匹配前面的模式零次或一次。{n}:匹配前面的模式恰好 n 次。{n,}:匹配前面的模式至少 n 次。{n,m}:匹配前面的模式至少 n 次且不超过 m 次。
字符类12[ ]:匹配括号内的任意一个字符。例如,[abc] 匹配字符 "a"、"b" 或 "c"。[^ ]:匹配除了括号内的字符以外的任意一个字符。例如,[^abc] 匹配除了字符 "a"、"b" 或 "c" 以外的任意字符。
边界匹配1234^:匹 ...
Ansible系列之条件判断
在ansible中,使用when关键字来做条件判断,when关键字即为当条件成功就执行此条任务。在when判断中不需要加{{}}
字符串判断
判断符
说明
==
判断字符串是否相同,相同为真,不同为假
lower
是否全是小写,是为真,不是为假
upper
是否是纯大写,是为真,不是为假
in
判断字符串是否在另一个字符串中,是为真,不是为假
判断系统,不支持的系统直接报错退出
ansible_distribution是ansible自带变量,查看变量可以用ansible localhost -m setup命令。
12345---- hosts: all tasks: - fail: msg="this playbook don't support CentOS" when: ansible_distribution == "CentOS"
判断字符串大小写123456789101112---- hosts: all va ...
Linux的crontab无法执行的一些问题
crontab是linux平台的定时任务系统,不过有时候可以运行的命令或脚本在crontab里面就是不运行,下面找了一些可能的原因以及解决方案。
看不到日志一般来说,crontab的任务控制台输出会打到/var/spool/mail/<username>里面,然后通过email发出去crontab服务的运行的日志一般都在/var/log/cron里面,这个日志可以看到任务有没有执行
如果想将命令输出内容重定向到其他文件,可以在命令后添加2>&1, 不加2>&1错误日志看不到
1* * * * * date >> /tmp/cron.log 2>&1
环境变量的问题crontab环境变量和登录shell查看的环境变量是不同的,比如
1* * * * * env >> /tmp/env.log 2>&1
查看一下:
123456HOME=/home/iuxtLOGNAME=iuxtPATH=/usr/bin:/binLANG=C.UTF-8SHELL=/bin/shPWD=/home/iux ...
使用s6-Overlay来管理多进程容器
容器使用最佳实践是:一个容器运行一个进程,进程退出容器也就退出,很优雅是不是?但是…在日常工作中总有一些你懂的的原因,就需要多个进程塞在一个容器里面,那么我们可以怎么来管理容器内进程呢?这个时候容器内的进程管理工具就派上用场了。s6-Overlay就是其中之一s6-Overlay官方github地址:https://github.com/just-containers/s6-overlay
安装容器是通过判断pid=1的进程来判断容器是否工作正常的,也就是说s6-Overlay进程pid为1
通过官方安装脚本来安装
12345678FROM ubuntuADD https://github.com/just-containers/s6-overlay/releases/download/v2.2.0.1/s6-overlay-amd64-installer /tmp/RUN chmod +x /tmp/s6-overlay-amd64-installer && /tmp/s6-overlay-amd64-installer /RUN apt-get updat ...
Flask之服务端持久化session
需求如下:开发一个web界面,用户经过oauth认证后,给用户生成一个随机密码显示出来,并将用户名和密码发送给radiusserver用来当作WIFI密码。因为希望密码不要随便就更换,那样员工出去再进来,手机就需要重新输入新密码才能连WIFI,容易被人打。所以用session存储的方式,将密码保存一定时间。
什么是sessionsession基于cookie实现,保存在服务端的键值对(dict类型),同时在浏览器中的cookie中也对应一相同的随机字符串,用来再次请求的时候验证Flask中的session是加密的,所以需要配置SECRET_KEY
开始使用导入模块1from flask import Flask, render_template, request, session
配置SECRET_KEY1app.secret_key = os.getenv("SECRET_KEY", "not set key")
设置session类型可以存临时文件,还可以存redis、memcached、mongodb等
app.config[‘SESS ...
最后一个Typora免费版0.11.18
Typora是一个所见即所得的Markdown跨平台写作工具,目前已经发布正式版,并且更改为付费模式,0.11.18_beta是最后一个免费的测试版,有需要的可以选择下载。
Windows用户下载地址: https://github.com/iuxt/src/releases/download/2.0/typora-0-11-18.exe
0.11.18现在被远程施法了,会提示过期无法使用,可以使用0.9.96版
下载地址1:https://github.com/iuxt/src/releases/download/2.0/typora-setup-x64_0.9.96.exe
下载地址2:https://file.babudiu.com/f/x2ux/typora-setup-x64_0.9.96.exe
Mac用户下载地址1: https://github.com/iuxt/src/releases/download/2.0/typora-0-11-18.dmg
下载地址2:https://file.babudiu.com/f/vlsA/typora-0-11-18.dmg
U ...