k8s 基础命令和常用命令等

这篇具有很好参考价值的文章主要介绍了k8s 基础命令和常用命令等。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

通过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常用命令

k8s 基础命令和常用命令等,docker,kubernetes,容器

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的状态

k8s 基础命令和常用命令等,docker,kubernetes,容器

常见状态原因

  • 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的日志定位

问题定位经常需要使用如下命令文章来源地址https://www.toymoban.com/news/detail-562598.html

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指定时间 

到了这里,关于k8s 基础命令和常用命令等的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 五、Kubernetes(K8S):Kubectl常用命令详解

    注意:后续技术分享,第一时间更新,以及更多更及时的技术资讯和学习技术资料 ,将在公众号 CTO Plus 发布,请关注公众号: CTO Plus   Kubectl 是Kubernetes命令行工具,用于管理Kubernetes集群资源和应用程序的部署、升级和扩展等。其作用包括但不限于: 1. 创建、更新和删除应

    2024年02月04日
    浏览(45)
  • 四、Kubernetes(k8s) 工作中的常用命令

    顾名思义, Namespace 是命名空间的意思,在 Kubernetes 中,“命名空间(Namespace)” 提供一种机制,将同一集群中的资源划分为相互隔离的组。 同一命名空间内的资源名称要唯一,但跨命名空间时没有这个要求。 命名空间作用域仅针对带有命名空间的对象,例如 Deployment、Se

    2024年02月08日
    浏览(68)
  • Kubernetes(K8s)常用命令大全:熟练编排更完美

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月16日
    浏览(46)
  • k8s 基础命令和常用命令等

    通过kubectl命令可以操作和管理K8S资源,对于初学者可以在掌握K8S基础命令的基础上再去学习K8s的原理和架构,那么K8S常用的命令有哪些呢? 01 K8S命令概述 在学习K8s基础命令前,了解和学习docker命令是很有必要的,kubectl和docker很多命令都有相通之处 K8S常用命令 02 K8S集群资源

    2024年02月16日
    浏览(31)
  • K8s基础2——部署单Master节点K8s集群、切换containerd容器运行时、基本命令

    两种部署方式: kubeadm工具部署 。Kubeadm 是一个K8s 部署工具,提供 kubeadm init 和kubeadm join,用于快速部署 Kubernetes集群。 kubeadm 工具功能: kubeadm init:初始化一个 Master 节点。 kubeadm join:将工作节点加入集群。 kubeadm upgrade:升级 K8s 版本。 kubeadm token:管理 kubeadm join 使用的令

    2024年02月12日
    浏览(54)
  • K8S系列文章 之 容器网络基础 Docker0

    使用 ip addr 命令看一下网卡: 其中lo是本地回环地址,docker0就是docker0地址,也就是docker的地址172.17.0.1。 docker使用的是桥接模式,使用的技术是evth-pair技术,后面会解释。 比如有两个容器,容器A要去访问容器B,该如何访问?使用127.0.0.1吗?还是写docker0地址? 我们运行起一

    2024年02月14日
    浏览(64)
  • 云原生Kubernetes:K8S集群实现容器运行时迁移(docker → containerd) 与 版本升级(v1.23.14 → v1.24.1)

    目录 一、理论 1.K8S集群升级 2.环境 3.升级策略 4.master1节点迁移容器运行时(docker → containerd)  5.master2节点迁移容器运行时(docker → containerd)  6.node1节点容器运行时迁移(docker → containerd)  7.升级集群计划(v1.23.14 → v1.24.1) 8.升级master1节点版本(v1.24.1) 9.升级master2节点版本

    2024年02月03日
    浏览(69)
  • k8s基础:使用kubectl set image命令更新Deployment中容器的镜像

    在Kubernetes中,使用 kubectl 更新Deployment中容器的镜像,可以使用以下命令: 例如,如果你有一个名为 myapp 的 Deployment,其中包含一个名为 mycontainer 的容器,你想将镜像从 myregistry/myimage:v1 更新到 myregistry/myimage:v2 ,可以执行: 这条命令将会触发一个滚动更新,根据你的Deploy

    2024年04月26日
    浏览(44)
  • 容器化进阶Kubernetes(K8S)详解

    1.1.1 Kubernetes是什么及作用 Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。 Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 官网地址 Kubernetes 中文社区 Kubernetes(k8s)中文文档 目录_Kubernetes中文社

    2024年02月05日
    浏览(78)
  • Kubernetes(K8s):容器化应用的航空母舰

    Kubernetes(K8s)是一个开源的容器编排系统,它的出现就像是为容器化应用提供了一艘强大的航空母舰。在这艘母舰上,你的应用容器就像是一架架战斗机,Kubernetes负责指挥它们起飞、飞行、降落,确保它们能在正确的时间、正确的地点执行任务。 Pod: Kubernetes的基本飞行编队

    2024年04月08日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包