k8s基本命令

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
日志服务 SLS,月写入数据量 50GB 1个月
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: k8s基本命令
查看pod的描述信息

kubectl describe pod podName

查看所有namespace下的pod

kubectl get pods --all-namespaces

按phase筛选pod

kubectl get pods --field-selector status.phase=Running

查看node的信息(包括node 资源使用状况、污点)

kubectl describe node node-name

查看node资源使用状况

kubectl top node

查看现有的pod和svc状态

kubectl get pods,svc

查看pod日志(or 容器日志)
  • kubectl logs [-c ]

kubectl logs -f # 实时查看日志

查看pod资源使用情况

kubectl top pod

查看node的label

kubectl get node --show-labels


默认情况下,scheduler会将pod调度到所有可用的Node,不过有些情况我们希望将 Pod 部署到指定的 Node,比如将有大量磁盘 I/O 的 Pod 部署到配置了 SSD 的 Node;或者 Pod 需要 GPU,需要运行在配置了 GPU 的节点上。

kubernetes通过label来实现这个功能

label 是 key-value 对,各种资源都可以设置 label,灵活添加各种自定义属性,比如执行如下命令标注 k8s-node1 是配置了 SSD 的节点

首先我们给k8s-node1节点打上一个ssd的标签

kubectl label node k8s-node1 disktype=ssd

有了自定义的标签,只需要在配置文件中定义 nodeselector 为这个自定义标签,就可以指定pod在k8s-node1中运行


删除taint

kubectl taint node node1 key1-            删除指定key所有的effect

查看资源对象

kubectl get pod -l "key=value,key=value" -n kube-system (-l 标签选择器(多个的话是与逻辑),-n 指定命名空间,不指定默认default)

kubectl get pod -l "key1 in (val1,val2),!key2" -L key (-l 基于集合的标签选择器, -L查询结果显示标签) 注意:为了避免和shell解释器解析!,必须要为此类表达式使用单引号

kubectl get pod -w(-w 监视资源变动信息)

kubectl get pods -o wide    # -o wide可以显示更多资源信息,比如pod的IP等

打印容器中日志信息

kubectl logs name -f -c container_name -n kube-system (-f 持续监控,-c如果pod中只有一个容器不用加)

在容器中执行命令

kubectl exec name -c container_name -n kube-system -- 具体命令

kubectl exec -it pod_name /bin/sh 进入容器的交互式shell

标签管理

kubectl label pods/pod_name key=value 添加标签,如果是修改的话需要后面添加--overwrite

kubectl label nodes node_name key=value 给工作节点添加标签,后续可以使用nodeSelector来指定pod被调度到指定的工作节点上运行

kubectl label nodes  -   删除节点标签

节点管理

kubectl cordon my-node      

# 标记 my-node 为 unschedulable,禁止pod被调度过来。注意这时现有的pod还会继续运行,不会被驱逐。

kubectl uncordon my-node

# 与cordon相反,标记 my-node 为 允许调度。

kubectl drain  my-node

# drain字面意思为排水,实际就是把my-node的pod平滑切换到其他node,同时标记pod为unschedulable,也就是包含了cordon命令。

# 但是直接使用命令一般不会成功,建议在要维护节点时,加上以下参数:

kubectl drain my-node  --ignore-daemonsets  --force  --delete-local-data  

# --ignore-daemonsets 忽略daemonset部署的pod

# --force 直接删除不由workload对象(Deployment、Job等)管理的pod

# --delete-local-data  直接删除挂载有本地目录(empty-dir方式)的pod

删除pod或service

非特殊状态删除pod

kubectl --kubeconfig=/root/.kube/config delete pods podname(如vnc-577818) --now=true --wait=true --timeout=30s


特殊状态(Terminating、Unknown)删除pod

kubectl delete pods  --grace-period=0 --force


删除服务service

kubectl delete services podname

kubectl delete services podname-22

进入节点node后,查看k8s日志

journalctl -xefu kubelet

查看所有service

kubectl get service

修改service配置文件

kubectl edit svc [service名字]

查看k8s服务状态及配置信息

systemctl status kubelet -l

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
6月前
|
运维 Kubernetes 监控
揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?
揭秘高效运维:如何用kubectl top命令实时监控K8s资源使用情况?
1937 0
|
6月前
|
Kubernetes 应用服务中间件 API
Kubernetes(K8S)命令指南
Kubernetes(K8S)命令指南
221 0
|
Kubernetes 调度 数据中心
K8S常用命令
K8S常用命令
174 0
|
Kubernetes 容器 Perl
k8s查看日志命令—2023.02
k8s查看日志命令—2023.02
204 0
|
6月前
|
运维 Kubernetes 容器
K8S运维命令必备kubectl命令总结
K8S运维命令必备kubectl命令总结
99 3
|
6月前
|
iOS开发 MacOS Windows
|
1月前
|
缓存 Kubernetes 应用服务中间件
k8s学习--helm的详细解释及安装和常用命令
k8s学习--helm的详细解释及安装和常用命令
k8s学习--helm的详细解释及安装和常用命令
|
3月前
|
Kubernetes Shell Docker
在K8S中,如果容器没有bash命令,如何进⼊容器排查问题?
在K8S中,如果容器没有bash命令,如何进⼊容器排查问题?
|
3月前
|
Kubernetes Docker 容器
Kubernetes(K8S) 常用命令
Kubernetes(K8S) 常用命令
48 0
|
3月前
|
Kubernetes 监控 Shell
掌握Kubernetes故障排除技巧:kubectl命令的基本指南
以上是使用 `kubectl` 进行故障排除的一些基本指南。熟悉这些命令能够帮助您快速定位和解决在Kubernetes集群中遇到的问题。在实际使用中,您可能还需要结合其他工具和资源,如官方文档、社区论坛以及第三方监控和日志服务来进行更深入的故障诊断和排除。
95 0