四、Kubernetes(k8s) 工作中的常用命令

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

一、Namespace

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

1、查看Namespace

# 使用以下命令可以列出集群中所有现存的命名空间
kubectl get namespace

四、Kubernetes(k8s) 工作中的常用命令

Kubernetes 会创建四个初始命名空间:

  • default: 没有指明使用其它命名空间的对象所使用的默认命名空间
  • kube-system: Kubernetes 系统创建对象所使用的命名空间
  • kube-public: 这个命名空间是自动创建的,所有用户(包括未经过身份验证的用户)都可以读取它。 这个命名空间主要用于集群使用,以防某些资源在整个集群中应该是可见和可读的。 这个命名空间的公共方面只是一种约定,而不是要求。
  • kube-node-lease: 此命名空间用于与各个节点相关的 租约(Lease)对象。 节点租期允许 kubelet 发送心跳,由此控制面能够检测到节点故障。

2、基本使用语法

# 创建命名空间  ns等价于namespace
kubectl create ns pangtaiyi

# 删除命名空间
kubectl delete ns pangtaiyi

# 更改默认命名空间名称(系统默认是default命名空间)
# 我们可以改成其他的命名空间
kubectl config set-context $(kubectl config current-context) --namespace=<新的命名空间>

3、使用请求参数

启动pod,指定pod 的命名空间,可以使用 --namespace 参数, 例如:

# 解释:在PangTaiYi命名空间下,运行一个Pod,Pod运行的镜像是Nginx
kubectl run nginx --image=nginx --namespace=PangTaiYi

# 解释:查询在PangTaiYi命名空间下,所有的Pod
kubectl get pods --namespace=PangTaiYi

# 也可以使用简写方式, --namespace = -n, 例如:
kubectl get pods -n=PangTaiYi
# 或者
kubectl get pods -n PangTaiYi

二、Pod

Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元Pod 是一组(一个或多个)容器; 这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod 所建模的是特定于应用的“逻辑主机”,其中包含一个或多个应用容器, 这些容器是相对紧密的耦合在一起的。 在非云环境中,在相同的物理机或虚拟机上运行的应用类似于在同一逻辑主机上运行的云应用。除了应用容器,Pod 还可以包含在 Pod 启动期间运行的 Init 容器。 你也可以在集群中支持临时性容器 的情况下,为调试的目的注入临时性容器。(注:通常工作中不需要直接创建 Pod,甚至单个实例的 Pod。因为会使用如 Deployment 或 Job 这类工作负载资源来创建 Pod。

1、获取Pod

# 1、获取Pod,默认获取default命名空间下的Pod
kubectl get pod

# 2、获取所有命名空间下的Pod(-A 区分大小写)
kubectl get pod -A

# 3、获取Pod的更加详细的信息,如下:
[root@master ~]# kubectl get pod -o wide
NAME                      READY   STATUS    RESTARTS   AGE   IP            NODE    NOMINATED NODE   READINESS GATES
my-dep-5b7868d854-6f9mz   1/1     Running   1          27h   10.244.1.8    node1   <none>           <none>
my-dep-5b7868d854-dklnq   1/1     Running   1          27h   10.244.1.7    node1   <none>           <none>
my-dep-5b7868d854-j5whk   1/1     Running   1          27h   10.244.1.10   node1   <none>           <none>
my-dep-5b7868d854-lx8nh   1/1     Running   1          23h   10.244.2.13   node2   <none>           <none>
my-dep-5b7868d854-n2gmq   1/1     Running   1          23h   10.244.2.11   node2   <none>           <none>
my-dep-5b7868d854-nd6bl   1/1     Running   1          27h   10.244.1.9    node1   <none>           <none>
my-dep-5b7868d854-p7nv8   1/1     Running   1          23h   10.244.2.12   node2   <none>           <none>
my-dep-5b7868d854-qz658   1/1     Running   1          23h   10.244.2.10   node2   <none>           <none>
my-dep-5b7868d854-sq65d   1/1     Running   1          23h   10.244.2.8    node2   <none>           <none>
my-dep-5b7868d854-zbbwf   1/1     Running   1          27h   10.244.1.11   node1   <none>           <none>

2、 操作Pod

# 1、创建Pod,运行一个nginx容器
kubectl run mynginx --image=nginx

# 2、删除Pod
kubectl delete mynginx

# 3、也可以通过yaml 文件来创建pod
kubectl apply -f <yaml文件地址>

3、查看Pod 的信息

# 1、获得Pod 的描述信息
kubectl describe pod <pod名称>

# 2、如果是其他命名空间下的pod,需要带上相应的命名空间
kubectl describe pod <pod名称> -n <命名空间名称>

# 3、当Pod 运行失败,可以查看pod的日志来查看运行日志
kubectl logs <Pod名称>

# 4、进入pod 的内部
kubectl exec -it mynginx -- /bin/bash

看到这里, 有Docker 基础的同学都发现了, 其实k8s 对于pod 的操作很像是 Docker 对于容器,镜像的操作。几乎没什么区别。由于 Pod 自身不具有自愈能力, 所以在工作中很少直接操作Pod ,所以这里就不过多介绍了。

三、Deployment

Deployment 为 Pod 和 ReplicaSet 提供声明式的更新能力。由用户描述 Deployment 中的 目标状态,而 Deployment 控制器(Controller) 以受控速率更改实际状态, 使其变为期望状态。你可以定义 Deployment 以创建新的 ReplicaSet,或删除现有 Deployment, 并通过新的 Deployment 收养其资源。(说简单点就是, Deployment可以控制Pod,使Pod拥有多副本,自愈,扩缩容等能力

1、自愈、故障转移

下面就使用基本的创建Pod的方式和Deployment 的方式创建Pod,来测试一下什么叫自愈能力。

# 前置环境:
# 运行一个Pod 和 一个Deploymnet
kubectl run mynginx --image=nginx
kubectl create deployment mynginx-deployment --image=nginx

可以看到, 两个pod 分别运行在Node1 和Node2 节点,下面就来进行测试。

四、Kubernetes(k8s) 工作中的常用命令

1.1、误删除

同时删除两个pod,看会有什么效果,(注意:使用Deployment 方式创建pod所生成的名称 mynginx-deployment-679dd69446-h59xs) ​​​​四、Kubernetes(k8s) 工作中的常用命令

 可以看到, 同时删除两个pod , 普通方式删除之后就没了, Deployment 删除了pod 之后, 有重新拉起一个新的Pod。

1.2、宕机

四、Kubernetes(k8s) 工作中的常用命令

如上图所示, 在node2 节点运行了两个Pod, 现在测试将node2节点宕机, 会有什么效果。

四、Kubernetes(k8s) 工作中的常用命令

可以看到, Deployment方式创建的Pod, 在Node2节点宕机之后 ,又在Node1节点上拉起了一个新的Pod。所以就如我之前说的,在工作中使用Deployment方式比较多。

2、多副本

实际上多副本就是在创建 Deployment 的时候,可以指定创建自定义个Pod。例如:下面的语句可以一次性创建10 Pod。(这在部署集群环境的时候非常方便。)

# 创建是个nginx副本   --replicas后面跟副本数量
kubectl create deployment my-dep --image=nginx --replicas=10

四、Kubernetes(k8s) 工作中的常用命令

3、扩缩容

扩缩容在实际工作中用的很多,例如:现在有1万个Pod(集群环境),双十一的时候,网站访问流量激增, 现有的配置无法维持系统的稳定运行,这个时候就需要对系统进行横向扩容,很简单, 下面的语句就可以让系统的Pod 从1万个扩容到2万个。

# 将Pod my-dep 扩容到2万个副本
kubectl scale --replicas=20000 deployment/my-dep

 双十一过了, 需要对系统进行缩容, 让系统继续维持 1万个Pod, 就只需要执行下面的命令, 又可以对系统进行缩容。

# 将Pod my-dep 缩容到1万个副本
kubectl scale --replicas=10000 deployment/my-dep

 4、滚动更新

在以往的工作中, 要想对一个系统进行版本更新, 需要将系统先暂停, 然后将发布后的程序更新上去, 一般都是这么搞的。但是这个方式有弊端, 那就是在更新的过程中, 程序不可用。 这在有些场景中是无法容忍的。

例如: 马上618购物狂欢节快到了, 各大电商平台又推出了抢红包的游戏。现有的系统版本是V.1.0,现在需要将系统升级到V.2.0 。那就可以使用滚动更新

# 语法:kubectl set image 工作负载方式/Pod名称 镜像名称=需要调整的镜像 --record
# --record 用作记录滚动更新的信息, 后面方便版本回退
kubectl set image deployment/my-dep nginx=nginx:1.16.1 --record

 注意:上面语句的 nginx 是填写镜像的name 属性,可以使用“kubectl get deployment my-dep -oyaml” 来查看,结果如下图

四、Kubernetes(k8s) 工作中的常用命令

四、Kubernetes(k8s) 工作中的常用命令

5、版本回退 

 版本回退这个功能一般是当版本更新上去之后, 发现有问题, 需要将新版本进行回退到指定版本。这个回退也是“滚动”的。

1. 查看系统有哪些版本

我们在滚动更新的时候, 说过一个 “--record” 参数, 只有加了这个参数,更新的版本信息才会被记录下来。

# 查看系统有哪些历史版本
[root@master ~]# kubectl rollout history deployment/my-dep
deployment.apps/my-dep 
REVISION  CHANGE-CAUSE
1         <none>
2         kubectl set image deployment/my-dep nginx=nginx:1.16.1 --record=true
[root@master ~]# 

# 也可以单独查看某个历史详情
[root@master ~]# kubectl rollout history deployment/my-dep --revision=2
deployment.apps/my-dep with revision #2
Pod Template:
  Labels:       app=my-dep
        pod-template-hash=6b48cbf4f9
  Annotations:  kubernetes.io/change-cause: kubectl set image deployment/my-dep nginx=nginx:1.16.1 --record=true
  Containers:
   nginx:
    Image:      nginx:1.16.1
    Port:       <none>
    Host Port:  <none>
    Environment:        <none>
    Mounts:     <none>
  Volumes:      <none>

2. 回滚

#回滚(回到上次)
kubectl rollout undo deployment/my-dep

#回滚(回到指定版本)
kubectl rollout undo deployment/my-dep --to-revision=2

 文章来源地址https://www.toymoban.com/news/detail-482948.html

四、Kubernetes(k8s) 工作中的常用命令

 

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

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

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

相关文章

  • Kubernetes(K8s)常用命令大全:熟练编排更完美

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

    2024年02月16日
    浏览(44)
  • k8s资源管理命令与Namespace使用详解

    目录 一、前言 二、k8s概述 三、k8s常用操作管理命令 3.1 kubectl 命令用法

    2023年04月16日
    浏览(51)
  • docker在k8s容器中的作用,以及docker的底层原理,以及k8s的常用命令

        Docker的设计思想就是创建软件程序可移植性的轻量级容器,让其可以在任何安装了Docker的机器上,不用关心底层操作系统,就可以运行开发程序,就像集装箱一样使用。 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们

    2024年04月27日
    浏览(57)
  • yum部署kubernetes(k8s)集群、k8s常用资源管理

    目录 一、环境搭建 1、准备环境 1)计算机说明,建议系统版本7.4或者7.6 2)修改所有主机的计算机名设置host文件  2、安装master节点 1)安装etcd配置etcd 2)安装k8s-master节点 3)配置apiserver 4)配置controller和scheduler 5)启动k8s服务 3、安装k8s-master上的node 1)安装node 2)配置kube

    2024年02月13日
    浏览(60)
  • Kubernetes(K8S)命令指南

    本文提供了一份全面的Kubernetes(K8S)命令指南,旨在帮助用户掌握和运用K8S的各种命令。 关注【TechLeadCloud】,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云

    2024年04月08日
    浏览(78)
  • (kubernetes)k8s常用资源管理

    目录 k8s常用资源管理 1、创建一个pod 1)创建yuml文件 2)创建容器 3)查看所有pod创建运行状态 4)查看指定pod资源 5)查看pod运行的详细信息 6)验证运行的pod 2、pod管理 1)删除pod 2)查看删除pod无法找到 3)创建pod 4)发现最先创建的pod运行在k8s-master节点上,下载镜像速度太

    2024年02月13日
    浏览(46)
  • 云原生Kubernetes:K8S常用服务端口

    目录 一、理论 1.K8S常用服务端口号 (1)K8S集群 表1 K8S集群端口 协议 端口号 K8S集群 TCP 22 使用主机驱动通过SSH进行节点配置 TCP 53 集群DNS服务 UDP 53 集群DNS服务 TCP 2376 主机驱动与Docker守护进程通信的TLS端口 TCP 2379 etcd客户端请求 TCP 2380 etcd节点通信 UDP 8472 Canal/Flannel VXLAN ove

    2024年02月10日
    浏览(67)
  • 【k8s】Kubernetes技术和相关命令简介

    Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。 在Kubernetes中,我们

    2024年01月18日
    浏览(44)
  • K8s:K8s 20个常用命令汇总

    博文内容为节译整理,用于温习 理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·

    2024年02月15日
    浏览(54)
  • Kubernetes(k8s):精通 Pod 操作的关键命令

    💖The Begin💖点点关注,收藏不迷路💖 Kubernetes 是一个强大的容器编排平台,其中的核心概念之一就是 Pod。Pod 是 Kubernetes 中最小的可部署单元,它由一个或多个容器组成,共享网络和存储资源。 在本篇博客中,我们将深入探讨 Kubernetes 集群中与 Pod 相关的一些重要命令,帮

    2024年04月14日
    浏览(152)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包