k8s 控制台常用操作

基本命令 kubectl kubeadm
  • 区别
    kubeadm 用于初始化Cluster 证书更换 token 添加节点
    kubectl 操作对象是集群资源
集群常用资源极其简称
  1. node (节点)
  2. po(pod)
  3. ns(命名空间namespace)
  4. svc(service服务):定义了一个 Pod 的逻辑分组,一种可以访问它们的策略(微服务)
  5. cm(configMap):存储全局配置变量的,将分布式系统中不同模块的环境变量统一到一个对象中管理
  6. ds(deamonSet):在每台计算节点上运行一个守护进程(如日志采集等),有时pod处于pending可能是因为某个deamonSet没起来通过http或https暴露集群内部service,给service提供外部URL、负载均衡、SSL/TLS能力以及基于host的方向代理
  7. endpoint: 动态存储pod名字与pod ip对应关系的list,并提供将请求转发到实际pod上的能力 kubectl get endpoints
  8. pv:存储卷
  9. pvc: 存储卷消费者
查看集群版本 和集群信息
  • kubectl version --short=true
  • kubectl cluster-info
资源查看
  • kubectl get pod 默认default
  • 全部命名空间 kubectl getpod --all-namespaces
  • 某个命名空间 kubectl getpod -n kube-system
  • 详细信息 kubectl getpod -n kube-system -o wide --all-namespaces
  • ymal 格式 kubectl get pod -o yaml --all-namespaces
  • json格式查看 kubectl get pod -o json --all-namespaces
  • 标签查看 kubectl get pods -l app=example --all-namespaces
  • 监视资源变动信息 kubectl getpod --all-namespaces -w
查看资源详情 状态 事件 日志
  • 注意!!! describe不支持-o选项 对于同一类型resource,describe输出的信息格式,内容域相同
  • kubectl describe pod
  • kubectl describe deployment
  • kubectl describe service
  • kubectl describe node [node ip] 显示 Node 的详细信息
  • kubectl describe pods 显示由deployment管理的Pod的信息
  • kubectl describe pod/{pod_name} -n {namespace} # 查看pod中所有容器的信息
查看pod日志
  • 实时查看单个容器pod 日志 kubectl logs -f <pod_name> --all-namespaces
  • 实时指定容器 查看多个容器 日志 kubectl logs -f <pod_name> -c <container_name> --all-namespaces
进入容器
  • 进入容器 kubectl attach <pod_name> -c <container_name>
  • 交互是进入 kubectl exec -it <pod_name> sh
查看当前用户上下信息
  • kubectl config view
  • 查看当前上下文用户 kubectl config current-context
  • 切换用户 kubectl config use_context <CONTEXT_NAME>
查看资源对象拥有的字段
  • kubectl explain pod
  • kubectl explain pod.apiVersion
查看节点标签
  • kubectl get node --show-labels
上传下载pod内部文件
  • 上传 kubectl cp message.log mysql-478535978-1dnm2:/tmp/message.log
  • 下载 kubectl cp mysql-478535978-1dnm2:/tmp/message.log message.log
deployments 资源变更
  • 注意!!! yaml文件里的metadata的name不能修改(是按照name作为资源的唯一标识)
  • 一次创建 kubectl create deployment nginx --image=nginx:1.14
  • 多次创建 kubectl apply -f my-nginx.yaml
  • 更新资源 kubectl edit po <pod_name>
  • 替换资源 kubectl replace -f <yaml_file>
  • 修改正在运行的资源 kubectl patch pod <pod_name> -p '{"metadata":{"labels":{"app":"nginx-3"}}}'
设置资源的一些范围限制
  • pod CPU-单位m、内存-单位Mi 最小资源请求 Requests 最大资源需求 Limits 指定了Limits(限制)值,并省略了Requests(请求),则Requests默认为Limits的值
  • replicationcontroller、deployment、daemonset、job、replicaset。
  • deployment nginx cpu 200m 内存 512Mi kubectl set resources deployment nginx -c=nginx --limits=cpu=200m,memory=512Mi
  • all nginx Requests Limits kubectl set resources deployment nginx --limits=cpu=200m,memory=512Mi --requests=cpu=100m,memory=256Mi
  • del nginx Requests Limits kubectl set resources deployment nginx --limits=cpu=0,memory=0 --requests=cpu=0,memory=0
  • kubectl set image nginx:1.9.1 nginx:1.9.1 kubectl set image deployment/nginx busybox=busybox nginx=nginx:1.9.1
  • all deployment rc nginx nginx:1.9.1 kubectl set image deployments,rc nginx=nginx:1.9.1 --all
  • daemonset abc image nginx:1.9.1 kubectl set image daemonset abc *=nginx:1.9.1
  • local file delete nginx image kubectl set image -f path/to/file.yaml nginx=nginx:1.9.1 --local -o yaml
标签
  • 语法:label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]
  • 规则: curd label 必须以字母或数字开头,可以使用字母、数字、连字符、点和下划线,最长63个字符
  • 参数 --overwrite 为 true,则可以覆盖已有的label,否则尝试覆盖label将会报错 kubectl label --overwrite pods foo status=unhealthy
  • 参数 --resource-version,则更新将使用此资源版本,否则将使用现有的资源版本 kubectl label pods foo status=unhealthy --resource-version=1 仅当resource-version=1时才更新
  • 添加 kubectl label pods foo unhealthy=true
  • 全部添加 kubectl label pods --all status=unhealthy
  • 删除 kubectl label pods foo bar-
注解
  • 语法:annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]
  • 参数 --overwrite为true,现有的annotations可以被覆盖,否则试图覆盖annotations将会报错。 kubectl annotate --overwrite pods foo description='my frontend running nginx'
  • 参数 --resource-version,则更新将使用此resource version,否则将使用原有的resource version kubectl annotate pods foo description='my frontend running nginx' --resource-version=1 只有当resource-version为1才更新
  • 增加 kubectl annotate pods foo description='my frontend' 多次设置只使用最后设置的value值
  • 根据文件更新 kubectl annotate -f <deployments.yaml> description='my frontend'
  • 批量更新 kubectl annotate pods --all description='my frontend running nginx'
  • 删除 kubectl annotate pods foo description-
直接启动一个pod
  • kubectl run nginx --image=nginx:1.16 --port=80 --replicas=1
posted @ 2022-04-21 17:47  vx_guanchaoguo0  阅读(325)  评论(0编辑  收藏  举报