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 安装
下载
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,要么删除原有的。