Kubernetes控制命令kubectl汇总

Kubernetes控制命令kubectl汇总

kubectl 作为Kubernetes集群管理的命令行工具,经常用到的几个子命令包括:

  • kubectl get – list resources
  • kubectl describe – show detailed information about a resource
  • kubectl logs – print the logs from a container in a pod
  • kubectl exec – execute a command on a container in a pod

按类型分

集群状态

kubectl cluster-info

get 获取信息

kubectl get nodes
kubectl get deployments
kubectl get pods
# 更详细的信息
kubectl get pods -o wide
kubectl get componentstatuses

logs 获取容器日志

POD_NAME=$(kubectl get pods -l run=nginx -o jsonpath="{.items[0].metadata.name}")
kubectl logs $POD_NAME

exec 在容器执行命令

kubectl exec -ti -- $POD_NAME <command>

配置

# 基于配置文件创建pod
kubectl create -f <config.yaml>
# 创建其他资源
kubectl create secret generic kubernetes-bootcamp --from-literal="mykey=mydata"

按使用场景

部署容器镜像

## 部署
kubectl run <deployment name>  —image=<full url>  —port=8080
# 例如
kubectl run kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 --port=8080
kubectl run busybox --image=busybox

# 检查
kubectl get deployments
# 使用标签过滤
kubectl get pods -l run=busybox

## 升级
kubectl set image ...

暴露服务

# 使API Server监听本地的8001端口
kubectl proxy
# 使用NodePort服务方式暴露部署
kubectl expose deployment nginx --port 80 --type NodePort
# 标签标记
kubectl label
# 检查
kubectl get services

自动扩容

kubectl scale <deployment>  —replicas=5

升级及回滚

kubectl rollout status …
kubectl rollout undo <deployment>

电音欣赏

电音欣赏

去年下半年玩王者荣耀(年前已出坑)的收获之一就是接触了电音,当时找一些攻略视频看,背景音乐都很带劲,于是通过网易云音乐的歌单发现了电音的广阔天地.

从个人爱好说,超喜欢铁托,那首BOOM就很魔性. 其他DJ有Deorro(Five Hours必听),Timmy Trumpet,Zedd.

欢迎收听我的歌单: http://music.163.com/#/playlist?id=969925767

Kubernetes生产环境部署

Kubernetes生产环境部署

众所周知Kubernetes集群的部署比较繁琐复杂,这里列出常见的几种部署方式及过程.

官方现在提供2种主要的部署方式:

  • Kubespray : 基于Ansible的集群自动化部署,支持的平台更广泛,部署更灵活
  • Kubernetes Operations (kops): 生产环境集群自动化部署工具, 目前只支持AWS, GCE云环境.

TBC.

扩展阅读

Web测试及工具

Web测试及工具

整理下测试相关的东西在这里。

说到Web网页自动化测试,事实上的唯一标准就是基于WebDriver/Selenium的实现了。

说明: WebDriver 等同于Selenium2

WebDriver 介绍

WebDriver 是一个跨浏览器的网站自动化测试API,主要包含以下几方面

  • Browser Control: navigation, snapshotting, window control, override geolocation
  • User input simulation: mouse, keyborad, file uploads, altert handling
  • Web stuff: find/query elements, evaluate JavaScript, manipulate cookies

    Read More Read More

接口测试及工具

接口测试及工具

接口(API)测试随着REST的流行有个越来越多的应用,而基于测试金字塔理论,偏底层的接口测试是投入产出最高的。

接口测试基本操作:

  • 生成符合协议格式的请求数据
  • 向指定接口发送数据并接受响应
  • 验证响应码并解析响应内容,确保符合预期数据

接口测试的用例分以下两类:

  • 单接口用例: 主要测试不同参数数据组合得到的响应符合期望值
  • 多接口业务用例 : 更偏向业务的实际应用场景,尽量提高覆盖

通常情况下,接口测试自动化实现会基于单元测试框架作为测试脚本的运行驱动, 为减少数据依赖通常会引入Mock数据. 最终部署形式通常与CI系统(Jenkins)整合.

以下为接口测试的相关工具/框架:

基础库

Java的生态相对成熟丰富, 牵涉到几个常用库:

  • rest-assured: 更友好的DSL测试语法
  • Hamcrest : 灵活的匹配表达式(matchers),新版JUnit已内置;支持多语言
  • WireMock: HTTP服务Mock工具

流行工具

Diffy : Twitter开源的回归测试工具, 通过代理的形式比较响应内容,验证新代码是否引入缺陷

扩展阅读

相关链接

其他

有些项目已不再维护,供学习参考。

  • WeTest:微博开源的基于JUnit4的轻量级接口自动化测试框架
  • zato-apitest: python实现,略显繁琐
用Makefile简化重复的多个命令

用Makefile简化重复的多个命令

经常会通过编译安装一些Linux包,最熟悉的就是make test, make install 这类命令了,以为make只适用于编译安装.
实际上发现Makefile/makefile在简化一些常用命令(多行命令或长命令)时也非常方便.

# Makefile
install:
    @go get github.com/revel/cmd/revel
    @dep ensure
server:
    revel run github.com/xulz/webapp

Makefile规则

<目标>:<执行的前提条件,即有文件更新才执行>
(tab) 具体的命令

  • 默认执行第一个目标.
  • 在命令前添加@ 表示不打印正在执行的命令

Makefile的一些语法

# 定义变量, 使用 $(LDIR) 引用
LDIR =../lib

自动化变量:
* $< 表示所有的依赖目标集
* $@ 表示目标集

调试

带参数 -n或–just-print, 只显示命令而不执行.

扩展阅读

用Jupyter/iPython Notebook做笔记

用Jupyter/iPython Notebook做笔记

ipython作为一个必备的学习/调试环境, notebook可以看做其增强版, 支持Markdown格式说明, 很适合用笔记或者演示/培训用途,基本是机器学习的标配.

安装及运行

python3 -m pip install jupyter
jupyter notebook

新版的iPython要求Python 3.3以上,因此建议在python3环境使用

如果在本地没有运行环境,有想打开一个包含笔记的GitHub仓库, 可以使用binder在云端打开.

更多使用笔记之后更新.

扩展阅读

你的网站账号密码安全吗

你的网站账号密码安全吗

今天看了Django开发者的一篇文章,关于web安全的子项目, 其中提到了一个用于检测用户密码是否安全的API.

不同于普通的密码强度检测,它的检测原理基于最近这些年大型的互联网公司数据库泄漏事件,比如CSDN,天涯,HiAPK安卓网,网易等.

对普通用户,提供两个主要的网页查询功能:

  • 你邮件账户的密码是否已泄漏[1]
  • 你正在使用的密码是否存在于泄漏数据库及被其他用户泄漏的次数[2]

    Read More Read More

回到WordPress

回到WordPress

最近几年博客经历

3年前改用Evernote做笔记,因为很少写博客的原因停掉了国外共享主机的wordpress,之前的内容也迁移到了Blogger平台(国内不可访问,仅作为备份).

后来为了学习git和markdown,也时常在GitHub上写笔记.

久闻Go大名已久,在听了播客内核恐慌某期讲静态博客后,尝试了高性能的Hugo.

去年总收到阿里云的广告促销,也想有一个移动版调试系统,就购买了云主机,把域名也迁到了国内.

在上面部署了静态博客, 由于Hugo/Lektor缺乏好用的主题,最后使用了已有所了解的Hexo. 也就有了前两篇搭建博客的记录文章.

WordPress

又回到WordPress,其实是为了让写博客这件事变得简单. 不管静态博客还是新生代Ghost,最终用下来的感觉是表面看似简洁的新博客使用起来并不简单.

例如静态博客, 需要git版本管理,每次修改需要commit/push, Hexo需要generate/deploy(虽然这一步在Github Pages可以hook自动化),有时候还需要clean,而生成静态页面/rsync并不像Hugo那么智能高效.

由于云主机几乎没有资源占用率,实际上新版WordPress有很大改进,在插件优化之后,安装前后资源占用几乎没有变化.

之前WordPress使用时间比较长,对插件/主题比较熟悉,只记录下关键步骤.

Read More Read More