kubectl相关
-
关键词概念
Pods
Labels
Replication Controller
Services
Volumes
kubectl命令详细说明 -
获取pod列表
# 命令会返回当前kubernetes 已经创建的pods列表,主要会显示以下信息 # NAME READY STATUS RESTARTS AGE $ kubectl get pod # NAME READY STATUS RESTARTS AGE # etcd-global-9002d 1/1 Running 0 2d # etcd-global-l3ph8 1/1 Running 0 2d # etcd-global-psj52 1/1 Running 0 2d
-
查看pod详细信息
# 使用pod名称查看pod的详细信息, 主要是容器的详细信息 $ kubectl describe pod etcd-global-9002d
-
查询部署列表
# 获取部署列表 $ kubectl get deployment
-
删除部署
# 删除名称为etcd-minikube的部署 $ kubectl delete deployment etcd-minikube
-
删除容器
# 删除rc,即删除该rc控制的所有容器 $ kubectl delete rc my-nginx # 删除svc,即删除分配的虚拟IP $ kubectl delete svc my-ngin
-
获取Replication Controller
# 获取Replication Controller列表 $ kubectl get rc
-
通过外部访问kubectl内部的端口
# expose命令将会创建一个service,将本地(某个节点上)的一个随机端口关联到容器中的80端口 $ kubectl expose rc my-nginx --port=80 --type=LoadBalancer
-
查询服务信息
# 以上通过expose创建了一个叫my-nginx的service,我们可以通过以下命令查询服务信息 $ kubectl get svc my-nginx
-
根据配置文件创建pod
# 根据配置文件*.yaml创建容器 $ kubectl create -f ./hello-world.yaml
-
配置文件正确性校验
# 使用--vaildate参数可以校验配置文件正确性 $ kubectl create -f ./hello-world.yaml --validate
-
查看日志
# 查看vttablet的日志 $ kubectl logs vttablet-100 vttablet # 查看vttablet中mysql的日志 $ kubectl logs vttablet-100 mysql
-
shell登录
# 通过kubectl exec 可以直接连接到对应的节点 $ kubectl exec vttablet-100 -c vttablet -t -i -- bash -il
-
查看service详细信息
kubectl describe service etcd-global
-
RC副本数量修改
# 可以通过本地动态修改RC副本数量实现动态扩容缩容 kubectl scale rc xxxx --replicas=3
-
查询Replica Set
kubectl get rs
-
查看Endpoints列表
# 查看Endpoints 列表 # Endpoint => (Pod Ip + ContainerPort) kubectl get endpoints
-
查看namespaces
kubectl get namespace
-
Node的隔离与恢复
# 隔离Node,新创建的Pod不会在改node上创建了,但是已经创建的不会自动关闭 kubectl patch node xxx -p '{"spec":{"unschedulable":true}}' # 解除Node的隔离, 可以在上面继续创建pod kubectl patch node xxx -p '{"spec":{"unschedulable":false}}' # 隔离还可以通过kubectl replace -f xxx.yaml 命令实现
-
Pod添加/删除/修改Label
# 给pod xxx添加Lable app=vitess kubectl label pod xxx app=vitess # 删除pod xxx的Lable app kubectl label pod xxx app- # 修改pod xxx的标签 kubectl label pod xxx app=mysql --overwrite
-
查看Pod日志
# 查看Pod下对应容器的日志, 使用-f可以直接监听文件变化 $ kubectl logs -f <POD_NAME> -c <CONTAINER_NAME>
查看Pod之前状态
# 如果容器被kill的话可以通过以下命令查看容器关闭的原因,比如oom这类就可以查看 $ kubectl get pod -o go-template='{{range.status.containerStatuses}}{{"Container Name: "}}{{.name}}{{" LastState: "}}{{.lastState}}{{end}}' simmemleak-60xbc
查看归属某个Zone的Node$ kubectl get nodes -lzone