k8s 控制台常用操作
基本命令 kubectl kubeadm
- 区别
kubeadm 用于初始化Cluster 证书更换 token 添加节点
kubectl 操作对象是集群资源
集群常用资源极其简称
- node (节点)
- po(pod)
- ns(命名空间namespace)
- svc(service服务):定义了一个 Pod 的逻辑分组,一种可以访问它们的策略(微服务)
- cm(configMap):存储全局配置变量的,将分布式系统中不同模块的环境变量统一到一个对象中管理
- ds(deamonSet):在每台计算节点上运行一个守护进程(如日志采集等),有时pod处于pending可能是因为某个deamonSet没起来通过http或https暴露集群内部service,给service提供外部URL、负载均衡、SSL/TLS能力以及基于host的方向代理
- endpoint: 动态存储pod名字与pod ip对应关系的list,并提供将请求转发到实际pod上的能力 kubectl get endpoints
- pv:存储卷
- 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
本文来自博客园,作者:vx_guanchaoguo0,转载请注明原文链接:https://www.cnblogs.com/guanchaoguo/p/16175308.html