好久没写博客了,前段时间公司搞997太凶残。997结束也快1个礼拜了,终于缓过来一点了,先来两篇轻松点文章,然后再来点干活,写一个kubernetes的系列。这篇主要介绍一下kubernetes相关的命令,供初接触kubernetes的参考。
kubernetes通过kube-apiserver作为整个集群管理的入口。Apiserver是整个集群的主管理节点,用户通过Apiserver配置和组织集群,同时集群中各个节点同etcd存储的交互也是通过Apiserver进行交互。Apiserver实现了一套RESTfull的接口,用户可以直接使用API同Apiserver交互。另外官方还提供了一个客户端kubectl随工具集打包,用于可直接通过kubectl以命令行的方式同集群交互。
由于博主水平有限,本文主要介绍一些博主在日常中经常使用到的命令,另外最近正式release的kubernetes 1.2中新加入的的一些feature,由于博主也还没有深入研究,所以不会太多涉及。
-
Usage:
-
kubectl
[flags]
-
kubectl
[commond]
另外所有的命令选项都可以通过执行 --help获得特定命令的帮助信息。
-
Usage:
-
kubectl get [(-o
|--output=)json|yaml
|wide|go-template=...
|go-template-file=...|jsonpath=...
|jsonpath-file=...] (TYPE [NAME | -l label]
| TYPE/NAME ...) [flags] [flags]
1)例如获取pod信息,可以直接使用"kubectl get po“获取当前运行的所有pods的信息,或使用”kubectl get po -o wide“获取pod运行在哪个节点上的信息。注:集群中可以创建多个namespace,未显示的指定namespace的情况下,所有操作都是针对default namespace。如下图所示列出了default 和kube-system的pods:
# kubectl get namespace
kubectl get po rc-nginx-2-btv4j -o=custom-columns=LABELS:.metadata.labels.app
kubectl describe po rc-nginx-2-btv4j
-
apiVersion: v1
-
kind: ReplicationController
-
metadata:
-
name: rc-nginx-
2
-
spec:
-
replicas:
2
-
template:
-
metadata:
-
labels:
-
app: nginx-
2
-
spec:
-
containers:
-
-
name: nginx-
2
-
image: xingwangc.docker.rg/nginx
-
ports:
-
- containerPort:
80
直接使用create则可以基于rc-nginx.yaml文件创建出ReplicationController(rc),rc会创建两个副本:
kubectl create -f rc-nginx.yaml
创建后,使用“kubectl get rc”可以看到一个名为rc-nginx-2的ReplicationController将被创建,同时“kubectl get po”的结果中会多出两个前缀为“rc-nginx-2-”的pod。关于kubernetes集群中resource,pod, ReplicationController…等后续会新开博文详细介绍。
kubectl replace -f rc-nginx.yaml
kubectl patch pod rc-nginx-2-kpiqt -p '{"metadata":{"labels":{"app":"nginx-3"}}}'
kubectl edit po rc-nginx-btv4j
上面命令的效果等效于:
-
kubectl
get po rc-nginx-btv4j -o yaml >> /tmp/nginx-tmp.yaml
-
vim /tmp/nginx-tmp.yaml
-
/*
do some changes here */
-
kubectl
replace -f /tmp/nginx-tmp.yaml
-
kubectl
delete -f rc-nginx.yaml
-
kubectl
delete po rc-nginx-btv4j
-
kubectl
delete po -lapp=nginx
-2
kubectl logs rc-nginx-2-kpiqt
kubectl rolling-update rc-nginx-2 -f rc-nginx.yaml
如果在升级过程中,发现有问题还可以中途停止update,并回滚到前面版本
kubectl rolling-update rc-nginx-2 —rollback
rolling-update还有很多其他选项提供丰富的功能,如—update-period指定间隔周期,使用时可以使用-h查看help信息
kubectl scale rc rc-nginx-3 —replicas=4
重新缩减副本数到2:
kubectl scale rc rc-nginx-3 —replicas=2
kubectl autoscale rc rc-nginx-3 —min=1 —max=4
kubectl attach kube-dns-v9-rcfuk -c skydns —namespace=kube-system