目录
1.4.1 在命名空间kube-public创建副本控制器(deployment)来启动pod(nginx-test)
1.4.6 若无法删除,总是处于erminate状态,则要强行删除pod
一,陈述时管理
1.1 陈述式资源管理方式
- kubernetes集群管理集群资源的唯一入口是通过相应的方法调用apiserver的接口
- kubectl是官方的CLI命令工具,用于与apiserver进行通信,将用户在命令行输入的命令,组织并转化为apiserver能识别的信息,进而实现管理k8s各种资源的有效途径。
- kubectl的命令大全 kubectl --help
- k8s官方中文文档:Kubernetes kubectl 命令表 _ Kubernetes(K8S)中文文档_Kubernetes中文社区
- 对资源的增、删、改、查操作比较容易,但对改的操作就不容易了
1.2 K8S相关信息查看
查看版本信息
kubectl version
查看节点信息
kubectl get node
查看资源对象简写
查看集群信息
kubectl cluster-info
配置kubectl自动补全
source <(kubectl completion bash)
可通过TAB键实现命令补全,建议将其写入/etc/profile
一般用的比较少
查看日志
journalctl -u kubelet -f
基本信息查看
kubectl get [-o wide|json|yaml] [-n namespace]
获取资源的相关信息,-n指定命名空间,-o指定输出格式。
resource可以是具体资源名称,如“pod nhinx-xxx”;也可以是资源类型,如“pod,node,svc,deploy”多种资源使用逗号间隔;或者all(仅显示包含app标签,并不完整)
- -all-namespace 或者-A:标识显示所有命令空间
- -show-labels: 显示所有标签
- -l app:仅显示标签为app的资源
- -l app=nginx:仅显示包含app标签,且值为nginx的资源。
查看master节点状态
kubectl get componentstatuses
#cpmponentstatuses可以缩写成cs
kubectl get cs
查看命名空间
1.3 命名空间操作
1.3.1 查看default命名空间的所以资源
kubectl get all [-n default]
由于deafult为缺省空间,当不指定命名空间时默认查看default命名空间
1.3.2 创建命名空间
kubectl create ns cxk
1.3.3 删除命名空间
kubectl delete ns cxk
1.4 deployment/pod操作
1.4.1 在命名空间kube-public创建副本控制器(deployment)来启动pod(nginx-test)
kubectl create deployment nginx-test --image=nginx -n cxk
1.4.2 描述某个资源的详细信息
kubectl describe deployment nginx-test -n cxk
kubectl describe pod nginx-test -n cxk
1.4.3 查看命名空间kube-public中pod信息
1.4.4 登录容器
kubectl exec 可以跨主机登录容器,docker exec 只能在容器所在主机登录
kubectl exec -it nginx-test-795d659f45-6528h bash -n cxk
1.4.5 删除(重启)pod资源
由于存在deployment之类的副本控制器,删除pod也会被重新拉取起来
1.4.6 若无法删除,总是处于erminate状态,则要强行删除pod
kubectl delete pod [] -n [] --force --grace-period=0
grace-period表示过渡存活期,默认30s,在删除pod之前允许pod慢慢终止其上的容器进程,从而优雅的退出,0表示立即终止pod
1.4.7 扩容、
kubectl scale deployment nginx-test --replicas=3 -n cxk
1.4.8 缩容
kubectl scale deployment nginx-test --replicas=2 -n cxk
1.4.9 删除副本控制器
kubectl delete deployment nginx-test -n cxk
1.4.10 定义自动扩容,缩容规则
使用deployment “foo” 设定,使用默认的自动伸缩策略,指定目标cpu使用率,使其pod数量在2.10之间
kubectl autoscale deployment foo --min=2,--max=10
使用RC'foo' 设定,使其pod的数量介于1-5之间,cpu使用率维持在80%
kubectl autoscale rc foo --max=5 --cpu-rercent=80
自动扩容,缩容触发条件
定义最大最小pod数量
定义扩容条件:往往和pod使用的基础资源百分比相关,例如使用到cpu资源80%的时候触发扩容
80% 不是指node节点的80%,而是指pod内limint上限的80%
1.5 增加,删除label
1.51,增加label
kubectl label deploy nginx-test version=nginx1.14
1.52,删除label
kubectl label deploy nginx-test version-
二,声明式管理
1,声明式管理方法
- 适合于对资源的修改操作
- 声明式资源管理方法依赖于资源配置清明文件对资源进行管理
- 资源配置清单文件有两种格式:yaml(人性化,易读),json(易于api接口解析)
- 对资源的观念里,是通过实现定义在同一资源配置清单内,再通过陈述式命令应用到k8s集群里
- 语法格式:kubectl create/apply/delete -f -o yaml
2,查看资源配置清单
kubectl get deploy/nginx-test -o yaml
kubectl get service nginx-service -o yaml
3,解释资源配置清单
kubectl explain deployment.metadata
kubectl explain service.metadata
4,修改资源配置清单并应用
4.1 离线修改
4.1.1 修改yaml文件
修改yaml文件:并用kubectl apply -f xxxx.yaml文件使之生效
注意:当apply不生效时,先使用delete清除资源,再apply创建资源
kubectl get service nginx-service -o yaml > nginx-svc.yaml