k8s常用指令
学习k8s许久了,我来分享下常用的指令,有需要的mark一下
·
前言
学习k8s许久了,我来分享下常用的指令,有需要的mark一下
k8s常用指令
常用指令 | ||
---|---|---|
命令 | 描述 | |
基础命令 | ||
create | 通过文件名或标准输入创建资源 | |
expose | 将一个资源公开为一个新的Service | |
run | 在集群中运行一个特定的镜像 | |
set | 在对象上设置特定的功能 | |
get | 显示一个或多个资源 | |
explain | 文档参考资料 | |
edit | 使用默认的编辑器编辑资源 | |
delete | 通过文件名、标准输入、资源名称或标签选择器来删除资源 | |
部署命令 | ||
rollout | 管理资源的发布 | |
rolling-update | 对给定的复制控制器滚动更新 | |
scale | 扩容或缩容Pod、Deployment、ReplicaSet、RC或Job | |
autoscale | 创建一个自动选择扩容或缩容并设置Pod数量 | |
certificate | 修改证书资源 | |
cluster-info | 显示集群信息 | |
top | 显示资源(CPU、Memory、Storage)使用。需要Heapster运行 | |
cordon | 标记节点不可调度 | |
uncordon | 标记节点可调度 | |
drain | 维护期间排除节点(驱除节点上的应用,准备下线维护) | |
taint | 设置污点属性 | |
故障诊断和调试命令 | ||
describe | 显示特定资源或资源组的详细信息 | |
logs | 在一个Pod中打印一个容器日志。如果Pod只有一个容器,容器名称是可选的 | |
attach | 附加到一个运行的容器 | |
exec | 执行命令到容器 | |
port-forward | 转发一个或多个本地端口到一个Pod | |
proxy | 运行一个proxy到Kubernetes API Server | |
cp | 拷贝文件或目录到容器 | |
auth | 检查授权 | |
高级命令 | ||
apply | 通过文件名或标准输入对资源应用配置 | |
patch | 使用补丁修改、更新资源的字段 | |
replace | 通过文件名或标准输入替换一个资源 | |
convert | 不同的API版本之间转换配置文件 | |
设置命令 | ||
label | 更新资源上的标签 | |
annotate | 更新资源上的注释 | |
completion | 用于实现kubectl工具自动补全 | |
其他命令 | ||
api-versions | 打印支持的API版本 | |
config | 修改kubeconfig文件(用于访问API,比如配置认证信息) | |
help | 所有命令帮助 | |
plugin | 运行一个命令行插件 | |
version | 打印客户端和服务版本信息 |
预备的文件
namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: hello
pod.yaml
apiVersion: v1
kind: Pod
metadata:
labels:
run: mynginx
name: mynginx
namespace: hello
spec:
containers:
- image: nginx
name: mynginx
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: my-dep
name: my-dep
namespace: hello
spec:
replicas: 3
selector:
matchLabels:
app: my-dep
template:
metadata:
labels:
app: my-dep
spec:
containers:
- image: nginx
name: nginx
service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: my-dep
name: my-dep
namespace: hello
spec:
selector:
app: my-dep
ports:
- port: 8000
protocol: TCP
targetPort: 80
nodePort: 31234
type: NodePort
创建资源
kubectl run
创建运行的pod
语法:kubectl run NAME --image=image [–env=“key=value”] [–port=port] [–replicas=replicas] [–dry-run=bool] [–overrides=inline-json] [–command] – [COMMAND] [args…]
kubectl run nginx --labels="app=nginx-example" --image=nginx:1.10 --port=80
kubectl create
# 创建deployment 名字nginx,镜像nginx,副本数3
kubectl create deployment nginx --image=nginx --replicas=3
# 根据yaml文件创建资源对象
kubectl create -f deployment.yaml
# 根据对个yaml文件创建不同的资源对象
kubectl create -f namespace.yaml deployment.yaml -f service.yaml
# 创建命名空间
kubectl create namespace hello
kubectl apply
# 根据yaml文件创建资源对象
kubectl apply -f deployment.yaml
标签操作
–show-labels
查看标签
kubectl get nodes --show-labels
kubectl get pods --show-labels
kubectl label
添加标签
kubectl label nodes nodeName labelName=value
kubectl label pod podName -n namespaceName labelName=value
修改标签
–overwrite
kubectl label nodes nodeName labelName=value2 --overwrite
kubectl label pod podName -n namespaceName labelName=value2 --overwrite
删除标签
kubectl label nodes nodeName labelName-
kubectl label pod podName -n namespaceName labelName-
查看
kubectl get
普通get
# 查看集群状态
kubectl get sc
# 查看pod
kubectl get pods
kubectl get pod
kubectl get po
#同时查看多个资源
kubectl get deploy,pods
#查看pod端口信息
kubectl get pod,svc
#特定命名空间下的pod信息
kubectl get pod -n hello
#查看所有命名空间下的pod信息
kubectl get pod --all-namespaces
kubectl get pod -A
#获取Pod运行在哪个节点上的信息,以纯文本格式输出,包含任何附加信息
kubectl get pod -o wide
#显示pod标签
kubectl get pod --show-labels
#查看特定标签的pod
kubectl get pod -n hello -l app=my-dep
#以json格式显示pod的详细信息
kubectl get pod mynginx -n hello -o json
#查看replicasets
kubectl get replicasets -o wide
#查看deployments
kubectl get deployments -o wide
#查看ip和端口
kubectl get ep
#查看事件
kubectl get ev
yaml方式
#以yaml格式显示pod详细信息
kubectl get pod podName -o yaml
kubectl get pod -f pod.yaml
#用get生成yaml文件(就是把输出的yaml存储成文件)
kubectl get deploy nginx --export -o yaml>xxx.yaml
#查看资源子节点详情
kubectl explain pods.spec.containers
暴露端口
#暴露端口创建service:创建指向deployment名为my-dep端口为80,方式为nodeport名为nginx-service的service,开启端口为80,k8s为service分配一个随机的访问端口,不可指定nodeport
kubectl expose deployment my-dep -n hello --port=80 --type=NodePort --target-port=80 --name=nginx-service
#指定端口
kubectl create service nodeport my-dep -n hello --tcp=80:80 --node-port=31280 --name nginx-service2
故障排除
资源详情describe
# 显示Node的详细信息
kubectl describe nodes 名称前缀
# 显示pod的详细信息
kubectl describe pods 名称前缀
资源日志排查logs
# 容器日志查看
kubectl logs mynginx -n hello
# 追踪查看日志,持续输出
kubectl logs -f mynginx -n hello
进入资源exec
#进入资源
kubectl exec -it mynginx -n hello /bin/bash
kubectl exec mynginx -n hello -it -- /bin/bash
更新
版本更新
kubectl set image deployment my-dep -n hello nginx=nginx:1.15 --record
编辑更新
#yaml形式进行编辑
kubectl edit deployment my-dep
回滚更新
#查看历史版本
kubectl rollout history deployment my-dep -n hello
#回滚到上个版本
kubectl rollout undo deployment my-dep -n hello
#回滚到指定历史版本
kubectl rollout undo deployment my-dep -n hello --to-revision=3
#查看回滚状态
kubectl rollout status deployment my-dep -n hello
替换更新
kubectl replace -f xxx.yaml
伸缩容
kubectl scale deployment my-dep -n hello --replicas=4
删除
#删除资源 (deployment,service,pod...)
kubectl delete deployment my-dep -n hello
#删除所有pod
kubectl delete pods --all
#删除包含符合label的pod和service
kubectl delete pod,service -l app=my-dep
#删除yaml里面定义的资源
kubectl delete -f xxx.yaml
#删除命名空间
kubectl delete ns hello
# 删除指定命名空间的资源
kubectl delete pod mynginx -n hello
# 删除计时
time -p kubectl delete pod mynginx
# 强制删除
kubectl delete pod mynginx -n hello --grace-period=0 --force
# 删除立即执行
kubectl delete pod mynginx -n hello --grace-period=1
kubectl delete pod mynginx -n hello --now
更多推荐
已为社区贡献3条内容
所有评论(0)