kubectl命令详解

2023-10-26

目录

一、kubectl命令详解

1、查看某个资源的详细信息:kubectl describe pod pod_name -n nameapace

2、查看指定命名空间中pod的基本信息:kubectl get pods -n namespace

3、跨主机登录容器:kubectl exec -it pod_name /bin/bash -n namespace

4、删除pod

4.1、直接删除pod。但是deployment,副本控制器还在,他就会自己再创建一个。

①、直接删除POD 

②、查看,发现与原先pod_name不一样,

 4.2、删除pod副本控制器deployment:

4.3、如果删除过程中出现幺蛾子,Pod无法删除,总是处于terminating状态,则执行强行删除--force --grace-period=0

5、命令行扩容和缩容

5.1、副本集的扩容

①查看原有副本集:1个 

②扩容副本集为4

5.2、副本集的缩容 

6、删除service

7、查看pod网络状态详情信息和service暴露的端口

8、查看关联后的节点

9、查看service的描述信息

二、pod的生命周期

1、创建一个Pod,启动nginx实例,暴露容器80端口,设置副本集为3(创建pod)

namespace为默认

2、 发布:kubectl expose命令 ​编辑

3、 查看端口

​三、 service的type类型

一、kubectl命令详解
1、查看某个资源的详细信息:kubectl describe pod pod_name -n nameapace(不加-n namespace 默认为查看default命名空间资源)
[root@master ~]# kubectl describe pods -n kube-public         

                                                            ### 查看指定命名空间中的pod的详细信息

                            ### 在处理故障时,常使用此命令查看pod 的events信息来定位问题                                          

Name:         nginx-w1-7464d66457-psk6h
Namespace:    kube-public
Priority:     0
Node:         node01/192.168.159.11
Start Time:   Wed, 02 Nov 2022 01:40:47 +0800
Labels:       app=nginx-w1
              pod-template-hash=7464d66457
Annotations:  <none>
Status:       Running
IP:           10.150.1.3
IPs:
  IP:           10.150.1.3
Controlled By:  ReplicaSet/nginx-w1-7464d66457
Containers:
  nginx:
    Container ID:   docker://4011df060a9ad777793f061675fc1a784f4effe56f5585d91d5ba3670660c620
    Image:          nginx
    Image ID:       docker-pullable://nginx@sha256:943c25b4b66b332184d5ba6bb18234273551593016c0e0ae906bab111548239f
    Port:           <none>
    Host Port:      <none>
    State:          Running
      Started:      Wed, 02 Nov 2022 01:41:06 +0800
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-llzgh (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  kube-api-access-llzgh:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:                      <none>
 
 
Name:         nginx-x1-77484d895f-ddhqt
Namespace:    kube-public
Priority:     0
Node:         node02/192.168.159.13
Start Time:   Thu, 03 Nov 2022 16:16:11 +0800
Labels:       app=nginx-x1
              pod-template-hash=77484d895f
Annotations:  <none>
Status:       Running
IP:           10.150.2.3
IPs:
  IP:           10.150.2.3
Controlled By:  ReplicaSet/nginx-x1-77484d895f
Containers:
  nginx:
    Container ID:   docker://ecc07803682f2d7a51037024354dae0d190841443121ca0a8514ab224179cbf5
    Image:          nginx:latest
    Image ID:       docker-pullable://nginx@sha256:943c25b4b66b332184d5ba6bb18234273551593016c0e0ae906bab111548239f
    Port:           <none>
    Host Port:      <none>
    State:          Running
      Started:      Thu, 03 Nov 2022 16:16:36 +0800
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-47hxr (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  kube-api-access-47hxr:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:                      <none>

2、查看指定命名空间中pod的基本信息:kubectl get pods -n namespace
[root@master ~]# kubectl get pods -n kube-public [-o wide]    ###  [-o wide] 显示详细信息

NAME                        READY   STATUS    RESTARTS   AGE
nginx-w1-7464d66457-psk6h   1/1     Running   0          43h
nginx-x1-77484d895f-ddhqt   1/1     Running   0          5h12m
3、跨主机登录容器:kubectl exec -it pod_name /bin/bash -n namespace
root@master ~]# kubectl exec -it nginx-x1-77484d895f-ddhqt /bin/bash -n kube-public

例如:

root@master ~]# kubectl exec -it nginx-x1-77484d895f-ddhqt ifconfig  ### 不进入容器直接使用命令

[root@master ~]# kubectl exec -it nginx-x1-77484d895f-ddhqt /bin/bash -n kube-public
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
root@nginx-x1-77484d895f-ddhqt:/# 
4、删除pod
4.1、直接删除pod。但是deployment,副本控制器还在,他就会自己再创建一个。
[root@master ~]# kubectl delete pod nginx -n kube-public
pod "nginx-w1-7464d66457-psk6h" deleted

①、直接删除POD 


②、查看,发现与原先pod_name不一样,


 4.2、删除pod副本控制器deployment:
[root@master ~]# kubectl delete deployment nginx-w1 -n kube-public


4.3、如果删除过程中出现幺蛾子,Pod无法删除,总是处于terminating状态,则执行强行删除--force --grace-period=0
强行删除pod

5、命令行扩容和缩容
5.1、副本集的扩容
①查看原有副本集:1个 


②扩容副本集为4


5.2、副本集的缩容 
基于上面结果进行实验,设置--replicas=2,指定副本集数量后,他会根据现有的副本集数量和期望值相比较,从而决定时扩容还是缩容

6、删除service
[root@master ~]# kubectl delete svc nginx-server -n default

[root@master ~]# kubectl get svc -n default
NAME            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes      ClusterIP   10.125.0.1      <none>        443/TCP        2d6h
nginx-server    NodePort    10.125.126.34   <none>        80:30537/TCP   45m
nginx1-server   NodePort    10.125.103.25   <none>        80:31070/TCP   2m41s
[root@master ~]# kubectl delete svc nginx-server -n default
service "nginx-server" deleted
7、查看pod网络状态详情信息和service暴露的端口
[root@master ~]# kubectl get svc,pods -n default


8、查看关联后的节点
[root@master ~]# kubectl get endpoints

[root@master ~]# kubectl get endpoints
NAME             ENDPOINTS                                    AGE
kubernetes       192.168.159.10:6443                          2d6h
nginx1-service   10.150.1.10:80,10.150.1.9:80,10.150.2.9:80   32m
9、查看service的描述信息
[root@master ~]# kubectl describe svc nginx

 
[root@master ~]# kubectl describe svc nginx
Name:                     nginx1-service
Namespace:                default
Labels:                   app=nginx
Annotations:              <none>
Selector:                 app=nginx
Type:                     NodePort
IP Family Policy:         SingleStack
IP Families:              IPv4
IP:                       10.125.32.0
IPs:                      10.125.32.0
Port:                     <unset>  80/TCP
TargetPort:               80/TCP
NodePort:                 <unset>  31625/TCP
Endpoints:                10.150.1.10:80,10.150.1.9:80,10.150.2.9:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

10、核心组件查看日志
通过kubeadm方式部署的K8S

kubectl logs -f pod_name -n namespace  或者 journalctl -u kubelet -f

### kubectl logs -f   持续输出打印

### kubectl logs   只打印当前时刻

通过二进制部署的K8S

journalctl -u kubelet -f

二、pod的生命周期
pod生命周期是指:pod在从创建到删除过程中,所包含、经历的状态

pod的类型分为2中:

①、自主式:没有控制器管理的就是自助式的。删除时直接删除就行

②、申明式:有控制器管理的Pod。(我们一般使用的类型)

1、创建一个Pod,启动nginx实例,暴露容器80端口,设置副本集为3(创建pod)
namespace为默认
[root@master ~]# kubectl create deployment nginx-ceshi --image=nginx:1.14 --port 80 --replicas=3 
deployment.apps/nginx-ceshi created
 

2、 发布:kubectl expose命令 
3、 查看端口


三、 service的type类型
①、clusterIP:提供一个集群内部的虚拟IP以供Pod访问(service默认类型)   

②、NodePort:在每个Node上打开一个端口以供外部访问,Kubernetes将会在每个Node上打开一个端口并且每个Node的端口都是一样的,通过 NodeIp:NodePort 的方式Kubernetes集群外部的程序可以访问service。每个端口只能是一种服务,端口范围只能是30000-32767

③、LoadBalancer:通过设置LoadBalancer映射到云服务商提供的LoadBalancer地址。这种用法仅用于在公有云服务提供商的云平台上设置service的场景。通过外部的负载均衡器来访问,通常在云平台部署LoadBalancer还需要额外的费用。

④、externalName:将service名称映射到一个DNS域名上,相当于DNS服务的CNAME记录,用于让Pod去访问集群外部的资源,它本身没有绑定任何的资源。
————————————————
版权声明:本文为CSDN博主「忙碌滴比特流」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_62948770/article/details/127678600

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

kubectl命令详解 的相关文章

  • k8s初级实战09--Secret

    k8s初级实战09 Secret 1 基础概念 2 常见用法 2 1 创建 secret 2 2 使用 secret 2 3 imagePullSecret 控制镜像访问权限 3 注意事项 4 说明 1 基础概念 Secret 对象类型用来
  • 安装--centos7上使用kubeadm安装三节点的k8s集群

    安装文档 https kubernetes io zh cn docs setup production environment tools kubeadm install kubeadm 参考 https blog csdn net qq
  • 社区的代码规范及e2e测试

    golangci lint 静态代码检查工具 是对golint gofmt的集成 速度更快 1 安装 go install github com golangci golangci lint cmd golangci lint v1 38
  • DHorse系列文章之操作手册

    在介绍DHorse的操作之前 我们先来看一下发布一个系统的流程是什么样的 发布系统的流程 我们以一个Springboot系统为例 来说明一下发布流程 1 首先从代码仓库下载代码 比如Gitlab 2 接着是进行打包 比如使用Maven 3
  • KVM-7、KVM 虚拟机创建的几种方式

    通过对 qemu kvm libvirt 的学习 总结三种创建虚拟机的方式 1 通过 qemu kvm 创建 2 通过 virt install 创建 3 通过 virt manager 创建 在使用这三种创建虚拟机前提是 宿主机必须支持
  • K8S 工作负载(一)

    K8S 工作负载 1 Pod Pod 是 Kubernetes 中创建 管理和调度的最小计算单元 用户可以在 K8S 中通过调用 Pod API生成一个 Pod 让 K8S 对其进行调度 Pod 是一组 一个或多个 容器 这些容器共享存储
  • k8s Trouble Shooting 故障排除

    本文要讲的是k8s的故障排除 比较浅 最近刚入门 主要涵盖的内容是查看k8s对象的当前运行时信息 对于服务 容器的问题是如何诊断的 对于某些复杂的问题例如pod调度问题是如何排查的 1 查看系统的Event事件 在对象资源 pod serv
  • underlay和overlay? & 传统网络和数据中心网络 ?

    underlay和overlay 百度 Underlay 和 Overlay 是网络架构中两个常用的概念 用于描述不同层次或视角下的网络结构和通信方式 1 Underlay 底层网络 Underlay 是指基础网络层 即物理网络或基础网络架
  • k8s优雅停服

    在应用程序的整个生命周期中 正在运行的 pod 会由于多种原因而终止 在某些情况下 Kubernetes 会因用户输入 例如更新或删除 Deployment 时 而终止 pod 在其他情况下 Kubernetes 需要释放给定节点上的资源时
  • Liveness、Readiness 和 Startup Probes

    liveness apiVersion v1 kind Pod metadata labels test liveness name liveness exec spec containers name liveness image k8s
  • minikube单机安装nfs服务

    1 安装 nfs server sudo apt get update sudo apt get install y nfs kernel server 2 创建目录 配置 IP 共享目录绑定 vim etc exports 新增 data
  • 十八. Kubernetes Ingress

    目录 一 Ingress 基础解释 二 ingressController 安装 六 ingress 使用示例 pathType 详细 annotations 基于k8s注解为 nginx 添加功能示例 路径重写 Session Affin
  • docker的联合文件系统(UnionFS)

    docker最大的贡献就是定义了容器镜像的分层的存储格式 docker镜像技术的基础是联合文件系统 UnionFS 其文件系统是分层的 这样既可以充分利用共享层 又可以减少存储空间占用 联合挂载系统的工作原理 读 如果文件在upperdir
  • k8s-3:集群的三种网络

    k8s集群一共有三种网络模型 Node IP Node节点的IP地址 即物理网卡的IP地址 Pod IP Pod的IP地址 即docker容器的IP地址 此为虚拟IP地址 Cluster IP Service的IP地址 此为虚拟IP地址 N
  • k8s部署之ETCD集群

    k8s部署之ETCD集群 1 etcd下载 etcd下载地址 https github com coreos etcd releases 从github etcd的发布页面选取相应的版本用 wget url 来下载 如 wget https
  • kubectl常用命令

    alias k kubectl alias kc k create f alias kgp k get pods alias kdp k describe pods alias kdep k delete pods alias kl k l
  • k8s 裸机安装 nginx1.19 ingrass

    k8s 裸机安装 nginx1 19 ingrass deploy yaml文件如下 apiVersion v1 kind Namespace metadata name ingress nginx labels app kubernete
  • Kubernetes + Dashboard 集群搭建

    1 环境说明 基于kubeadm工具部署k8s 集群 还有基于二进制的部署方式但是需要单独部署k8s的每个组件比较繁琐 kubeadm是 Kubernetes官 提供的 于快速部署Kubernetes集群的 具 基于Kubernetes v
  • k8s Failed to create pod sandbox错误处理

    错误信息 Failed to create pod sandbox rpc error code Unknown desc failed to get sandbox image k8s gcr io pause 3 2 failed to
  • K8S学习--Kubeadm-7--Ansible二进制部署

    K8S学习 Kubeadm 安装 kubernetes 1 组件简介 K8S学习 Kubeadm 安装 kubernetes 2 安装部署 K8S学习 Kubeadm 3 dashboard部署和升级 K8S学习 Kubeadm 4 测试运

随机推荐

  • 个人小程序实现微信支付

    其实个人小程序是没办法直接调用微信支付的 但是可以间接的去调用 就是通过第三方的服务 如 https www payjx cn 通过调用它得接口 返回一个带支付二维码得结果 这个二维码被微信扫码支付后 通过开发者留得通知地址回调给开发者 就
  • 如何idea建包不让重叠(2022)

    1 去掉这个就可以了
  • Allegro PCB设计小诀窍系列--如何把PCB板上的线变成铜皮

    背景介绍 我们在进行PCB设计时 经常需要从其他软件导入图形 比如用其他软件绘制完成的防静电标识等 Allegro软件对于图形的描述是矢量的 而有很多软件对大块图形的描述是线性的 这就导致这类图形导入到Allegro之后 图形是由一条条的线
  • 独家

    作者 Faizan Shaikh 翻译 季洋 校对 王雨桐 本文约2700字 建议阅读10 分钟 本文将展示如何使用开源工具完成一个人脸识别的算法 引言 计算机视觉和机器学习已经开始腾飞 但是大多数人并不清楚计算机在识别一张图片的时候 它到
  • C语言宏定义嵌套容易出错,难道是C的Bug?

    今天的HDU上面做题 4501题的时候本想嵌套一个宏 简单一点 但是调试好久都不行 就是输出不对 后来改成函数就可以了 define max x y x
  • 8.9数据结构作业

    队列头文件 ifndef HTLINKLIST H define HTLINKLIST H typedef int datatype typedef struct Node union datatype data int len struc
  • vs2017运行显示系统找不到指定的文件_十分钟学会win10系统封装-封装

    Easy Sysprep将封装分为了两个阶段 第一阶段 以完成封装操作为首要目的 第二阶段 以完成对系统的调整为首要目的 将封装与调整分开 减少调整操作对封装操作的影响 保障封装成功率 第一阶段 在C盘目录下新建文件夹Sysprep 拷贝万
  • javaScript获取cookie转换成json

    原始转换 function cookie to json var cookie text document cookie var arr var text to split cookie text split for var i in te
  • AcWing 756. 蛇形矩阵

    题目 输入两个整数n和m 输出一个n行m列的矩阵 将数字 1 到 n m 按照回字蛇形填充至矩阵中 具体矩阵形式可参考样例 输入格式 输入共一行 包含两个整数n和m 输出格式 输出满足要求的矩阵 矩阵占n行 每行包含m个空格隔开的整数 数据
  • 天梯赛 一至十二届题解合集(最简洁规范题解)

    l1和l2已全部更新完毕 l3更新大概1 3 有更好的解法的大佬请在评论区指出 题解 第一届 点我 题解 第二届 点我 题解 第三届 点我 题解 第四届 点我 题解 第五届 点我 题解 第六届 点我 题解 第七届 点我 题解 第八届 点我
  • (网络安全数据集一)美国国家安全漏洞库 NVD-CVE信息解读 和常用漏洞库

    NVD中CVE信息解读 最近要用到这方面的数据 就对NVD中的一小段CVE信息选取做了简单的理解 有错的地方请大佬指正 一个完整的CVE信息 包含 六部分 元数据 漏洞影响软件信息 漏洞问题类型 参考和漏洞介绍 configurations
  • Spring Boot 中的 @SendTo 注解

    Spring Boot 中的 SendTo 注解 在 Spring Boot 中 SendTo 注解是一个非常有用的注解 它可以用于实现 WebSocket 的消息转发功能 本文将介绍 SendTo 注解的原理 使用方法和示例代码 什么是
  • Sophus库:对SO(3)和SE(3)的构建及扰动模型搭建

    简介 使用Eigen库中Geometry模块能够实现对 S O 3 SO 3 SO 3 S
  • 微信开发者工具的版本控制

    注意事项 拉取代码时 应先关闭所有的编辑器代码页面 清理版本管理工具里的工作区 保存到本地 不管什么时候 需要把代码提交到线上的请先拉取一下线上代码 一 提交代码流程 先在 微信开发者工具 的 版本管理 中把代码存储在本地分支上 拉取线上分
  • 用js实现简单的满屏跳动的心

    用js实现简单的满屏跳动的心
  • 实施MES系统的成功率只有50%,你知道为什么吗?

    MES系统可以称之为生产制造产业生产和管理方法实现代化的管理中心 假如可以非常好的执行和运用MES 那么将有益于提升公司的生产率 降低消耗成本 但为什么会有些公司MES执行实际效果不佳呢 原因之一 我国制造业存在管理方法基础的先天发育不足
  • Android中LCD背光驱动

    分类 Linux驱动 Android系统 2013 06 17 16 28 287人阅读 评论 0 收藏 举报 目录 Android的Setting Android的背光JNI层 Android的背光HAL层 Linux的背光内核层 Lin
  • 【web基础】html常用标签+作品展示

    前言 小亭子正在努力的学习编程 接下来将开启javaEE的学习 分享的文章都是学习的笔记和感悟 如有不妥之处希望大佬们批评指正 同时如果本文对你有帮助的话 烦请点赞关注支持一波 感激不尽 说明 此部分是java web基础知识 学的不深 仅
  • python爬虫万能模板

    以下是一个简单的 Python 爬虫模板 可以用于爬取网页数据 python import requests from bs4 import BeautifulSoup 设置请求头 模拟浏览器访问 headers User Agent Mo
  • kubectl命令详解

    目录 一 kubectl命令详解 1 查看某个资源的详细信息 kubectl describe pod pod name n nameapace 2 查看指定命名空间中pod的基本信息 kubectl get pods n namespac