暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Kubectl 备忘录

云原生数字化 2020-08-23
317

Kubectl 备忘录

Kubectl 自动补全

BASH
 环境下设置

# Centos 或者 RedHat 需要安装 bash-completion 包命令
$ yum install -y bash-completion

# Ubuntu 或者 Debian 需要安装 bash-completion 包命令
$ apt install -y bash-completion

# 写入当前用户 .bashrc 文件中
echo "source /usr/share/bash-completion/bash_completion" >> ~/.bashrc
echo "source <(kubectl completion bash)" >> ~/.bashrc

# 让当前终端生效
source ~/.bashrc

ZSH
 环境设置

# 写入当前用户 .zshrc 文件中
echo "if [ $commands[kubectl] ]; then source <(kubectl completion zsh); fi" >> ~/.zshrc

# 让当前终端生效
source ~/.zshrc

Kubeconfig 格式介绍

kubeconfig
 文件主要由下面几部分构成:

  • 集群参数
  • 用户参数
  • 上下文参数
  • 当前上下文
apiVersion: v1
kind: Config
preferences: {}
 
clusters: # 集群参数
- cluster:
  name: {cluster-name}
 
users: # 用户参数
- name: {user-name}
 
contexts: # 上下文参数
- context:
    cluster: {cluster-name}
    user: {user-name}
  name: kubernetes # 集群上下文名称
current-context: kubernetes # 当前上下文

多个集群 kubeconfig
 文件,请参考 Kubeconfig文件自动合并-实现K8S多集群切换

Kubectl apply -f . 或者  kubectl create -f . 执行顺序

下面是 kube-prometheus
 项目 setup
 目录

$ ls -lsh setup

0namespace-namespace.yaml
prometheus-operator-0alertmanagerCustomResourceDefinition.yaml
prometheus-operator-0podmonitorCustomResourceDefinition.yaml
prometheus-operator-0prometheusCustomResourceDefinition.yaml
prometheus-operator-0prometheusruleCustomResourceDefinition.yaml
prometheus-operator-0servicemonitorCustomResourceDefinition.yaml
prometheus-operator-0thanosrulerCustomResourceDefinition.yaml
prometheus-operator-clusterRole.yaml
prometheus-operator-clusterRoleBinding.yaml
prometheus-operator-deployment.yaml
prometheus-operator-service.yaml
prometheus-operator-serviceAccount.yaml

通过上面可以观察到 0namespace-namespace.yaml
 文件前面添加了一个 0
,这个yaml文件会优先执行。

执行顺序如下:

按 yaml文件
 首个字母或者数字来排序

  • 首先,数字从小到大顺序执行,比如:0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 ...
  • 然后,按字母排序顺序执行,比如:a -> b -> c -> d -> e -> f -> g ...

Kubectl 查询资源 [1]

# 查询k8s支持的 api 版本
$ kubectl api-versions

# 查询k8s支持的 resources 类型
$ kubectl api-resources

# resources 类型详细操作
$ kubectl api-resources --namespaced=true      # 所有命名空间作用域的资源
$ kubectl api-resources --namespaced=false     # 所有非命名空间作用域的资源
$ kubectl api-resources -o name                # 用简单格式列举所有资源(仅显示资源名称)
$ kubectl api-resources -o wide                # 用扩展格式列举所有资源(又称 "wide" 格式)
$ kubectl api-resources --verbs=list,get       # 支持 "list" 和 "get" 请求动词的所有资源
$ kubectl api-resources --api-group=extensions # "extensions" API 组中的所有资源

kubectl get --raw 使用

kubectl get --raw
:从 kubernetes 集群请求的原始 URI

例子:

# 查询 kubernetes metrics 信息
$ kubectl get --raw "/apis/metrics.k8s.io/v1beta1" | jq

{
  "kind""APIResourceList",
  "apiVersion""v1",
  "groupVersion""metrics.k8s.io/v1beta1",
  "resources": [
    {
      "name""nodes",
      "singularName""",
      "namespaced"false,
      "kind""NodeMetrics",
      "verbs": [
        "get",
        "list"
      ]
    },
    {
      "name""pods",
      "singularName""",
      "namespaced"true,
      "kind""PodMetrics",
      "verbs": [
        "get",
        "list"
      ]
    }
  ]
}

Kubectl 日志输出和调试 [1]

Kubectl 日志输出详细程度是通过 -v
 或者 --v
 来控制的,参数后跟一个数字
表示日志的级别
。具体解释请看下面列表:

日志级别描述
--v=0用于那些应该 始终 对运维人员可见的信息,因为这些信息一般很有用。
--v=1如果您不想要看到冗余信息,此值是一个合理的默认日志级别。
--v=2输出有关服务的稳定状态的信息以及重要的日志消息,这些信息可能与系统中的重大变化有关。这是建议大多数系统设置的默认日志级别。
--v=3包含有关系统状态变化的扩展信息。
--v=4包含调试级别的冗余信息。
--v=6显示所请求的资源。
--v=7显示 HTTP 请求头。
--v=8显示 HTTP 请求内容。
--v=9显示 HTTP 请求内容而且不截断内容。

参考链接

  • [1] https://kubernetes.io/zh/docs/reference/kubectl/cheatsheet/


文章转载自云原生数字化,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论