您现在的位置是:首页 >技术杂谈 >【云原生】K8s管理工具--Kubectl(一)网站首页技术杂谈

【云原生】K8s管理工具--Kubectl(一)

指尖_流逝的年华 2024-06-17 10:14:55
简介【云原生】K8s管理工具--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 

在这里插入图片描述

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。