kubectl run
2、创建资源对象
kubectl run name --image=(镜像名) \
--replicas=(备份数) \
--port=(容器要暴露的端口) \
--labels=(设定自定义标签)
kubectl create -f **.yaml 陈述式对象配置管理方式
kubectl apply -f **.yaml 声明式对象配置管理方式(也适用于更新等)
21、根据 yaml 创建资源, apply 可以重复执行,create不行
kubectl create -f pod.yaml
kubectl apply -f pod.yaml
kubectl get
3、查看资源对象
kubectl get namespace 查看命名空间
kubectl get pods,services -o wide (-o 输出格式 wide 表示 plain-text)
# -l 标签选择器(多个的话是与逻辑),-n 指定命名空间,不指定默认 default
kubectl get pod -l "key=value,key=value" -n kube-system
# -l 基于集合的标签选择器, -L 查询结果显示标签
kubectl get pod -l "key1 in (val1,val2),!key2" -L key
注意:为了避免 shell 解释器解析! 必须要为此类表达式使用双引号
kubectl get pod -w(-w 监视资源变动信息)
13、查看某资源对象的配置文件
kubectl get source_type source_name -o yaml --export > file.yaml
--export 表示省略由系统生成的信息
17、查看所有 pod 列表, -n 后跟 namespace, 查看指定的命名空间
kubectl get pod
kubectl get pod -n kube
kubectl get pod -o wide
18、查看 RC 和 service 列表, -o wide 查看详细信息
kubectl get rc,svc
kubectl get pod,svc -o wide
kubectl get pod <pod-name> -o yaml
25、查看 endpoint 列表
kubectl get endpoints
30、查看节点 labels
kubectl get node --show-labels
kubectl logs
4、打印容器中日志信息
# -f 持续监控,-c 如果 pod 中只有一个容器不用加
kubectl logs name -f -c container_name -n kube-system
28、查看容器的日志
kubectl logs <pod-name>
kubectl logs -f <pod-name> # 实时查看日志
kubectl log <pod-name> -c <container_name> # 若 pod 只有一个容器,可以不加 -c
kubectl exec
5、在容器中执行命令
kubectl exec name -c container_name -n kube-system -- 具体命令
kubectl exec -it pod_name /bin/sh 进入容器的交互式 shell
26、执行 pod 的 date 命令
kubectl exec <pod-name> -- date
kubectl exec <pod-name> -- bash
kubectl exec <pod-name> -- ping 10.24.51.9
27、通过 bash 获得 pod 中某个容器的 TTY,相当于登录容器
kubectl exec -it <pod-name> -c <container-name> -- bash
eg:
kubectl exec -it redis-master-cln81 -- bash
kubectl delete
6、删除资源对象
# 删除指定资源对象
kubectl delete [pods/services/deployments/...] name
# 删除kube-system 下指定标签的资源对象
kubectl delete [pods/services/deployments/...] -l key=value -n kube-system
# 删除 kube-system 下所有资源对象
kubectl delete [pods/services/deployments/...] --all -n kube-system
# 强制删除 Terminating 的资源对象
kubectl delete [pods/services/deployments/...] source_name --force --grace-period=0 -n kube-system
kubectl delete -f xx.yaml
kubectl apply -f xx.yaml --prune -l <labels>(一般不用这种方式删除)
# 默认删除控制器会同时删除其管控的所有 Pod 对象,加上 cascade=false 就只删除 rs
kubectl delete rs rs_name --cascade=fale
22、基于 pod.yaml 定义的名称删除 pod
kubectl delete -f pod.yaml
23、删除所有包含某个 label 的 pod 和 service
kubectl delete pod,svc -l name=<label-name>
24、删除所有 Pod
kubectl delete pod --all
kubectl explain
12、当定义资源配置文件时,不知道怎么定义的时候,
可以查看某类型资源的配置字段解释
kubectl explain pods/deployments/...
二级对象可用类似于 pods.spec 这种方式查看
kubectl explain pods.spec
29、查看注释
kubectl explain pod
kubectl explain pod.apiVersion
kubectl describe
19、显示 Node 的详细信息
kubectl describe node 192.168.0.212
20、显示 Pod 的详细信息, 特别是查看 pod 无法创建的时候的日志
kubectl describe pod <pod-name>
eg:
kubectl describe pod redis-master-tqds9
kubectl label
14、标签管理相关命令
kubectl label pods/pod_name key=value 添加标签,如果是修改的话需要后面添加--overwrite
# 给工作节点添加标签,后续可以使用 nodeSelector 来指定 pod 被调度到指定的工作节点上运行
kubectl label nodes node_name key=value
1、查看集群状态
查看客户端及服务端程序版本信息
kubectl version --short=true
# 查看集群信息
kubectl cluster-info
10、查看 API 版本
kubectl api-versions
7、更新资源对象
# --force 如果需要基于此前的配置文件进行替换,需要加上 force
kubectl replace -f xx.yaml --force
8、将服务暴露出去(创建 Service)
kubectl expose deployments/deployment_name --type="NodePort" \
--port=(要暴露的容器端口) \
--name=(Service 对象名字)
9、扩容和缩容
kubectl scale deployment/deployment_name --replicas=N
# 只有当前副本数等于 M 时才会执行扩容或者缩容
kubectl scale deployment/deployment_name --replicas=N --current-replicas=M
11、在本地主机上为 API Server 启动一个代理网关
kubectl proxy --port=8080
之后就可以通过 curl 来对此套字节发起访问请求
curl localhost:8080/api/v1/namespaces/ | jq .items[].metadata.name (jq 可以对 json 进行过滤)
15、注解管理相关命令
kubectl annotate pods pod_name key=value
16、patch 修改 Deployment 控制器进行控制器升级
# -p 以补丁形式更新,补丁形式默认是 json
kubectl patch deployment deployment-demo -p '{"spec": {"minReadySeconds": 5}}'
# 修改depolyment 中的镜像文件
kubectl set image deployments deployment-demo myapp=ikubernetes/myapp:v2
# 打印滚动更新过程中的状态信息
kubectl rollout status deployment deployment-demo
# 监控 deployment 的更新过程
kubectl get deployments deployment-demo --watch
# 暂停更新
kubectl kubectl rollout pause deployments deployment-demo
# 继续更新
kubectl rollout resume deployments deployment-demo
# 查看历史版本(能查到具体的历史需要在 apply 的时候加上--record 参数)
kubectl rollout history deployments deployment-demo
# 回滚到指定版本,不加--to-version 则回滚到上一个版本
kubectl rollout undo deployments deployment-demo --to-revision=2
来源:Kubernetes(K8s)入门文档.pdf