kubectl
CLI命令
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#config
缩写
名称 | 缩写 | Kind |
---|---|---|
namespaces | ns | Namespace |
deployments | deploy | Deployment |
scrvices | svc | Service |
nodes | no | Node |
pods | po | Pod |
replicasets | rs | ReplicaSets |
statefulsets | sts | StatefulSet |
ConfMap | cm | ConfMap |
更新证书
#kubeadm 部署换证书方法
kubeadm certs check-expiration #查看什么时候过期
kubeadm certs renew all #更新
docker ps | grep -v pause | grep -E "etcd|scheduler|controller|apiserver" | awk '{print $1}' | awk '{print "docker","restart",$1}' | bash #重启
kubeadm certs check-expiration #查看有没有增加时长,此时还是用不了
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config #结束,能用了
查看证书
包含证书和DNS地址
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -text
kubectl
通用选项
- -o yaml/json 以yaml/json格式输出
- -A 列出资源的全部信息
- -owide 列出当前资源的详细信息
endpoints 地址
k get endpoints <namespace>
获取Pod名字
export POD_NAME=$(kubectl get pods --namespace monitoring -l "app.kubernetes.io/name=grafana,app.kubernetes.io/instance=grafana" -o jsonpath="{.items[0].metadata.name}")
patch
替换字段或字段值, 例如:
将spec.type
的值修改为: NodePort
kubectl patch svc simple-prod-query -n observability -p '{"spec":{"type":"NodePort"}}'
uncordon 调度
将Pod变为可调度, 与污点/容忍度相关 语法:
kubectl uncordon <node-name>
edit 编辑
编辑现有的资源 语法: type: cm/ConfMap, po/Pods, svc/Service, deploy/Deployment...
kubectl edit <type>/<pod>
选项:
- -n monitoring
- -o yaml
- -o yaml > a.yaml 以yaml/json格式输出并保存到coredns-config.yaml文件
示例:
ct edit svc/prometheus-k8s -n monitoring
wait 等待
等待一组Pod/Deployment/Service/Certiflcate等资源完成
语法:
kubectl wait --for=<条件> <资源类型>/<资源名> [options]
示例: 等待一个命名空间为default
的deployment/opentelemetry-operator-controller-manager
deployment的资源的condition是Complete的时间300秒
kubectl wait --for=condition=Complete deployment/opentelemetry-operator-controller-manager -n default --timeout=300s
options:
- --timeout=300s 等待300s
create 创建
语法:
kubectl create <options>
options:
- namespace/ns 创建命名空间
- deployment
<name>
创建一个deployment部署- --image
<image:version>
镜像 - --replicas 副本数量
serviceaccount
<服务账号名>
创建一个服务账号
- --image
config
config current-context 查看当前上下文
config set-context $(ct config current-context) --namespace=<ns>
切换命名空间
查看kubeconf证书
kubectl config view --minify --raw
切换到dev
命名空间
kubectl config set-context $(kubectl config current-context) --namespace=dev
切换到默 认命名空间
kubectl config set-context $(kubectl config current-context) --namespace=default
run 运行
- --image=
<image>
镜像 - --replicas=
<number>
副本数量 - it 交互模式
--rm
运行完毕自动删除Pod- --namespace/ns
<ns>
在命名空间中创建 示例: 以交互模式创建3个busybox副本,完成后销毁
run busybox --image-busybox -it --rm --replicas=3
explain
kubectl explain sts.spec.serviceName
exec 执行
exec -it <pod>
-- <shell>
shell
shell解释器, 例如sh
,bash
expose
语法:
kubectl expose deploy/<pod-name> <options>
options:
- --name=
<service-name>
服务名称 - --port=
<number>
对外暴露端口 - --target-port=
<number>
容器端口 - --type=
<ClusterIP/NodePort/ExternalName/LoadBalancer>
示例: 对外开放Nginx的端口为8080
kubectl expose deploy/nginx --name=nginx --port=8080 --target-port=80
get 获取
语法:
kubectl get [options]
options:
- -o yaml > coredns-config.yaml 以yaml/json格式输出并保存到coredns-config.yaml文件
- get node/nodes 列出所有节点
- -owide 列出详细的nodes信息
- get all 列出命名空间所有, 包括nodes, deployment, service,crd
- get pod
- -A 列出Pod信息
- -owide 列出详细的pod信息
- --show-labels 查看每个 Pod 的标签
- -n=
"<ns-name>"
查看命名空间的pod - -l "
<key=value>
" 查看某个标签所在的Pod- -o wide 查看某个标签所在的Pod的详细信息
- get deployment
<pod>
-o yaml >> app2.yaml 输出到文件,yaml可改为json格式- --show-labels 显示所有部署的标签
- deploy/
<deployment-name>
--show-labels 显示<deployment-name>
部署的标签 - -l "
<key=value>
" 查看某个标签所在的Pod- -o wide 查看某个标签所在的Pod的详细信息
- get svc 获取service信息
- get describe service/svc
<service-name>
- get rs 查看 Deployment 创建的 ReplicaSet
- --watch 观察副本集(需要再另外终端进行扩容/减配方可观察)
- get hpa 查看自动缩放
- get ns 查看命名空间
- get serviceaccounts 列举你当前名字空间 中的所有服务账号资源
- get cert Secret的别名,存储隐私数据
- get clusterrolebindings 获取ClusterRole 的所有权元数据
- -o yaml 以yaml形式输出
-w
: 使用watch模式,实时监视资源的变化,一旦有新的Pod被创建或者现有的Pod发生变化,将立即显示在命令行中
set
set image deployment/deploy <pod>
<url>
--record 给pod设置镜像并记录到历史记录
set image deploy/<pod-name>
<image-name>
=<image:version>
示例:
kubectl set image deploy/nginx nginx=nginx:1.23