date: 2020-06-28title: k8s常用指令 #标题
tags: k8s指令 #标签
categories: k8s # 分类
群集管理指令
查询集群中node或pod资源使用情况
$ kubectl top node # 将node改为pod,则表示查看pod的资源使用情况,可以加-A选项
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
master 196m 9% 1630Mi 56%
node01 67m 3% 1307Mi 45%
node02 77m 3% 929Mi 32%
显示集群组件信息
$ kubectl cluster-info
Kubernetes master is running at https://apiserver.demo:6443
KubeDNS is running at https://apiserver.demo:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://apiserver.demo:6443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
修改节点状态为可调度或不可调度
默认每个worker节点均可调度,但假设现在要重启某个worker节点,就可以暂时将此节点设置为不可调度,此时将阻止新的pod被调度到该节点上,但不影响任何已经在该节点上运行的pod。
# 设置为不可调度
$ kubectl cordon node02 # node02为节点主机名
# 设置为可调度
$ kubectl uncordon node02
注: DaemonSet Controller 创建的 Pod 将绕过 Kubernetes 调度器,并且忽略节点的 unschedulable 属性。也就是说,创建的daemonset资源对象,自动忽略节点的unschedulable属性。
设置所处名称空间
默认kubectl指令操作的是default名称空间的资源,可以通过—namespace来指定其他名称空间,但每条指令都需要指定比较麻烦,此时可以设置所处名称空间,那么后续所有命令都默认在此名称空间下执行。
# 设置所在名称空间为kube-system
$ kubectl config set-context --current --namespace=kube-system
Context "kubernetes-admin@kubernetes" modified.
# 确认
$ kubectl config view --minify | grep namespace:
namespace: kube-system
此时,再执行kubectl get pods
,将获取kube-system名称空间下的pod,如下:
查询在名称空间中的资源对象类型
$ kubectl api-resources --namespaced=true # 改为false即为查询不在名称空间中的资源对象
查询名称空间状态及标签
$ kubectl get ns --show-labels
NAME STATUS AGE LABELS
default Active 7d18h <none>
kube-node-lease Active 7d18h <none>
kube-public Active 7d18h <none>
kube-system Active 7d18h <none>
查询不在某个名称空间中的所有pod
# 查询不在名称空间 kube-system 中的所有pod
$ kubectl get pods -A --field-selector metadata.namespace!=kube-system
查询pod状态不是running且重启策略为always的pod:
$ kubectl get pods --field-selector=status.phase!=Running,spec.restartPolicy=Always
获取多种资源对象
查询所有的不在 default 名称空间的 StatefulSet 和 Service资源对象:
$ kubectl get statefulsets,services -A --field-selector metadata.namespace!=default
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-system service/kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 7d18h
kube-system service/kuboard NodePort 10.96.31.229 <none> 80:32567/TCP 7d17h
kube-system service/metrics-server ClusterIP 10.96.20.14 <none> 443/TCP 7d17h
查看service的详细信息
$ kubectl describe svc web-nginx # svc是service的简写
Name: web-nginx
Namespace: default
Labels: k8s.kuboard.cn/layer=web
k8s.kuboard.cn/name=web-nginx
Annotations: k8s.kuboard.cn/displayName: thisisawebnginx
k8s.kuboard.cn/workload: web-nginx
Selector: k8s.kuboard.cn/layer=web,k8s.kuboard.cn/name=web-nginx
Type: NodePort
IP: 10.96.114.119
Port: qgx3hw 80/TCP
TargetPort: 80/TCP
NodePort: qgx3hw 30123/TCP
Endpoints: 10.100.140.65:80,10.100.196.131:80
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>