DRF
DRFDRF(Django Rest Framework)是可以快速基于Restful开发的Django应用的插件,功能非常多。
安装pip install djangorestframework
Django需要2.2
注册settings.py中增加
INSTALLED_APPS = [
...
'rest_framework',
]
注册他,可以使用它提供的网页。也可以不注册,使用PostMan调试
序列化器采用前后端分离后,前端与后端交互实际上使用的只是JSON数据
序列化:后端查数据库获得模型类,发给前端的数据就是JSON字符串,核心就是如何把实例序列化成JSON发给浏览器
实例转换为字典,如何做,使用序列化器
字典转换为JSON字符串,使用json模块的dumps
反序列化:前端浏览器发请求报文到 后端,封装为request请求对象,提交的数据是JSON字符串,需要反序列化
JSON字符串转换为字典谁来做? json.loads
字典=>?
序列化器类DRF中序列化器的作用
将实例序列化为字典
反序列化后得到字典,交给序列化器进 ...
DRF视图
DRF视图请求参数利用HTTP请求报文传递参数有3种方式
查询字符串,GET方法,参数在URL中,http://127.0.0.1:8000/emp/?x=123x=abc
表单,前端网页中填写表单,一般使用POST方法,参数在body中
POST /xxx/yyy?id=5&name=magedu HTTP/1.1
HOST: 127.0.0.1:9999
content-length: 26
content-type: application/x-www-form-urlencoded
age=5&weight=80&height=170
也可以POST、PUT提交JSON格式数据3. URL本身就是数据的表达,http://127.0.0.1:8080/python/2010/u101
请求方法method表示CRUD
也可以使用查询字符串,例如分页?page=5
也可以提交数据
Django视图原理:Django的视图都从View类开始,View.as_view()方法本质:
URL映射当中需要路径映射到视图函数,在as_view()方 ...
分析ExitCode定位Pod异常退出原因
使用kubectl describe pod <pod name>查看异常 pod 的状态:
Containers :
kubedns :
Container ID :
docker ://5fb8adf9ee62afc6d3f6f3d9590041818750b392dff015d7091eaaf99cf1c945
Image: ccr.ccs.tencentyun.com/library/kubedns-amd64:1.14.4
Image ID: docker-pullable://ccr.ccs.tencentyun.com/library/kubedns- amd64@sha256:40790881bbe9ef4ae4ff7fe8b892498eecb7fe6dcc22661402f271e03f7de344
Ports: 10053/UDP, 10053/TCP, 10055/TCP
...
容器进程退出原因
容器进程如果是自己主动退出(不是被外界中断杀死), 退出状态码一般在 0-128 之间, 根据约定, 正 常退出时状态码为 0, 1-127 说明是程序发生异常, 主动退出了, 比如检测到启动的参数和条件不满 足要求, 或者运行过程中发生 panic 但没有捕获处理导致程序退出。 除了可能是业务程序 BUG, 还 有其它许多可能原因
DNS 无法解析可能程序依赖 集群 DNS 服务, 比如启动时连接数据库, 数据库使用 service 名称或外部域名都需 要 DNS 解析, 如果解析失败程序将报错并主动退出。 解析失败的可能原因:
集群网络有问题, Pod 连不上集群 DNS 服务
集群 DNS 服务挂了, 无法响应解析请求
Service 或域名地址配置有误, 本身是无法解析的地址
程序配置有误
配置文件格式错误, 程序启动解析配置失败报错退出
配置内容不符合规范, 比如配置中某个字段是必选但没有填写, 配置校验不通过, 程序报错主动退出
kubernetes 磁盘爆满故障处理
一、什么情况下磁盘可能会爆满 ?kubelet 有 gc 和驱逐机制,通过 --image-gc-high-threshold,--image-gc-low- threshold,--eviction-hard,--eviction-soft,--eviction-minimum-reclaim 等参数控制 kubelet 的 gc 和驱逐策略来释放磁盘空间,如果配置正确的情况下,磁盘一般不会爆满。
通常导致爆满的原因可能是配置不正确或者节点上有其它非 K8S 管理的进程在不断写数据到磁盘占用 大量空间导致磁盘爆满。
二、磁盘爆满会有什么影响 ?影响 K8S 运行我们主要关注 kubelet 和容器运行时这两个最关键的组件,它们所使用的目录通常不 一样,kubelet 一般不会单独挂盘,直接使用系统磁盘,因为通常占用空间不会很大,容器运行时单 独挂盘的场景比较多,当磁盘爆满的时候我们也要看 kubelet 和 容器运行时使用的目录是否在这个 磁盘,通过 df 命令可以查看磁盘挂载点。
容器运行时使用的目录所在磁盘爆满
如果容器运行时使用的目录所在磁盘空间爆满,可能会造成容 ...
Jenkins用户权限控制插件——Role-based Authorization Strategy
看了下公司的jenkins权限配置,发现公司用的是Role-based AuthorizationStrategy插件做的权限控制(之前公司一直用的是安全矩阵的方式控制的) 这里就大概记录一下吧
使用Role-based Authorization Strategy这个插件需要在jenkins插件里搜索并下载下载成功后重启jenkins,发现在jenkins管理中会多出一个Manage and Assign Roles,如下图:
点进去可以分别管理角色和给用户分配角色:
我们首先看下Manage Roles:
这里包括几个选项,Global roles :这个选项是添加一个角色,该角色对项目可以有哪些权限,一般会给开放分配build,cancel等权限,每个公司不太一样Project roles:这个选项就是添加一个可以对哪些job进行操作的角色权限,Role是角色名,会在Assign Roles里展示的,Pattern是匹配项目,比如你的项目名是dys-web-prod,那么这里就要写dys-web-.*进行匹配(我个人测试的结果是这样的)Slave roles:这个公司 ...
Pod异常状态排错
一、常用命令首先列出Pod排查过程中我这边的常用命令:
查看Pod状态:kubectl get pod podname -o wide
查看Pod的yaml配置:kubectl get pods podname -o yaml
查看pod事件:kubectl describe pods podname
查看容器日志:kubectl logs podsname -c container-name
二、Pod状态
Error:Pod 启动过程中发生错误
NodeLost : Pod 所在节点失联
Unkown : Pod 所在节点失联或其它未知异常
Waiting : Pod 等待启动
Pending : Pod 等待被调度
ContainerCreating : Pod 容器正在被创建
Terminating : Pod 正在被销毁
CrashLoopBackOff : 容器退出,kubelet 正在将它重启
InvalidImageName : 无法解析镜像名称
ImageInspectError : 无法校验镜像
ErrImageNeverPull : 策略禁止拉取镜像
I ...
防止内存碎片化
在长时间运行的Linux操作系统中,系统日志有时会出现无法分配高阶内存的报错信息:
Aug 4 22:58:15 server1 kernel: : [69229257.683658] xenwatch: page allocation failure. order:4, mode:0xd0
Aug 4 22:58:15 server1 kernel: : [69229257.683665] Pid: 168, comm: xenwatch Tainted: GF --------------- 2.6.32-358.23.2.el5.x86_64 #1
Aug 4 22:58:15 server1 kernel: : [69229257.683672] Call Trace:
Aug 4 22:58:15 server1 kernel: : [69229257.683688] [<ffffffff8112723a>] ? __alloc_pages_nodemask+0x67a/0x8c0
Aug 4 22:58:15 ser ...
基于centos7的Openssh版本升级
一、环境准备
yum -y install wget tar gcc make
二、上传升级的软件包
zlib-1.2.11.tar.gz,openssl-1.1.1d .tar.gz,openssh-9.0p1.tar.gz 下载地址:
zlib:官网http://www.zlib.net/ wget https://nchc.dl.sourceforge.net/project/libpng/zlib/1.2.11/zlib-1.2.11.tar.gzopenssl:wget https://www.openssl.org/source/openssl-1.1.1d.tar.gzopenssh:https://mirrors.sonic.net/pub/OpenBSD/OpenSSH/portable/
上传到服务器并解压三、安装libz
cd zlib-1.2.11
./configure --prefix=/usr/local/zlib
make && make install
四、安装openssl
cd openssl-1.1.1d
./config ...
使用阿里云oss静态页面部署服务
一、使用阿里云OSS静态页面部署公司服务场景:因公司新业务需要将项目部署在阿里云oss上,并配置域名解析
创建bucket桶注意:读写权限选择公共读
将bucket上传到bucket中
配置静态页面
如果不配置静态页面会无法访问,注意要添加默认404规则,如果不添加则会报下面的错误:
添加域名解析
查看oss外网访问域名,在域名解析界面将二级域名指向oss的外网域名,如果公司有内网dns则需要在内网dns中也添加相关记录