kubectl入门命令

一、 kubectl window Client

powershell以管理员身份运行

  • 安装kubectl client
choco install kubernetes-cli
kubectl version --client
  • 启用kubectl 命令自动补全
Set-ExecutionPolicy -Scope CurrentUser
RemoteSigned
A
kubectl completion powershell >> $PROFILE
  • 动态切换context

用途:~.kube\config配置文件中配置了多个k8s集群,可通过以下命令随时切换k8s集群

kubectl config current-context
kubectl config use-context docker-desktop
kubectl config current-context

二、可视化工具

Lens

Lens 是为那些每天使用 Kubernetes 的人设计的 IDE。它可以探索和导航 Kubernetes 集群,而无需学习 kubectl 命令,实时检查实时统计信息、事件和日志流。
它将所有集群、服务、工作负载、工具、自动化和相关资源整合在一起,以便于访问。Lens 与 Prometheus 集成,可视化并查看资源使用指标的趋势,包括 CPU、内存、网络和磁盘,以及总容量、实际使用情况、请求和限制。每个 k8s 资源都会自动生成详细的可视化信息。
Lens 带有 Helm 图表管理,允许发现和快速部署数千个公开可用的 Helm 图表并管理自己的存储库。浏览已安装的 Helm 图表及其修订版,只需单击一下即可升级。
Lens 是适用于 MacOS、Windows 和 Linux 操作系统的独立应用程序。

三、 常用命令

默认 --kubeconfig=config

  • target简称

statefulsets=>sts

services=>svc

pods=>po

configmaps=>cm

limitranges=>ing

persistentvolumes=>pv

persistentvolumeclaims=>pvc

1. 帮助

kubectl get -h
kubectl explain pods

2. 管理员

kubectl get namespaces
kubectl get node
kubectl get statefulsets

3. service

kubectl -n my-namespace get services |grep nginx
kubectl -n my-namespace get service -o wide nginx
kubectl -n my-namespace get service -o yaml nginx
kubectl -n my-namespace describe service nginx
  • 新增、修改服务端口号
kubectl -n my-namespace edit svc/nginx

4. pods

kubectl -n my-namespace get pods
kubectl -n my-namespace logs -f nginx-9f577f598-rj427
kubectl -n my-namespace delete pod nginx-9f577f598-rj427
kubectl -n my-namespace describe pod ginx-9f577f598-rj427
kubectl -n my-namespace cp nginx-9f577f598-rj427:data/logs/app.log app.log --retries=-1
  • 压缩日志文件并复制到本地
kubectl -n my-namespace exec -it nginx-9f577f598-rj427 -- /bin/bash
tar -czvf filename.tar.gz directory/file1 directory/file2 ...
kubectl -n my-namespace cp ginx-9f577f598-rj427:data/filename.tar.gz filename.tar.gz --retries=-1
  • 前一个容器的崩溃日志

使用 --previous可以看到前一个容器的日志
使用 describe 查看容器详情,可以通过Last StateEvents

  • 137有特殊的含义,表示该进程由外部信号终止
  • 数字137是两个数字的总和:128+x,其中x是终止进程的信号编号。在这个例子中, x等于9,这是SIGKILL的信号编号,意味着这个进程被强行终止
kubectl -n my-namespace describe pod ginx-9f577f598-rj427 --previous
kubectl -n my-namespace describe pod ginx-9f577f598-rj427
  • 强制删除pod
kubectl -n my-namespace delete pod nginx-9f577f598-rj427 --force --grace-period=0

参考:
KUBERNETES:24—POD托管(LIVENESSPROBE存活探针:HTTP GET探针、TCP套接字探针、EXEC探针)

5. deployment

  • 查看
kubectl -n my-namespace get deployments
kubectl -n my-namespace get deployment nginx
  • 创建、修改
kubectl -n my-namespace apply -f nginx.yaml
kubectl -n my-namespace edit deployment nginx
kubectl -n my-namespace scale deployment nginx --replicas=1

6. 资源管理

kubectl -n my-namespace get cm
kubectl -n my-namespace get ing
kubectl -n my-namespace get pv
kubectl -n my-namespace get pvc

7. 交互命令

kubectl -n my-namespace exec -it nginx-9f577f598-rj427 -- /bin/sh
kubectl -n my-namespace exec -it nginx-9f577f598-rj427 -- top
  • 复杂命令
kubectl -n my-namespace exec nginx-9f577f598-rj427 -- bash -c 'echo $HOME'

8. 日志

kubectl -n my-namespace logs -f nginx-9f577f598-rj427 |grep -C 10 "短信发送失败"

四、 扩展

1. hosts配置

cat >> /etc/hosts << EOF
192.168.1.100 cas.example.org
EOF

2. 常用工具包

apt-get update
apt-get install -y iputils-ping
apt-get install -y telnet
apt-get install -y curl
apt-get install -y wget
apt-get install -y aria2

3. arthas

apt-get install -y aria2
aria2c https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar

4. tcpdump

tcpdump -i any host 192.168.1.100 and dst port 80 -w all.pcap

5. kebuctl快捷命令

  • cmd或Cmder

找到HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor,右键新建-字符串值,名为AutoRun,值为C:\cmd-alias.bat,保存退出。
新建C:\cmd-alias.bat文件,内容如下
@doskey kubectl-admin=kubectl --kubeconfig=C:/Users/admin/.kube/admin.kubeconfig $*

  • linux模拟终端(可结合MobaXterm宏脚本)
    alias kubectl-admin='kubectl --kubeconfig=C:/Users/admin/.kube/admin.kubeconfig'

参考:
choco 使用详解
kubectl window
k8s——三种IP地址
windows自定义快捷命令

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐