kubectl

介绍

kubectl是Kubernetes命令行工具,用于管理和操作Kubernetes集群。它可以通过API Server与Kubernetes集群通信,并提供了丰富的命令行接口,可用于查看和修改Kubernetes集群中的各种资源对象,例如Pod、Deployment、Service、ConfigMap等。

使用kubectl可以完成如下一些常见任务:

  • 部署应用程序:使用kubectl部署应用程序到Kubernetes集群中。

  • 管理Pod:使用kubectl创建、查看、删除或重启Pod。

  • 扩容应用程序:使用kubectl扩展或缩小应用程序的副本数。

  • 管理服务:使用kubectl创建、查看、删除或更新服务的配置信息。

  • 查看日志和状态:使用kubectl查看容器的日志和状态信息。

  • 操作配置文件:使用kubectl对Kubernetes资源对象进行配置文件的创建、更新和删除等操作。

  • 调试集群问题:使用kubectl查看集群中的资源对象和状态信息,以便于调试和定位问题。

总之,kubectl是管理和操作Kubernetes集群的关键工具之一,为Kubernetes用户提供了方便、高效和灵活的管理手段。

windows 安装

下载

下载地址:https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/#download-as-part-of-the-kubectl-installation-package

curl.exe -LO "https://dl.k8s.io/release/v1.26.0/bin/windows/amd64/kubectl.exe"

※备注:当出现“由于吊销服务器已脱机,吊销功能无法检查吊销”时,由于是https协议,因此被安全拦截,需要使用信任--insecure下载

curl.exe -LO --insecure "https://dl.k8s.io/release/v1.26.0/bin/windows/amd64/kubectl.exe"

安装

下载下来的kubectl就可以直接使用,为了方便将其加入到环境变量path中。

kubectl version --client

如果使用powershell则使用

./kubectl version --client

使用

将kubeConfig文件,存放在 ~/.kube下名为config的文件,没有则自己创建。如果不指定存放,则需要每次执行命令参数中携带 --kubeconfig=<fileName>
参考文档(K8s): https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#get

Get

kubectl get -h #获取get帮助

kubectl api-resources #获取所有api-resources信息

kubectl get pods -n <namespace> # 指定namespace下的pods,如果不指定namespace,则使用默认

kubectl get services -n <namespace> # 指定namespace下的服务(服务发现)

kubectl get deployments -n <namespace> #指定namespace下的发布(工作负载)

kubectl get ingress -n <namespace> #指定namespace下的发布(负载均衡)

kubectl get pods --selector=app==<serviceName> -n <namespace> #指定发布下的指定服务

kubectl get namespaces # 获取namespaces

kubectl get clusters # 查看集群

kubectl get <resource_type> <resource_name> -o yaml -n <namespace> > <fileName>.yaml # 下载资源信息yml,resource_type 可以为deployment,services,configMap
例:kubectl get deployment my-deployment -o yaml -n myTest > my-deployment.yaml

apply

当yaml文件没有任何变化时,apply执行,不会有什么效果,如果需要执行,要么修改文件,要么使用--force=true,force也可用于yaml文件变更导致提示用户使用最新的yaml修改的问题。

kubectl apply -f <fileName> -n <namespace> # 申请使用某一个空间信息
kubectl apply -f my-deployment.yaml -n myTest

Delete

kubectl delete pod <podName> -n <nameSpace> # 删除指定pod

kubectl delete deployment <resource_name> -n <nameSpace> # 删除指定deployment

异常

The Deployment "app-test" is invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app":"app-test", "version":"2.1"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable

配置文件中有部分属性为immutable(不可变),如 spec.selector ,如果需要修改则要么force,要么删除原有的。

posted on 2023-04-10 22:44  zhaoqiang1980  阅读(409)  评论(0编辑  收藏  举报