您现在的位置是:首页 >技术杂谈 >【云原生】K8s管理工具--Kubectl(一)网站首页技术杂谈
【云原生】K8s管理工具--Kubectl(一)
Kubectl管理
一、陈述式管理
1、陈述式管理方式
- kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口
- kubectl 是官方的 CLI 命令行工具,用于与 apiserver 进行通信,将用户在命令行输入的命令,组织并转化为
- apiserver 能识别的信息,进而实现管理 k8s 各种资源的一种有效途径
- kubectl 的命令大全
kubectl --help - k8s官方中文文档:http://docs.kubernetes.org.cn/683.html
- 对资源的增、删、查操作比较容易,但对改的操作就不容易了
2、Kubernetes相关信息查看
(1)查看版本信息
(2)查看节点信息
(3)查看资源对象
(4)查看集群信息
(5)配置kubectl自动补全
source <(kubectl completion bash)
(6)查看日志
(7)查看基本信息
kubectl get [-o wide|json|yaml] [-n namespace]
获取资源的相关信息,-n指定命名空间,-o指定输出格式
resource可以是具体资源名称,如"pod nhinx-xxx";也可以是资源类型,如“pod,node,svc,deploy”多种资源使用逗号间隔;或者all(仅展示几种核心资源,并不完整)
–all-namespaces或-A:表示显示所有命名空间
–show-labels:显示所有标签
-l app:仅显示标签为app的资源
-l app=nginx:仅显示包含app标签,且值为nginx的资源
3、查看节点状态
(1)查看master节点状态
[root@master01 ~]#kubectl get componentstatuses
[root@master01 ~]#kubectl get cs
(2)查看命名空间
[root@master01 ~]#kubectl get namespace
[root@master01 ~]#kubectl get ns
4、命名空间操作
(1)查看default命名空间的所有资源
kubectl get all [-n default]
(2)创建命名空间
[root@master01 ~]#kubectl create ns zz
(3)删除命名空间
[root@master01 ~]#kubectl delete ns zz
5、deployment/pod操作
(1)在命名空间kube-public创建副本控制器(deployment)来启动Pod(nginx-test)
[root@master01 ~]#kubectl create deployment nginx-zz --image=nginx -n kube-public
[root@master01 ~]#kubectl get deploy -n kube-public
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-zz 0/1 1 0 45s
#get是用于获取资源的命令,deploy是资源类型的名称,-n kube-public是指定命名空间为 kube-public。
[root@master01 ~]#kubectl get pod -n kube-public
NAME READY STATUS RESTARTS AGE
nginx-zz-68484475d5-nlklk 0/1 ImagePullBackOff 0 2m8s
#get是用于获取资源的命令,pod是资源类型的名称,-n kube-public是指定命名空间为 kube-public。
(2)描述某个资源的详细信息
[root@master01 ~]#kubectl describe deployment nginx-zz -n kube-public
[root@master01 ~]#kubectl describe pod nginx-zz -n kube-public
(3)查看命名空间kube-public中pod信息
[root@master01 ~]#kubectl get pods -n kube-public
(4)登录容器
kubectl exec 可以跨主机登录容器,docker exec 只能在容器所在主机登录
[root@master01 ~]#kubectl exec -it nginx-zz-68484475d5-nlklk bash -n kube-public
(5)删除pod资源
由于存在 deployment/rc 之类的副本控制器,删除 pod 也会重新拉起来
[root@master01 ~]#kubectl get pods -n kube-public
NAME READY STATUS RESTARTS AGE
nginx-zz-68484475d5-nlklk 1/1 Running 0 33m
[root@master01 ~]#kubectl delete pod nginx-zz-68484475d5-nlklk -n kube-public
pod "nginx-zz-68484475d5-nlklk" deleted
[root@master01 ~]#kubectl get pods -n kube-public
NAME READY STATUS RESTARTS AGE
nginx-zz-68484475d5-c4t98 0/1 ContainerCreating 0 19s
(6)若无法删除pod,总是处于terminate状态,则要强行删除pod
grace-period表示过渡存活期,默认30s,在删除pod之前允许pod慢慢终止其上的容器进程,从而优雅的退出,0表示立即终止pod
[root@master01 ~]#kubectl delete pod nginx-zz-68484475d5-c4t98 -n kube-public --force --grace-period=0
[root@master01 ~]#kubectl get pod -n kube-public
6、扩缩容
(1)扩容
[root@master01 ~]#kubectl scale deployment nginx-zz --replicas=3 -n kube-public
(2)缩容
[root@master01 ~]#kubectl scale deployment nginx-zz --replicas=1 -n kube-public
(3)删除副本控制器
[root@master01 ~]#kubectl delete deployment nginx-zz -n kube-public
7、增加删除label
(1)增加label
[root@master01 ~]#kubectl get deploy --show-labels
NAME READY UP-TO-DATE AVAILABLE AGE LABELS
nginx 1/1 1 1 20h app=nginx
[root@master01 ~]#kubectl label deploy nginx version=nginx1.14
(2)删除label
[root@master01 ~]#kubectl label deploy nginx version-
[root@master01 ~]#kubectl get deploy --show-labels
二、声明式管理
1、声明式管理方式
- 适合于对资源的修改操作
- 声明式资源管理方法依赖于资源配置清明文件对资源进行管理
- 资源配置清单文件有两种格式:yaml(人性化,易读),json(易于api接口解析)
- 对资源的观念里,是通过实现定义在同一资源配置清单内,再通过陈述式命令应用到k8s集群里
- 语法格式:kubectl create/apply/delete -f -o yaml
2、查看资源配置清单
[root@master01 ~]#kubectl get deploy/nginx -o yaml
[root@master01 ~]#kubectl get service nginx -o yaml
3、解释资源配置清单
[root@master01 ~]#kubectl explain deployment.metadata
[root@master01 ~]#kubectl explain service.metadata
4、修改资源配置清单并应用
(1)修改yaml文件,并用kubectl apply -f xxxx.yaml文件使之生效
注意:当apply不生效时,先使用delete清除资源,再apply创建资源
[root@master01 ~]#kubectl get service nginx -o yaml > nginx-svc.yaml
[root@master01 ~]#vim nginx-svc.yaml
(2)删除资源
[root@master01 ~]#kubectl delete -f nginx-svc.yaml
(3)新建资源
[root@master01 ~]#kubectl apply -f nginx-svc.yaml
(4)在线修改
直接使用kubectl edit service nginx-service在线编辑配置资源清单并保存退出即时生效(如port: 888)
此修改方式不会对yaml文件内容修改
[root@master01 ~]#kubectl edit service nginx
查看资源
5、删除资源配置清单
(1)陈述式删除
[root@master01 ~]#kubectl delete service nginx
(2)声明式删除
[root@master01 ~]#kubectl delete -f nginx-svc.yaml