k8s常用命令总结
一、kubectl简介
kubectl 是 Kubernetes 的命令行工具(CLI),是 Kubernetes 用户和管理员必备的管理工具。
kubectl 提供了大量的子命令,方便管理 Kubernetes 集群中的各种功能。以下是查看子命令的帮助命令:
- kubectl -h:查看子命令列表
- kubectl options:查看全局选项
- kubectl --help:查看子命令的帮助
- kubectl [command] [PARAMS] -o=:设置输出格式(如 json、yaml、jsonpath 等)
- kubectl explain [RESOURCE]:查看资源的定义
二、命令行自动补全配置
# Ubuntu
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.14.2/bin/linux/amd64/kubectl
chmod +x kubectl
mv kubectl /usr/local/bin/
sudo mv kubectl /usr/local/bin/
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
# Centos
yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
三、kubectl常用命令总结
1、kubectl version
输出 client 和 server 的版本信息
[[email protected] ~]# kubectl version
Client Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.2", GitCommit:"66049e3b21efe110454d67df4fa62b08ea79a19b", GitTreeState:"clean", BuildDate:"2019-05-16T16:23:09Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.2", GitCommit:"66049e3b21efe110454d67df4fa62b08ea79a19b", GitTreeState:"clean", BuildDate:"2019-05-16T16:14:56Z", GoVersion:"go1.12.5", Compiler:"gc", Platform:"linux/amd64"}
2、kubectl run
用法:kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...] [options]
2.1、创建一个镜像为redis、副本为2、暴露端口为6379的redis容器
[[email protected] ~]# kubectl run redis --image=redis --replicas=2 --port=6379
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/redis created
3、kubectl create
用法:kubectl create -f 文档名称 [选项]
,创建资源
3.1、创建dashboard通过yaml文件
kubectl create -f kubernetes-dashboard.yaml
3.2、kubectl create namespace:创建namespace
用法:kubectl create namespace NAME [–dry-run] [options]
kubectl create namespace ppp
3.3、kubectl create secret:创建secret
用法:kubectl create secret [flags] [options]
(1).创建一个TLS Secret
kubectl create secret tls tomcat-ingress-sercret --cert=tls.crt --key=tls.key
kubectl get secrets
kubectl describe secrets tomcat-ingress-sercret
(2)创建一个generic Secret
kubectl create secret generic mysql-root-password [email protected]
kubectl get secrets
3.4、kubectl create configmap:创建configmap
用法:kubectl create configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run] [options]
kubectl create configmap nginx-config --from-literal=nginx_port=80 --from-literal=server_name=myapp.ydt.com
3.5、kubectl create serviceaccount:创建serviceaccount
kubectl create serviceaccount admin
kubectl create serviceaccount mysa -o yaml --dry-run
4、kubectl get
用法:kubectl get [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...] (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [flags] [options]
4.1、kubectl get nodes
(1)、获取节点信息
kubectl get nodes
(2)、获取节点详细信息
kubectl get nodes -o wide
(3)、获取节点标签
kubectl get nodes --show-labels
(4)、给节点打标签
kubectl label nodes node1 disktype=ssd```
4.2、kubectl get pods
(1)、获取指定namespace的Pod信息(不加-n默认获取default)
#获取pod节点运行信息
kubectl get pods -n prod
(2).获取namespace信息
kubectl get namespace
(3).获取所有namespace的Pod信息
kubectl get pods --all-namespaces
kubectl get pods -A
(4)、获取Pod的详细信息,获取一些更具体的信息,可以通过使用选项“-o”
kubectl get pod < podname > -o yaml 以yawl格式输出pod的详细信息
kubectl get pods -o wide
kubectl get pods -A -o wide
kubectl get pods -n prod 容器名称 -o yaml
(5)、获取Pod的labels
kubectl get pods --show-labels
(6)、查看所有pod对于指定标签的key是否有value,有则显示,没有则空白
kubectl get pods -L apps,run
(7)、获取含有指定标签key的pod
kubectl get pods -l apps --show-labels
(8)、获取含有指定标签key=value的pod
等值关系:=和!=
kubectl get pods -l release=stable --show-labels
(9)、获取podIP
kubectl get pod pod-name -o jsonpath=’{.status.podIP}’
#其中-n pred是指定命名空间pred
kubectl get pods nginx-862964dd6c-c56ar -n pred -o jsonpath='{.status.podIP}'
(10)、导出指定pod的yaml配置
kubectl get pods myapp-deploy-74fb9bdf9b-2rt79 -n pred -o yaml --export
4.3、kubectl get namespaces:获取namespace信息
1、获取指定namespace信息
kubectl get namespaces (命名空间)
2、获取指定namespace的yaml格式和json格式信息
kubectl get namespaces kube-system -o yaml
kubectl get namespaces kube-system -o json
4.4、kubectl get rs:获取ReplicaSet控制器信息
kubectl get rs
4.5、kubectl get deploy && kubectl get deployment
1、获取Deployment控制器信息
kubectl get deploy -n pred
kubectl get deployments -n pred
2、滚动更新
修改后的滚动更新过程
kubectl get pods -w
查看滚动更新后历史版本和现在运行版本
kubectl get rs -o wide
4.6、kubectl get svc:获取service信息
1、获取默认命名空间和指定命名空间的service
kubectl get svc
kubectl get svc -n pred
2、获取pv信息和pvc信息
kubectl get pv
kubectl get pvc
3、获取configMap信息
kubectl get cm
kubectl get configmap
4、获取statefulSet控制器信息
kubectl get sts
5、获取serviceaccount信息
kubectl get serviceaccounts && kubectl get sa
5、kubectl label
用法:kubectl label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]
,资源标签设定
1、给一个pod打一个没有存在的标签key=value
kubectl label pods pod-demo release=canary
kubectl get pods pod-demo --show-labels
2、给一个pod已经存在的标签重新赋值
kubectl label pods pod-demo release=stable
kubectl label pods pod-demo release=stable --overwrite
3、通过key删除标签
kubectl get nodes --show-labels
kubectl label nodes node1 disktype-
6、kubectl describe
用法:kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME) [options]
,显示资源的详细描述
1、查看某个pod的详细信息
kubectl describe pods (容器名) -n pred (指定命名空间)
2、查看节点详细信息
kubectl describe nodes
7、kubectl delete
用法:kubectl delete ([-f FILENAME] | [-k DIRECTORY] | TYPE [(NAME | -l label | --all)]) [options]
,删除资源
1、删除pods资源
kubectl delete pods (容器名) -n pred
8、kubectl edit
1.edit提供了另一种更新resource源的操作,通过edit能够灵活的在一个common的resource基础上,发展出更过的significant resource。使用edit直接更新前面创建的pod的命令:
用法:kubectl edit (RESOURCE/NAME | -f FILENAME) [options]
,编辑资源清单
kubectl edit pods -n prod ownership-query-node-6c45577f9b-c69s9 -o yaml
9、kubectl exec
用法:kubectl exec POD [-c CONTAINER] -- COMMAND [args...] [options]
,类似docker exec,进入容器
kubectl exec -it (容器名)-- /bin/sh -n pred
kubectl exec -it (容器名)sh -n pred
10、kubectl logs
用法:kubectl logs [-f] [-p] (POD | TYPE/NAME) [-c CONTAINER] [options]
,类似于docker logs,查看容器日志
(5).输入关键字查找项目名称
kubectl get pod -n prod |grep website(关键字)
(6).查看项目详细信息
kubectl describe pods -n prod (项目名称)
(7).修改容器的副本数
设置容器的副本数为0
kubectl scale deployment -n pred (容器名称) --replicas=0