zoukankan      html  css  js  c++  java
  • Kubernetes-kubectl介绍

    前言

    本篇是Kubernetes第三篇,大家一定要把环境搭建起来,看是解决不了问题的,必须实战。本篇重要介绍kubectl的使用。

    Kubernetes系列文章:
    1. Kubernetes介绍
    2. Kubernetes环境搭建

    kubectl的核心功能在于通过 API Server 操作 Kubernetes 的各种资源对象,包括资源对象的创建、删除、查看、修改、配置、运行等等,学习kubectl相关命令是了解 Kubernetes 集群管理的一种手段。

    kubectl语法

    kubectl [command] [TYPE] [NAME] [flags]
    1. command:指定在一个或多个资源上要执行的操作。例如:create、get、describe、delete、apply;
    2. TYPE:指定资源类型。资源类型区分大小写,您可以指定单数,复数或缩写形式;
    3. Name: 指定资源的名称。名称区分大小写。如果省略名称,则会显示所有资源的详细信息;
    #获取相同类型的资源信息  type name1 name2
    kubectl get pod example-pod1 example-pod2
    #获取不同类型对象资源  type/name type2/name2
    kubectl get pod/example1 replicationcontroller/example2
    #同时应用多个YAML文件,以多个-f flie参数表示
    kubectl get pod -f pod1.yaml -f pod2.yaml
    1. 指定可选的标记。例如,可以使用 -s 或 --server标识来指定Kubernetes API服务器的地址和端口;-n指定名称空间;
    输出格式

    kubectl命令可以对结果进行多种格式化显示,输出的格式通过-o参数指定:

    kubectl [command] [TYPE] [NAME] -o <output_format>

    常用的输出格式如下:

    img
    img
    1. 自定义列名展示;
    kubectl get pod
    #value就是pod定义字段
    kubectl get pods -o custom-columns=NAME:.metadata.name,UID:.metadata.uid,imageName:.spec.containers[0].image
    image.png
    image.png
    1. 自定义列名配置文件名称;
    #自定义需要展示列名文件
    vim custom-col.conf
    #输入下面内容
    NAME          UID          imageName                containerPort
    metadata.name metadata.uid spec.containers[0].image spec.containers[0].ports[0].containerPort
    #指定文件输出
    kubectl get pod -o custom-columns-file=custom-col.conf
    image.png
    image.png
    1. json格式输出;
    kubectl get pod -o json
    image.png
    image.png
    1. 输出jsonpath文件内容;
    kubectl get pods -o jsonpath='{.items[0].metadata.name},{.items[0].spec.containers[0].image}'
    image.png
    image.png
    1. 通过自定义jsonpath文件输出自定义内容;
    #自定义JSONPath文件
    vim custom-json.conf
    #输入自定义的内容
    {.items[0].metadata.name},{.items[0].spec.containers[0].image},{.items[0].spec.containers[0].ports[0].containerPort}
    #按照格式输出
    kubectl get pod -o jsonpath-file=custom-json.conf
    1. 仅打印资源对象的名称;
    kubectl get pod -o name
    image.png
    image.png
    1. 展示更多的Pod信息;
    kubectl get pod -o wide
    image.png
    image.png
    1. 以yaml的格式显示结果;
    kubectl get pod -o yaml
    image.png
    image.png

    关于kubectl的命令很多,大家可以参考下官方文档,这里就不详细介绍每个命令,大家只要掌握常用的命令即可,下面的篇幅就是介绍大家常用命令;

    kubectl常用命令

    1. kubectl create/replace 和 kubectl apply 部署或者替换资源,kubectl replace的执行过程,是使用新的 YAML文件中的 API 对象,替换原有的 API 对象,kubectl apply,则是执行了一个对原有 API 对象的patch 操作,这里建议大家使用kubectl apply操作;
    #使用create创建一个Deployment资源对象 使用上个章节的yaml文件
    kubectl create -f nginx-deployment.yaml
    #修改命令 可以通过kubectl edit 还可以使用修改nginx-deployment.yaml文件,
    #后使用 kubectl replace 来触发更新 我们修改限制内存的为256,这种方式我们称为命令式配置文件操作
    kubectl replace -f nginx-deployment.yaml
    #我们也可以使用kubectl apply创建对象资源
    kubectl apply -f nginx-deployment.yaml
    #然后通过修改nginx-deployment.yaml文件,执行kubectl apply就可以完成资源修改
    kubectl apply -f nginx-deployment.yaml
    1. kubectl get 列出查看同一种类型一个或者多个资源对象;
    #列出所有的pod
    kubectl get pods
    #列出某个节点上的所有的pod
    kubectl get pods --field-selector=spec.nodeName=节点的名称
    #筛选标签为testing=true的pod
    kubectl get pod -l testing=true
    1. kubectl describe 查看资源的详细信息,kubectl describe相比于kubectl get来说,更多关注资源方面的详情,会返回节点信息、节点时间等等,kubectl get 用户查看同一种类型一个或者多个资源对象;
    #查看某个pod详细信息
    kubectl describe pod/nginx-deployment-776b4d7488-jfcjq
    #查看某个node详细信息
    kubectl describe nodes/demo-work-1
    1. kubectl delete 删除输入的指定的资源对象,也可以通过标签选择器、名称、资源选择器来删除特定资源范围;
    #删除指定类型的pod
    kubectl delete -f pod.yaml
    #删除所有label-key:label-value的信息
    kubectl delete pods -l label-key=label-value
    1. kubectl exec 在pod的容器中运行命令;
    #进入/bin/bash交互界面
    kubectl exec -it nginx-deployment-776b4d7488-jfcjq -- /bin/bash
    1. kubectl logs 打印Pod中容器的日志;
    #打印日志
    kubectl logs nginx-deployment-776b4d7488-jfcjq
    #持续监控pod日志
    kubectl logs -f nginx-deployment-776b4d7488-jfcjq
    1. kubectl edit 在线编辑资源对象;
    #在线编辑deployment资源
    kubectl edit deploy nginx-deployment
    1. 将Pod端口映射到宿主机端口;
    #将Pod 80端口映射到宿主机 8888
    kubectl port-forward --address 172.21.122.230,localhost pod/nginx-deployment-776b4d7488-jfcjq 8888:80
    #打开另外一个界面访问
    curl http://172.21.122.230:8888
    1. 容器与宿主机之间复制文件;
    kubectl cp nginx-deployment-776b4d7488-jfcjq:/etc/fastab  /tmp
    1. 设置资源对象标签;
    #给pod设置testing=true的标签 
    kubectl label pod nginx-deployment-776b4d7488-jfcjq testing=true
    #筛选标签为testing=true的pod
    kubectl get pod -l testing=true
    1. 最重要的命令,帮助命令;
    #列出command的类型
    kubectl
    #列出某种command的使用文档
    kubectl command --help

    结束

    欢迎大家点点关注,点点赞!

  • 相关阅读:
    利用同步辅助类CountDownLatch计算多线程的运行时间
    i++的原子性问题
    Volatile关键字以及线程的内存可见性问题
    创建线程的第三种方式以及简单使用
    java8新特性-lambda表达式和stream API的简单使用
    springboot整合activemq
    springboot整合redis单机及集群
    JAVA-基础(一)
    CentOS-文件操作
    理解AngularJS的作用域Scope
  • 原文地址:https://www.cnblogs.com/wtzbk/p/15232147.html
Copyright © 2011-2022 走看看