关于云计算:常用的几款工具让-Kubernetes-集群上的工作更容易

33次阅读

共计 3537 个字符,预计需要花费 9 分钟才能阅读完成。

之前写过一篇 介绍了工具减速云原生 Java 开发。

其实日常工作中在集群上的操作也十分多,明天就来介绍我所应用的工具。

kubectl-alias

应用频率最高的工具,我本人略微批改了一下,退出了 StatefulSet 的反对。

这个是我的 https://github.com/addozhang/kubectl-aliases,基于 https://github.com/ahmetb/kubectl-aliases。

比方输入某个 pod 的 json,kgpoojson xxx 等同于 kubectl get pod xxx -o json

联合 jq 应用成果更好 😂。

语法解读

  • k=kubectl

    • sys=--namespace kube-system
  • commands:

    • g=get
    • d=describe
    • rm=delete
    • a:apply -f
    • ak:apply -k
    • k:kustomize
    • exexec -i -t
    • lologs -f
  • resources:

    • po=pod, dep=deploymenting=ingresssvc=servicecm=configmapsec=secret,ns=namespaceno=node
  • flags:

    • output format: oyamlojsonowide
    • all--all or --all-namespaces depending on the command
    • sl--show-labels
    • w=-w/--watch
  • value flags (should be at the end):

    • n=-n/--namespace
    • f=-f/--filename
    • l=-l/--selector

kubectx + kubens

装置看这里

kubectx 用于在不同的集群间进行疾速切换。如果用 kubectl,你须要:

# context 列表
kubectl config current-context 
# 设置 context
kubectl config use-context coffee

kubens 就是在不同 namespace 间疾速切换的工具。用 kubectl 的话,须要:

# namespace 列表
kbuectl get ns
# kubectl config set-context --current --namespace=kube-system

k9s

没错,只比 k8s 多了个 1 😂。

k9s 提供了终端 UI 与 Kubernetes 集群进行编辑交互。自己罕用的比方:

  • F 配置端口转发
  • l 输入 pod 日志
  • e 批改资源对象
  • s pod 终端交互模式
  • y yaml 形式输入资源对象
  • d describe 资源对象
  • ctrl+d 删除 pod

启动形式

# 指定 namespace 运行
k9s -n mycoolns
# 指定 context 运行
k9s --context coolCtx
# 只读模式运行
k9s --readonly

键入问号“?”就能够关上快捷操作指引。

stern

stern 能够用来 tail 集群上的多个 pod 和 pod 中多个容器的日志。不同的 pod 和容器以不同的色彩辨别,不便 debug。

比方应用命令 stern -l tier=control-plane -n kube-system 能够输入 kube-system 命名空间下管制立体(labeltier=control-plane)pod 的日志。

命令行选项

Tail multiple pods and containers from Kubernetes

Usage:
  stern pod-query [flags]

Flags:
  -A, --all-namespaces             If present, tail across all namespaces. A specific namespace is ignored even if specified with --namespace.
      --color string               Color output. Can be 'always', 'never', or 'auto' (default "auto")
      --completion string          Outputs stern command-line completion code for the specified shell. Can be 'bash' or 'zsh'
  -c, --container string           Container name when multiple containers in pod (default ".*")
      --container-state string     If present, tail containers with status in running, waiting or terminated. Default to running. (default "running")
      --context string             Kubernetes context to use. Default to current context configured in kubeconfig.
  -e, --exclude strings            Regex of log lines to exclude
  -E, --exclude-container string   Exclude a Container name
      --field-selector string      Selector (field query) to filter on. If present, default to ".*" for the pod-query.
  -h, --help                       help for stern
  -i, --include strings            Regex of log lines to include
      --init-containers            Include or exclude init containers (default true)
      --kubeconfig string          Path to kubeconfig file to use
  -n, --namespace strings          Kubernetes namespace to use. Default to namespace configured in Kubernetes context. To specify multiple namespaces, repeat this or set comma-separated value.
  -o, --output string              Specify predefined template. Currently support: [default, raw, json] (default "default")
  -l, --selector string            Selector (label query) to filter on. If present, default to ".*" for the pod-query.
  -s, --since duration             Return logs newer than a relative duration like 5s, 2m, or 3h. Defaults to 48h.
      --tail int                   The number of lines from the end of the logs to show. Defaults to -1, showing all logs. (default -1)
      --template string            Template to use for log lines, leave empty to use --output flag
  -t, --timestamps                 Print timestamps
      --timezone string            Set timestamps to specific timezone (default "Local")
  -v, --version                    Print the version and exit

Lens

Lens 是用来管制 Kubernetes 的 IDE,开源且收费。

打消了集群操作的复杂性、提供了实时的可察看性、不便故障排查、反对多零碎的桌面客户端、兼容多种集群。

Infra App

Infra App 跟 Lens 差不多,UI 较 Lens 好些,然而性能就弱很多,相似 Lens 的只读模式。

免费版比免费版的区别只在于反对的集群数量,免费版只反对一个集群。

kubefwd

kubefwd,这个始终有装置然而应用次数寥寥,因为利用之间的拜访没有走 service,不过偶然做些试验的时候会用的上。

kubefwd 是一个用于端口转发 Kubernetes 中指定 namespace 下的全副或者局部 pod 的命令行工具。kubefwd 应用本地的环回 IP 地址转发须要拜访的 service,并且应用与 service 雷同的端口。kubefwd 会长期将 service 的域条目增加到 /etc/hosts 文件中。

启动 kubefwd 后,在本地就能像在 Kubernetes 集群中一样应用 service 名字与端口拜访对应的应用程序。

总结

善用工具能够晋升效率,但并不是不可或缺的。

如果你有其余的工具,欢送留言提出。

文章对立公布在公众号 云原生指北

正文完
 0