k8s 基础命令和常用命令等

本文介绍了K8S中用于管理和操作资源的kubectl命令,包括查看集群健康、节点、Pods、Deployments、Services等。还涵盖了Docker命令的相似性,以及如何进行副本扩容、Pod删除、设置污点、问题定位等K8S运维场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过kubectl命令可以操作和管理K8S资源,对于初学者可以在掌握K8S基础命令的基础上再去学习K8s的原理和架构,那么K8S常用的命令有哪些呢?

01

K8S命令概述

在学习K8s基础命令前,了解和学习docker命令是很有必要的,kubectl和docker很多命令都有相通之处

docker ps #查看所有up状态容器
docker ps -a#查看所有状态的容器
docker inspect containerid#查看容器详情
docker images #查看容器镜像
docker start/stop/restart  containerid  #启动/停止/重启容器
docker exec -it containerid  bash  #进入容器
docker exec containerid  bash -c  'uptime'  #容器外执行命令
docker rmi imageid  #删除镜像
docker rm  containerid #删除容器
  • K8S常用命令

02

K8S集群资源操作

  • 集群资源查看
kubectl get cs  #集群健康情况
kubectl version  #K8S集群版本查看
kubectl get node #查看集群节点
kubectl get pods -o wide -A #查看所有命命空间pod
    -n  #后跟指定命名空间
    --all-namespaces #等同于-A
kubect get deployments -A
kubectl get svc,ep -A  #查看svc和endpoints
  • 标签查看
kubectl get pod --show-labels #查看pod标签
kubectl get node --show-labels  #查看node标签
  • 资源配置查看

查看配置

kubectl get deployments.apps nginxtest-xxx -oyaml #查看deployment资源
kubectl get pods nginxtest-xxx  -oyaml #查看pod资源配置
  • 资源限制

查看是否有资源限制

kubectl describe node 192.168.1.2

capacity代表减去系统预留的资源总量

Allocatable可分配给K8S资源的总量

pod资源限制,防止单个服务占用资源过高影响其他pod,达到limits数值后会oom重启

kubectl get pods  nginx-test -oyaml  | grep -A 6   resources
    resources:
      limits:
        cpu: "5"
        memory: 5000Mi
      requests:
        cpu: 55m
        memory: 100Mikubectl --help 多用help

03

K8S运维场景

  • 副本扩容

通过副本扩容实现流量分摊,避免单个节点负载过高,建议资源中增加反亲和性,达到不同副本调度到不同node

kubectl scale deployment nginx-test --replicas=2   #副本扩容
kubectl edit deployment nginx-test #直接编辑修改spec.replicas标签扩容
  • 进入pod
kubectl exec -it podname bash  #或者sh
-n 指定名字空间
kubectl exec nginx-965048598-jt28d -n test uptime  #不进入容器,只获取命令输出
  • pod删除操作
kubectl delete  pods nginx-test-6fc6d8666b-mhl48 #常规删除
kubectl delete pod -l app=test   #基于标签删除,批量操作效率高
kubectl delete pods nginx-test -n dev --grace-period=0 --force  #强制删除,没有terminationGracePeriodSeconds 30s的时间

还可以通过kubectl scale命令将副本缩为0的方式删除pod

  • pod污点

对于设置了污点的服务,普通pod无法调用到此节点,只有增加了Tolerations容忍配置才可以

[root@wpseco-node-1 log]# kubectl describe node 192.168.0.1  | grep Taints
Taints:             <none>

kubectl taint node 192.168.0.1 test-access-node=:NoSchedule --overwrite=true  #污点添加
kubectl taint node 192.168.0.1   test-access-node:NoSchedule-   #污点删除

其中[effect] 可取值:

NoSchedule :一定不能被调度(新来的不要来,在这的就别动了)

PreferNoSchedule:尽量不要调度(尽量不要来,除非没办法)

NoExecute:不仅不会调度,还会驱逐Node上已有的Pod

  • pod文件拷贝
kubectl cp my_item.tar.gz redis-6c98cb5b5f-nxb59:/tmp/   #宿主机拷贝到容器内
kubectl cp redis-6c98cb5b5f-nxb59:/tmp/start.sh  ./start.sh  #pod内文件拷贝到宿主机
  • 静态pod

静态pod 是由 kubelet 管理的,只在特定node上存在的pod;静态pod总是由kubelet创建的,并且只在kubelet所在的Node上运行。静态pod 不能通过 api-server来管理,无法和 RC,RS,Deployment或者 DaemonSet进行关联;并且 kubelet无法对静态pod 进行健康检查

静态pod资源文件默认存放路径/etc/kubernetes/manifests,也可以直接查看kubelet启动参数staticPodPath: /etc/kubernetes/manifests配置确定

kubectl exec -it  kafka-1-192.168.0.1 -c kafka sh #进入静态pod
-c #po有多个容器要加-c指定
 kubectl logs  kafka-1-192.168.0.1  -c kafka 

04

K8S问题定位

处理K8S环境问题,首先要了解pod的生命周期和pod的状态

常见状态原因

  • ImagePullBackOff 镜像拉取失败,网络不通,镜像名称有误或者镜像仓库认证失败都可能有这个报错
  • CrashLoopBackOff 探针检测失败,服务对网络或者其他pod服务有依赖等,此外宿主机上的安全软件可能也会导致容器无法正常启动
  • Pending 一般是调度失败,pod没有可调度的节点,常见原因:节点有污点,不满足节点亲和性,或者节点处于notready状态
  • Evicted 当节点内存、磁盘或者cpu资源不足时,K8s 会按照 QoS 等级对节点上的某些 Pod 进行驱逐,释放资源保证节点可用性,kubelet可以配置内存,cpu和磁盘的驱逐阈值
  • Terminating pod删除后超过terminationGracePeriodSeconds参数时间还处于Terminating状态可能是存在节点故障,和master节点失联,可以检查节点状态或者尝试重启kubelet
  • Completed 此状态通常是job类的pod执行完成了正常退出容器
  • Init:Error pod初始化失败,可以查看init pod的日志定位

问题定位经常需要使用如下命令

kubectl logs -f   podname
kubectl logs -f  -l app=nginx-test  #多副本情况下,可以看到所有pod日志
kubectl describe pods podname   #pod启动日志
kubectl describe node 192.168.0.1  #节点状态日志
kubectl get events #查看集群事件
系统服务查看
systemctl status kubelet/docker/etcd
系统服务日志查看
journalctl -xeu kubelet/docker
--since指定时间 
<think>嗯,用户想了解Kubernetesk8s)的常用命令,我需要整理一个清晰的结构来帮助他。首先,我应该回忆一下k8s基础命令,比如集群管理、资源查看这些部分。然后考虑用户可能的场景,比如他可能是一个刚入门的管理员或者开发者,需要部署应用、调试问题,所以命令需要覆盖这些方面。 接下来,我需要分门别类地组织这些命令。通常,k8s命令可以分为集群管理、资源操作、调试与日志、配置管理、扩展与自动伸缩、网络相关、存储管理这几个大类。每个类别下再列出常用命令示例。 要注意用户提到的格式要求,行内数学表达式用$...$,但这里可能不太涉及数学公式,不过要确保所有的代码或命令行参数正确,比如用反引号包裹。同时,中文回答,结构清晰,分步骤说明。 可能还需要提醒用户注意权限问题,比如有些命令需要特定权限,或者不同命名空间的影响。此外,补充一些常用技巧,比如别名设置,这样能提升用户的使用效率。 另外,用户可能不仅需要命令列表,还需要一些解释,比如每个命令的作用参数的意义。例如,kubectl get pods 是查看Pod,而-n指定命名空间。这样用户更容易理解何时使用这些命令。 最后,检查是否有遗漏的常用命令,比如滚动更新、回滚、端口转发这些操作,都是日常管理中会用到的。确保覆盖全面,同时不过于冗长,保持简洁明了。</think>以下为Kubernetesk8s常用命令的整理,按照功能分类说明: --- ### 一、集群管理 1. **查看集群信息** ```bash kubectl cluster-info ``` 2. **查看节点状态** ```bash kubectl get nodes ``` 3. **查看集群版本** ```bash kubectl version ``` --- ### 二、资源操作 1. **查看资源** ```bash kubectl get <资源类型> # 例如:kubectl get pods kubectl get pods -n <命名空间> # 指定命名空间 kubectl get deployments --all-namespaces # 查看所有命名空间的Deployment ``` 2. **描述资源详情** ```bash kubectl describe <资源类型>/<名称> # 例如:kubectl describe pod/nginx ``` 3. **创建/更新资源** ```bash kubectl apply -f <yaml文件> # 通过YAML文件创建或更新资源 ``` 4. **删除资源** ```bash kubectl delete <资源类型>/<名称> # 例如:kubectl delete deployment/nginx kubectl delete -f <yaml文件> # 通过YAML文件删除资源 ``` --- ### 三、调试与日志 1. **查看Pod日志** ```bash kubectl logs <pod名称> -n <命名空间> kubectl logs -f <pod名称> # 实时跟踪日志 ``` 2. **进入Pod执行命令** ```bash kubectl exec -it <pod名称> -- /bin/sh # 进入Pod的Shell环境 ``` 3. **端口转发** ```bash kubectl port-forward <pod名称> <本地端口>:<Pod端口> # 例如:kubectl port-forward nginx 8080:80 ``` --- ### 四、配置管理 1. **查看当前配置** ```bash kubectl config view ``` 2. **切换上下文(集群/用户)** ```bash kubectl config use-context <上下文名称> ``` --- ### 五、扩展与自动伸缩 1. **手动扩展Deployment副本数** ```bash kubectl scale deployment/<名称> --replicas=3 ``` 2. **自动扩缩容(HPA)** ```bash kubectl autoscale deployment/<名称> --min=2 --max=5 --cpu-percent=80 ``` --- ### 六、网络相关 1. **查看Service** ```bash kubectl get services ``` 2. **暴露Service** ```bash kubectl expose deployment/<名称> --type=NodePort --port=80 ``` --- ### 七、存储管理 1. **查看PersistentVolume(PV)** ```bash kubectl get pv ``` 2. **查看PersistentVolumeClaim(PVC)** ```bash kubectl get pvc ``` --- ### 常用技巧 1. **别名简化命令** ```bash alias k="kubectl" # 后续可用 k get pods 代替 kubectl get pods ``` 2. **查看资源简写** ```bash kubectl api-resources # 列出所有资源的缩写(如po=pods, svc=services) ``` 3. **格式化输出** ```bash kubectl get pods -o wide # 显示详细信息 kubectl get pods -o json # JSON格式输出 kubectl get pods -o yaml # YAML格式输出 ``` --- ### 注意事项 1. **命名空间**:默认操作`default`命名空间,使用`-n`指定其他命名空间 2. **权限问题**:部分命令需要`ClusterRole`权限 3. **上下文切换**:多集群环境下需注意当前操作的集群 建议通过`kubectl --help`查看命令帮助文档,例如`kubectl get --help`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值