1. 获取信息
# 查看k8s健康状态
kubectl get cs
# 获取所有命名空间
kubectl get ns
# k8s获取节点信息
kubectl get nodes
# 列出服务
kubectl get services
kubectl get svc
# 列出replicationcontrollers
kubectl get replicationcontrollers
kubectl get rc
# 列出ReplicaSet
kubectl get rs
# 列出Deployment
kubectl get deploy
# 列出DaemonSet
kubectl get ds
# 列出ingress
kubectl get ingresses
# 列出job
kubectl get jobs
# 获取replicationController详细信息
# kubectl describe rc rc名
kubectl describe rc kubia
# 获取ReplicaSet详细信息
# kubectl describe rs ReplicaSet名
kubectl describe rs kubia
# 获取节点更多信息
# kubectl describe node 节点名
kubectl describe node node1
# 获取pod详细信息
# kubectl describe pod pod名称
kubectl describe pod kubia-manual
# 查看现有pod的yaml描述文件
# kubectl get pod pod名称 -o yaml
kubectl get pod kubia-manual -o yaml
# 查看现有pod的json描述文件
# kubectl get pod pod名称 -o json
kubectl get pod kubia-manual -o json
# 获取pod日志
# kubectl logs pod名称
kubectl logs kubia-manual
# 获取崩溃容器的应用日志
# kubectl logs pod名称 --previous
kubectl logs mypod --previous
# 获取多容器pod的日志时指定容器名称
# kubectl logs pod名称 -c 容器名
kubectl logs kubia-manual -c kubia
# 列出pod
kubectl get pods
# 列出包含已完成的pod
kubectl get pods -A
kubectl get pods --show-all
# 获取指定命名空间的pod
# kubectl get pods --namespace 命名空间名
kubectl get pods --namespace kube-system
kubectl get pods -n kube-system
# 列出pod时显示pod IP和pod的节点
kubectl get pods -o wide
# 列出pod时显示标签
kubectl get pods --show-labels
# 列出工作节点时显示标签
kubectl get nodes --show-labels
# 列出pod时显示选择的标签
# kubectl get pods -L 标签1,标签2
kubectl get pods -L creation_method,env
# 根据标签选择器列出pod子集
# kubectl get pods -l 标签键=标签值
kubectl get pods -l env=debug,app=pc
# 根据标签选择工作节点
# kubectl get nodes -l 标签键=标签值
kubectl get nodes -l cpu=fastest
# 列出包含env标签的所有pod
kubectl get pods -l env
# 列出不包含env标签的所有pod
kubectl get pods -l '!env'
# 列出标签env其值是debug或pro的pods
kubectl get pods -l "env in (debug,prod)"
# 列出标签env其值不是debug或pro的pods
kubectl get pods -l "env notin (debug,prod)"
# 获取deployment的更新历史
# kubectl rollout history deployment deployment名
kubectl rollout history deployment myapp-deploy
# 在运行的容器中远程执行命令(--表示k8s命令结束)
kubectl exec kubia(容器名) -- curl -s http://www.baidu.com
# 查看容器中的变量
kubectl exec kubia(容器名) env
# 在pod中运行shell
kubectl exec -it kubia(容器名) bash
# 获取服务的endpoint(服务的ip地址和端口号列表)
kubectl get endpoints kubia(服务名)
2. 创建操作
# 使用yaml文件创建pod,ReplicationController,ReplicaSet
# kubectl create -f yaml文件
kubectl create -f kubia-manual.yaml
# 使用yaml文件创建pod,ReplicationController,ReplicaSet,指定命名空间
# kubectl create -f yaml文件 -n 自定义命名空间名
kubectl create -f kubia-manual.yaml -n custom-namespace
# 创建自定义命名空间
# kubectl create namespace 自定义命名空间名
kubectl create namespace custom-namespace
# 暴露一个service
# kubectl expose deployment deploy名 --port=暴露端口号
kubectl expose deployment redis --port=6379
3. 修改相关操作
# 给现有pod追加标签
# kubectl label pod pod名 标签键=标签值
kubectl label pod kubia-manual creation_method=manual
# 覆盖现有pod的标签
# kubectl label pod pod名 标签键=标签值 --overwrite
kubectl label pod kubia-manual-v2 env=debug --overwrite
# 给工作节点设置标签
# kubectl label node 工作节点名 标签key=标签value
kubectl label node node1 cpu=fast
# 给工作节点覆盖标签
# kubectl label node 工作节点名 标签key=标签value --overwrite
kubectl label node node1 cpu=fastest --overwrite
# 编辑replicationController(原有的pod不会发生变化,新创建的pod会变化)
# kubectl edit rc rc名
kubectl edit rc kubia
# 水平设置replicationcontrollers的副本数
# kubectl scale rc rc名 --replicas=5
kubectl scale rc kubia --replicas=5
# 给namespace打标签
kubectl label namespace bookinfo-application istio-injection=enabled
4. 删除操作
# 删除pod
# kubectl delete -f yaml配置文件
kubectl delete -f pod-demo.yaml
# 删除pod
# kubectl delete pod pod名
kubectl delete pod kubia-manual
# 删除当前命名空间下的所有pod
kubectl delete pod --all
# 根据标签删除pod
# kubectl delete pod -l 标签key=标签value
kubectl delete pod -l env=debug
# 通过删除命名空间删除相关的pod
# kubectl delete ns 命名空间名
kubectl delete ns custom-namespace
# 删除命名空间下的所有资源
kubectl delete all --all
# 删除replicationController(会删除rc包含的Pod)
# kubectl delete rc rc名
kubectl delete rc kubia
# 删除replicationSet(会删除rs包含的Pod)
# kubectl delete rs rs名
kubectl delete rs kubia
# 仅删除replicationController(不会删除rc包含的Pod)
# kubectl delete rc rc名 --cascade=false
kubectl delete rc kubia --cascade=false
# 删除replicationSet(不会删除rs包含的Pod)
# kubectl delete rs rs名 --cascade=false
kubectl delete rs kubia --cascade=false
5. Deployment更新流程
#修改yaml配置文件,实现对rs,rc,pod,deployment的修改
# kubectl apply -f 配置文件名
kubectl apply -f kubia.yaml
# 1. 修改deployment的镜像
# kubectl set image deployment deploy名 容器名=镜像版本
kubectl set image deployment myapp-deploy myapp=ikubernetes/myapp:v3
# 2. 暂停deployment操作
# kubectl rollout pause deployment deploy名
kubectl rollout pause deployment myapp-deploy
# 修改deployment中pod的一个镜像,暂停deployment操作
kubectl set image deployment myapp-deploy myapp=ikubernetes/myapp:v3 && kubectl rollout pause deployment myapp-deploy
# 3. 监视deploy的更新过程
# kubectl rollout status deployment deploy名
kubectl rollout status deployment myapp-deploy
# 4. 在观察deployment更新完的一个没有问题的情况下,继续deployment的更新
# kubectl rollout resume deployment deploy名
kubectl rollout resume deployment myapp-deploy
# 5. 查看当前更新完的deployment的rs多个版本,并查看当前处于哪个版本
kubectl get rs -o wide
# 5.5 查看deployment的历史版本
# kubectl rollout history deployment deploy名
kubectl rollout history deployment myapp-deploy
# 6. 当发现镜像有问题可以回滚版本到上一个版本
# kubectl rollout undo deployment/deploy名
kubectl rollout undo deployment/myapp-deploy
# 6. 当发现镜像有问题可以回滚版本,回滚到指定版本(用5.5查看需要回滚的版本号)
# kubectl rollout undo deployment/deploy名 --to-revision=版本号
kubectl rollout undo deployment/myapp-deploy --to-revision=3