15.kubectl资源管理入门

kubectl资源管理入门

资源的CURD

核心资源管理方式
  • 陈述式管理方法
    主要依赖命令行CLI工具进行管理
  • 声明式管理方法
    主要依赖统一资源配置清单(manifest)进行管理
  • GUI式管理方法
    主要依赖图形化操作界面(web页面)进行管理,如dashborard

三种方式互相依托,协同工作

通过kubectl命令管理资源(陈述式)

get、create、describe、delete、exec、expose、scale、…
更多命令查看kubectl -h,查看http://docs.kubernetes.org.cn
下文通过部分操作大致了解一下资源增删改查的操作

  • namespace
    kubectl get namespacekubectl get ns 查询命名空间
    在这里插入图片描述
    kubectl create ns hzwns 创建命名空间,名称为hzwns
    在这里插入图片描述
    kubectl describe ns hzwns describe查看命名空间的详细信息
    在这里插入图片描述
    kubectl get all等同kubectl get all -n default 查询default命名空间下的所有资源
    在这里插入图片描述
    kubectl delete ns hzwns 删除名称为hzwns的namespace

  • deployment
    kubectl create deployment nginx-dp --image=harbor.hzwod.com/public/nginx:1.19.8 -n hzwns
    在名称空间hzwns中创建一个deployment资源
    在这里插入图片描述
    kubectl create deployment .... --dry-run -o yaml
    生成资源的配置文件 --dry-run:空运行不部署资源,不加这个参数资源会被部署; -o yaml:指定资源配置文件格式
    (此yaml文件实际上就是声明式资源)
    在这里插入图片描述
    kubectl create -f xxxx.yaml 按资源配置文件创建资源
    kubectl describe deploy nginx-dp -n hzwns 查看deployment的详情描述(deployment可以简写成deploy)
    在这里插入图片描述
    kubectl delete pod nginx-dp-xxxxxx -n hzwns 删除deployment定义创建的pod,但pod控制器会重新拉起新的pod,相当于重启了pod
    可以通过

kubectl exec -it nginx-dp-67ff6b97bf-zd2l9 bash -n hzwns
在这里插入图片描述

kubectl scale deployment nginx-dp --replicas=2 -n hzwns 将deployment:nginx-dp 扩容到2
kubectl scale deployment nginx-dp --replicas=1 -n hzwns 缩容到1
通过describe查看deployment事件
在这里插入图片描述

  • service
    kubectl get servciekubectl get svc
    kubectl expose deployment nginx-dp --port=80 -n hzwns 将deployment资源nginx-dp暴露为service
    kubectl expose deployment nginx-dp --port=88 --target-port=80 -n hzwns将deployment资源nginx-dp 80端口暴露为service 88端口

kubectl expose
将资源暴露为新的Kubernetes Service。
指定deployment、service、replica set、replication controller或pod ,并使用该资源的选择器作为指定端口上新服务的选择器。deployment 或 replica set只有当其选择器可转换为service支持的选择器时,即当选择器仅包含matchLabels组件时才会作为暴露新的Service。

kubectl get svc -n hzwns -o wide
ipvsadm -Ln
在这里插入图片描述
此时集群内部通过192.168.65.221就能访问nginx-dp内的pod
此时还是有问题,上图显示172.20.21.2是node21上的pod,此时若在node22上通过192.168.65.221去访问是不通的(应为跨主机了,跨主机网络还未解决)

  • 陈述式资源管理小结
    • kubernetes集群管理集群资源的唯一入口是通过相应的方法调用apiserver的接口
    • kubectl是官方的CLI命令行工具,用于与apiserver进行通信,将用户在命令行输入的命令,组织并转化为apiserver能识别的信息,进而实现管理K8S各种资源的一种有效途径
    • kubectl的命令:kubectl --help、在线资源:http://docs.kubernetes.org.cn
    • 陈述式资源管理方法可以满足90%以上的资源管理需求,但也存在缺点:
      • 命令冗长、复杂、难以记忆
      • 特定场景下无法实现管理需求(如给ds类型资源使用expose暴露服务就不支持)
      • 对资源的增、删、查操作比较容易,就很痛苦
声明式资源管理
  • 通过陈述式命令生成资源声明文件
    kubectl create deployment nginx-dp --image=harbor.hzwod.com/public/nginx:1.19.8 -n hzwns --dry-run -o yaml
    --dry-run:空运行不部署资源,不加这个参数资源会被部署哦;
    -o yaml:指定资源配置文件格式(可选yamljson

  • 查询已存在资源生成声明文件
    kubectl get svc -n hzwns -o yaml

[root@node21 ~]# kubectl get svc -n hzwns 
NAME       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
nginx-dp   ClusterIP   192.168.65.221   <none>        80/TCP    2d15h
[root@node21 ~]# kubectl get svc nginx-dp -n hzwns -o yaml
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: "2021-03-26T16:55:05Z"
  labels:
    app: nginx-dp
  name: nginx-dp
  namespace: hzwns
  resourceVersion: "348279"
  selfLink: /api/v1/namespaces/hzwns/services/nginx-dp
  uid: 8105353c-068b-4a6c-884a-08d3fe409c19
spec:
  clusterIP: 192.168.65.221
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx-dp
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}
  • 配置文件各域的内容kubectl explain
    kubectl explain service.spec 查看spec域的配置项及说明
    kubectl explain service.metadata查看metadata域的配置项及说明

  • 编辑配置

    • 离线方式(建议方式)
      通过-o yaml将现存资源配置导出,进行修改,再通过kubectl apply -f xxx.yaml更新配置
    • 在线方式
      kubectl edit svc nginx-dp -n hzwns 跳入vi直接修改配置文件,保存生效
      在这里插入图片描述
  • 删除资源
    kubectl delete -f nginx-dp_svc-hzwns.yaml -n hzwns
    kubectl delete service nginx-dp -n hzwns

  • 声明式资源管理小结

    • 声明式资源管理方法,依赖于统一资源配置清单文件对资源进行管理
    • 对资源的管理,是通过事前定义在统一资源配置清单内,再通过陈述式命令(见下一行)应用到K8S集群里
    • 语法格式:kubectl create/apply/delete -f /pathtoyaml
    • 资源配置清单的学习方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hzw@sirius

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值