首页 > 其他分享 >声明式管理

声明式管理

时间:2024-02-28 09:35:25浏览次数:25  
标签:kubectl run name nginx -- 管理 yaml 声明

 声明式管理

离线式的修改

 

 

kubectl expose pod nginx-d9d8cf5c7-rcdsg --name hanbao-shutiao --type=NodePort --port=9090 --target-port=80

 

 

#将端口改为8800,nodeport改为4371

 #4371不在端口范围内,所以报错

 #改为43710

 

 

在线修改

 

 

 

 #修改为立即生效

 

 #将名字修改

 #报错

所以在线修改并不是所有的都允许修改

 

 YAML

 

 

apiVersion: v1
kind: Pod
metadata:
  name: pod-demo1
  namespace: hanbao
  labels:
    appname: myapp
    appver: v1
spec:
  containers:
  -  name: myapp
     image: soscscs/myapp:v1
     ports:
     -  containerPort: 80
        name: http
        protocol: TCP
     -  containerPort: 443
        name: https
        protocol: TCP

 

 

 

 

 

 

kubectl explain pod.spec.containers.ports

 

 

 #创建资源对象

 

 #查看hanbao命名空间里的pod服务的详细信息

 

 

 

 

 

apiVersion: v1
kind: Pod
metadata:
  name: pod-demo1
  namespace: hanbao
  labels:
    appname: myapp
    appver: v1
spec:
  containers:
  -  name: myapp
     image: soscscs/myapp:v1
     ports:
     -  containerPort: 80
        name: http
        protocol: TCP
     -  containerPort: 443
        name: https
        protocol: TCP
  -  name: busybox
     image: busybox
     command:
     -  /bin/sh
     -  -c
     -  sleep 3600

 

 #无法更新,  那就重建

 

kubectl delete -f pod-demo1.yaml && kubectl apply -f pod-demo1.yaml

 

一小时后这个容器会自动退出

 

 

 

apiVersion: apps/v1    #指定api版本标签
kind: Deployment      #定义资源的类型/角色,deployment为副本控制器,此处资源类型可以是Deployment、Job、Ingress、Service等
metadata:             #定义资源的元数据信息,比如资源的名称、namespace、标签等信息
  name: deploy-demo2  #定义资源的名称,在同一个namespace空间中必须是唯一的
  namespace: hanbao   #命名空间名称
  #labels:
  #annotations:
spec:                 #定义deployment资源需要的参数属性,诸如是否在容器失败时重新启动容器的属性
  replicas: 5         #定义副本数量
  selector:           #定义标签选择器
    matchLabels:      #定义匹配标签
      myname: myapp   #需与 .spec.template.metadata.labels 定义的标签保持一致

  template:           #定义业务模板,如果有多个副本,所有副本的属性会按照模板的相关配置进行匹配
    metadata:
      labels:         #定义Pod副本将使用的标签,需与 .spec.selector.matchLabels 定义的标签保持一致
        myname: myapp
    spec:
      containers:     #定义容器属性
      - name: myapp   #定义一个容器名,一个 - name: 定义一个容器
        image: soscscs/myapp:v2   #定义容器使用的镜像以及版本
        ports:
        - containerPort: 80  #定义容器的对外的端口
          name: http

 

 

 status可忽略

 

 

 

 

 

 

 

 描述命名空间的详细信息

kubectl describe deployments.apps -n hanbao deploy-demo2

 

 

Service yaml

 

 

 

 

 

apiVersion: v1
kind: Service
metadata:
  name: svc-demo3
  namespace: hanbao
spec:
  type: NodePort
  selector:
    myname: myapp
  ports:
  - port: 8080
    nodePort: 30888
    targetPort: 80
  clusterIP: 10.0.0.100

 

 

 

 #创建

 

 #查看svc-demo3的详细信息

 

 

externalTrafficPolicy

 

kubectl get -n hanbao svc svc-demo3 -o yaml

 

 

默认值为cluster,这个字段外部流量策略

 

externalTrafficPolicy”字段可以设置。有2个值可以设置:Cluster或者Local。

1)Cluster表示:流量可以转发到其他节点上的Pod。

2)Local表示:流量只发给本机的Pod。

 

 

 

.

 

 #三个pod都可以转发

 #查看它们工作在哪个服务器上

 

 

 

 

通过资源配置清单创建资源对象

获取K8S资源配置清单文件模板?
1)手写yaml配置文件,可以根据 kubectl explain 命令获取字段信息
2)查看现有的资源配置获取:

kubectl get -n <命名空间> <资源类型> <资源名称> -o yaml > XXX.yaml
kubectl edit -n <命名空间> <资源类型> <资源名称> ,然后手动复制资源配置,粘贴到yaml文件中
3)无中生有(模拟运行kubectl陈述式创建资源的命令获取):

kubectl create|run|expose  选项  --dry-run=client -o yaml > XXX.yaml
4)复制K8S官网文档的资源配置案例

关于配置清单常见的字段
apiversion: #指定资源对象的在K8S中使用的api接口版本
kind: #指定资源对象的类型
metadata: #指定资源对象的元数据信息,比如name指定资源名称、namespace指定命名空间、annotation指定注释、label指定标签
spec: #指定资源对象的资源配置清单(配置属性) ,比如副本数、镜像、网络模式、存储卷、label selector标签选择器
status: #资源对象在当前的运行状态信息

 

无中生有创建模板,修改文件创建新资源

无中生有创建deployment资源

 

 

kubectl create deployment deploy-demo2.yaml --image=nginx --port=80 --replicas=3 --dry-run -o yaml > deploy.yaml

 

 

 

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: deploy-demo2.yaml
  name: deploy-demo2.yaml
spec:
  replicas: 3
  selector:
    matchLabels:
      app: deploy-demo2.yaml
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: deploy-demo2.yaml
    spec:
      containers:
      - image: nginx
        name: nginx
        ports:
        - containerPort: 80
        resources: {}
status: {}

 

无中生有创建service资源

 

kubectl create svc nodeport svc-test --tcp=8080:80 --dry-run=client -o yaml > svc.yaml

 

 

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: svc-test
  name: svc-test
spec:
  ports:
  - name: 8080-80
    port: 8080
    protocol: TCP
    targetPort: 80
  selector:
    app: svc-test
  type: NodePort
status:
  loadBalancer: {}

 

 

补充案例

//kubectl run --dry-run=client 打印相应的 API 对象而不执行创建
kubectl run nginx-test --image=nginx --port=80 --dry-run=client
kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client
 
//查看生成yaml格式
kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o yaml
kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o yaml
 
//查看生成json格式
kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o json
kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o json
 
//使用yaml格式导出生成模板,并进行修改以及删除一些不必要的参数
kubectl run nginx-test --image=nginx --port=80 --dry-run=client -o yaml > nginx-test.yaml
kubectl create deployment nginx-deploy --image=nginx --port=80 --replicas=3 --dry-run=client -o yaml  > nginx-deploy.yaml

 

 

根据官方文档案例

https://kubernetes.io/zh-cn/docs/home/

 

 

总结


声明式资源管理方式 (可理解成使用yaml配置文件里定义的配置来实现资源对象的管理操作)
通过kubectl get -n <命名空间> <资源类型> <资源名称> -o yaml > xxx.yaml #先获取资源配置清单
kubectl apply|create -f xxx.yaml #创建或更新资源
kubectl delete -f xxx.yaml #删除资源


kubectl edit -n <命名空间> <资源类型> <资源名称> #在线修改资源配置
对于不支持在线修改的字段只能通过离线修改的方式更新资源: kubectl delete -f xxx.yaml && kubectl apply -f xxx.yaml
kubectl explain <资源类型>、<一级字段>、<二级字段>... #获取资源配置字段的解释



#如何获取K8S资源配置清单文件模板(yaml配置文件) 1)手写yaml配置文件,可以根据kubectl explain 命令获取字段信息 2)查看现有的资源的配置获取: 通过kubectl get -n <命名空间> <资源类型> <资源名称> -o yaml > XXX.yaml / kubectl edit -n <命名空间> <资源类型> <资源名称>,然后手动复制资源配置,粘贴到yaml文件中 3)无中生有(模拟运行kubectl陈述式创建资源的命令来获取): kubectl create|run|expose 选项 --dry-run=client -o yaml > XXX.yaml 4)复制K8S官网文档的资源配置案列 #关于配置清单常见的字段 apiversion: #指定资源对象的在K8S中使用的api接口版本 kind: #指定资源对象的类型 metadata: #指定资源对象的元数据信息,比如name指定资源名称、namespace指定命名空间、annotation指定注释、label指定标签 spec: #指定资源对象的资源配置清单(配置属性) ,比如副本数、镜像、网络模式、存储卷、label selector标签选择器 status: #资源对象在当前的运行状态信息

 

标签:kubectl,run,name,nginx,--,管理,yaml,声明
From: https://www.cnblogs.com/yanrui07/p/18037583

相关文章

  • Spring系列之(三)Spring对Bean的管理细节
    Spring对Bean的管理细节1.创建Bean的三种方式使用默认构造函数创建bean标签仅配置id和class,即标识和全限定类名,同时保证要创建的类是有无参构造函数的如果没有无参构造函数,将会报错使用某个类中的方法创建对象,该方法的返回值是某个类的对象以新建的Factory类为例,需......
  • 设备管理器-网络适配器-Remote NDiS-based Internet Sharing Device(基于远程NDIS的互
    RemoteNDiS-basedInternetSharingDevice(基于远程NDIS的互联网共享设备)是一种网络接口遥控分享装置。这种设备允许通过USB连接将智能手机等设备连接到电脑,从而充当无线网卡的作用,使电脑能够连接到互联网。具体功能作用如下:充当无线网卡:当手机连接到互联网后,通过USB绑定,这个......
  • 策略管理类
    //定义策略接口publicinterfaceStrategy<T>{/***策略标识**@return*/Tstrategy();}//定义策略管理器packagecom.serviceshare.springboot.strategy;importcom.serviceshare.springboot.SpringContextInitialize;importorg.springframework......
  • 【内容管理及平台建设】上海道宁为您提供全媒体信息管理平台——WebFuture
     在数字化、智能化的浪潮下我们的生活和工作方式正在经历前所未有的变革  动易软件是综合性软件平台更是一种全新的生活和工作方式为客户提供互联网内容管理移动互联网内容管理全媒体内容管理的平台建设及技术服务  PART01:开发商......
  • 白鲸开源科技与瀚高基础软件完成产品兼容性认证,开启数据管理新篇章
    北京白鲸开源科技有限公司(以下简称“白鲸开源”)今日宣布,其旗舰产品WhaleStudio套件已与瀚高基础软件股份有限公司(以下简称“瀚高软件”)旗下的IvorySQL数据库管理系统V3.0完成深度兼容性认证。此次合作标志着两家领军企业在数据管理领域的紧密联合,为用户提供更加稳定、高效的数据处......
  • 《产品需求分析与管理》(深圳2024年3月22-23日)
    【课程背景】客户的需求不断变化,如何快速高效地推出满足客户需求、具有差异化优势和竞争优势的产品,并最终获得市场的成功,是企业的核心问题。目前国内许多科技型企业在产品需求管理方面存在如下问题:产品开发没有实现市场驱动,是“闭门造车”,关注技术而不关心客户;产品开发出来后......
  • ipmitool是很常见的物理机管理工具,这里分享一些ipmitool经常用到的一些命令
    ipmitool-Ilanplus-H$oob_ip-Uroot-P密码poweroff(硬关机,直接切断电源)ipmitool-Ilanplus-H$oob_ip-Uroot-P密码powersoft(软关机,即如同轻按一下开机按钮)ipmitool-Ilanplus-H$oob_ip-Uroot-P密码poweron(硬开机)ipmitool-Ilanplus-H$oo......
  • 主程面试如何答:你是如何管理团队与分配工作?
    面试主程岗位的时,经常会被问到:”你是如何管理团队与分配工作的?”这种类似的问题,对于主程来说这个问题其实还是需要做一些自己的深度思考。每个人的性格都是不一样的,关注点不一样,回答这些问题,自己的答案也不一样。我按照我现在的年龄39岁,来回答一下这个经典问题,给大家做个参考,希......
  • 道路交通安全违法行为记分管理办法-1
    1.公安机关交通管理部门对机动车驾驶人的交通违法行为,除依法给予行政处罚外,实行累积记分制度。2.记分周期为十二个月,满分为12分。记分周期自机动车驾驶人初次领取机动车驾驶证之日起连续计算,或者自初次取得临时机动车驾驶许可之日起累积计算。3.记分达到满分的,机动车驾驶人应当......
  • 道路交通安全违法行为记分管理办法-2
    1.机动车驾驶人有下列交通违法行为之一,一次记12分:(一)饮酒后驾驶机动车的;(二)造成致人轻伤以上或者死亡的交通事故后逃逸,尚不构成犯罪的;(三)使用伪造、变造的机动车号牌、行驶证、驾驶证、校车标牌或者使用其他机动车号牌、行驶证的;(四)驾驶校车、公路客运汽车、旅游客运汽车载人超过......