Kubernetes 命令行工具之kubctl
2021-03-14 11:42
标签:脚本 服务 命令 bash deploy xposed lob 请求 names 我们在kubernetes集群中大部分的操作都是通过 从用户角度来说,kubectl就是控制Kubernetes的驾驶舱,它允许你执行所有可能的Kubernetes操作; Kubernetes API是一个HTTP REST API服务,该API服务才是Kubernetes的真正用户接口,Kubernetes通过该API能够进行实际的控制,也就是说每个Kubernetes的操作都会通过API接口暴露出去,当然也就可以通过对这些API接口进行HTTP请求来执行相应的操作。 so,kubectl最主要的工作就是执行Kubernetes API的HTTP请求 一般来说,命令补全是通过执行一个补全脚本的 shell 功能,补全脚本也是一个 shell 脚本,用于定义特定命令的补全功能。 kubectl 在 Bash 和 Zsh 下可以使用下面的命令自动生成并打印出补全脚本: 理论上在合适的 shell 中 source 上面命令的输出就可以开启 kubectl 的命令补全功能了 以Centos为例: 我们在使用YAML文件创建资源时,需要知道这些资源的一些字段和含义,一个比较有效的方法就是去API文档中查看这些资源对象完整规范定义 但是如果每次要查找某些内容的时候都切换到浏览器去查询也是很麻烦的一件事情,所以,kubectl 为我们提供了一个 默认情况下, 该命令会将 deployment.spec 属性下面所有的规范都打印出来。 如果你不太确定可以使用 该命令会线上资源名称的复数形式(比如显示 deployments 而不是 deployment),还会显示一个资源的简写(比如 deploy),不过不用担心,我们可以用任意一个名称来结合 kubectl get命令(读取集群资源)的默认输出格式如下: 上面的输出结果是一种比较友好的格式,但是它包含的信息比较有限,比如上面只显示了 Pod 资源中的一些信息(与完整资源定义相比)。 所以这个时候就有自定义输出格式的用武之地了,它允许我们自由定义要显示的列和数据,可以选择要在输出中显示为单独列的资源的任何字段。 自定义列输出的用法如下 我们来看一个简单的例子: 上面说完了kubectl的基本使用,这里来说如何使用kubectl实现资源的陈述式管理。 namespace也称为名称空间,可简写ns,默认名称空间: 1.查看namespace 2.查看指定名称空间 3.创建名称空间 4.删除名称空间 1.创建nginx 2.简单查看 3.扩展查看 4.详细查看 1.查看pod资源 2.进入pod资源 当然你也可以通过docker exec 进入容器 3.删除pod资源(重启) 使用watch观察pod重建状态变化 强制删除参数:--force --grace-period=0 4.删除deployment 1.创建service 2.查看service Kubernetes 命令行工具之kubctl 标签:脚本 服务 命令 bash deploy xposed lob 请求 names 原文地址:https://www.cnblogs.com/jasonminghao/p/12809789.html
kubectl
来实现的1、何为kubectl
从技术角度来看,kubectl就是Kubernetes API的一个客户端。
2、Kubectl基本使用
2.1、命令补全
$ kubectl completion bash
# 或者
$ kubectl completion zsh
$ kubectl completion bash >>/etc/profile
$ source /etc/profile
2.2、快速查找资源
kubectl explain
命令,可以在终端中直接打印出来所有资源的规范定义。kubectl explain命令的用法如下所示:$ kubectl explain deployment.spec
kubectl explain
命令只会显示属性的一级数据,我们可以使用--recursive参数来显示整个属性的数据:$ kubectl explain deployment.spec --recursive
kubectl explain
的资源名,可以使用下面的命令来获取所有资源名称:$ kubectl api-resources
kubectl explain
命令使用的:$ kubectl explain deployments.spec
# 或者
$ kubectl explain deployment.spec
# 或者
$ kubectl explain deploy.spec
2.3、使用自定义输出格式
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
busybox 1/1 Running 2 14h
nginx-app-deployment-9dfdc4785-6w92j 1/1 Running 0 26s
nginx-app-deployment-9dfdc4785-qphsd 1/1 Running 0 26s
-o custom-columns=
$ kubectl get pods -o custom-columns="NAME:metadata.name"
NAME
busybox
nginx-app-deployment-9dfdc4785-6w92j
nginx-app-deployment-9dfdc4785-qphsd
3、陈述式管理资源
3.1、管理namespace资源
default
$ kubectl get namespace
NAME STATUS AGE
default Active 18h
kube-node-lease Active 18h
kube-public Active 18h
kube-system Active 18h
$ kubectl get all [-n default]
$ kubectl create ns app
namespace/app created
$ kubectl delete ns app
namespace "app" deleted
3.2、管理Deployment资源
$ kubectl create deployment nginx-dp --image=nginx:1.7.9 -n kube-public
deployment.apps/nginx-dp created
$ kubectl get deployment -n kube-public
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-dp 1/1 1 1 6s
$ kubectl get deployment -n kube-public -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
nginx-dp 1/1 1 1 3m24s nginx nginx:1.7.9 app=nginx-dp
$ kubectl describe deployment nginx-dp -n kube-public
3.3、管理pod资源
$ kubectl get pods -n kube-public
NAME READY STATUS RESTARTS AGE
nginx-dp-6599b486d9-sj47f 1/1 Running 0 41m
$ kubectl exec -it nginx-dp-6599b486d9-sj47f bash -n kube-public
root@nginx-dp-6599b486d9-sj47f:/# ip add
1: lo:
$ kubectl delete pod nginx-dp-6599b486d9-sj47f -n kube-public
pod "nginx-dp-6599b486d9-sj47f" deleted
$ kubectl get pods -n kube-public
NAME READY STATUS RESTARTS AGE
nginx-dp-6599b486d9-tnr4h 1/1 Running 0 4s
$ kubectl delete deployment nginx-dp -n kube-public
deployment.extensions "nginx-dp" deleted
3.4、管理Service资源
$ kubectl create deployment nginx-dp --image=nginx:1.7.9 -n kube-public
deployment.apps/nginx-dp created
$ kubectl expose deployment nginx-dp --port=80 -n kube-public
service/nginx-dp exposed
$ kubectl describe svc nginx-dp -n kube-public
Name: nginx-dp
Namespace: kube-public
Labels: app=nginx-dp
Annotations: