当前位置: 首页 > news >正文

租赁商城手机网站开发jq网站登录记住密码怎么做

租赁商城手机网站开发,jq网站登录记住密码怎么做,微信小程序制作详细流程,网站开发投票代码2024年k8s最新版本使用教程 3. YAML语言入门3.1 基本语法规则3.2 支持的数据结构3.3 其他语法 4 资源管理4.1 k8s资源查询4.2 资源操作命令4.3 资源操作方式4.3.1 命令行方式4.3.2 YAML文件方式 5 Namespace5.1 查看命名空间5.2 创建命名空间5.3 删除命名空间5.4 命名空间资源限… 2024年k8s最新版本使用教程 3. YAML语言入门3.1 基本语法规则3.2 支持的数据结构3.3 其他语法 4 资源管理4.1 k8s资源查询4.2 资源操作命令4.3 资源操作方式4.3.1 命令行方式4.3.2 YAML文件方式 5 Namespace5.1 查看命名空间5.2 创建命名空间5.3 删除命名空间5.4 命名空间资源限额 6 Pod6.1 创建pods6.2 查看pods6.3 删除pods6.4 资源清单 7 Label标签7.1 标签操作7.2 分组管理 8 Pod控制器8.1 Pod控制器概念8.2 Pod控制器种类8.3 ReplicaSet8.3.1 常见操作8.3.2 资源清单8.3.3 pod数量固定8.3.4 pod数量扩缩容8.3.5 pod镜像更改 8.4 Deployment8.4.1 常见操作8.4.2 资源清单8.4.3 pod镜像更改8.4.4 pod镜像更改操作 8.5 HPA控制器8.5.1 自动扩缩容8.5.2 指标API可用安装 8.6 DaemonSet8.6.1 资源清单 8.7 Job控制器8.7.1 资源清单 8.8 CronJob8.8.1 资源清单 如果需要K8S安装观看2024年k8s最新版本安装教程博客 3. YAML语言入门 YAML是一门简洁的非标记语言常用来做配置文件文件后缀是yaml。 3.1 基本语法规则 key: value键值对方式:与value之间有空格 name: buddhakey书写区分大小写 name: buddhaName: buddha使用缩进表示层级关系缩进只能用空格没有规定需要多少个空格相同层级左对齐即可不能用tab键替代空格键除非编辑器内认可的tab键 person:name: buddhaage: 18支持单行注释#是单号注释符 # 下面是开发环境配置 name: buddha---和...配合使用如下就相当于写了两个配置文件 --- name: buddha age: 18 ...--- name: jack age: 12 ...3.2 支持的数据结构 字面量单个、不能再分的值。date日期、时间、boolean、number整数、浮点数、null(~)、string字符串一般不用引号双引号特殊字符会转义单引号不会转义处理 name: buddha age: 18 flag: true remark: ~ day: 2024-01-01对象键值对的集合 # 行内写法k与v之间可以不加空格 o: {k1: v1,k2: v2,k3: v3}# 一般写法 o:k1: v1k2: v2k3: v3数组一组按次序排列的值 k: [v1,v2,v3]k:- v1- v2- v33.3 其他语法 允许使用两个感叹号强制转换数据类型 a: !!str 123 b: !!str true多行字符串可以使用|保留换行符也可以使用折叠换行 this: |FooBar that: FooBar可以用这个网站检验yaml文件书写是否正确 https://www.json2yaml.com/convert-yaml-to-json 4 资源管理 4.1 k8s资源查询 在k8s中所有内容都抽象为资源进行管理。通过kubectl api-resources命令查看k8s有哪些资源。 常用资源有 资源分类资源名称资源名称简写说明集群级别资源nodesno集群节点namespacesns命名空间pod资源podspo容器运行在pod里面pod控制器资源replicationcontrollersrc控制pod资源replicasetsrsdeploymentsdeploydaemonsetsdsjobscronjobscjhorizontalpodautoscalershpastatefulsetssts服务发现资源servicessvc统一pod对外接口ingressing存储资源volumeattachments存储persistentvolumespvpersistentvolumeclaimspvc配置资源configmapscm配置secrets配置 4.2 资源操作命令 k8s对资源如何操作可以通过kubectl --help命令获取帮助信息 常用操作有 操作分类命令说明基本命令create创建资源edit编辑资源patch更新资源get获取资源delete删除资源explain展示资源文档运行和调试run运行一个podexpose暴露资源为Servicedescribe显示资源内部信息logs输出容器在pod中的日志attach进入运行中的容器exec执行容器中的一个命令cp在pod内外复制文件rollout管理资源的发布scale扩(缩)容pod的数量autoscale自动调整pod的数量其他apply通过文件对资源进行配置label更新资源上的标签cluster-info显示集群信息version显示当前Server和Client的版本 4.3 资源操作方式 4.3.1 命令行方式 语法 kubectl [command] [type] [name] [flags]说明 command要对资源执行的操作例如create、get、delete type资源类型比如deployment、pod、service name资源名称 flags额外可选参数 示例 # kubectl [command] [type] kubectl get pod# kubectl [command] [type] [name] kubectl get pod nginx-pod# kubectl [command] [type] [name] [flags] kubectl get pod nginx-pod -o yaml4.3.2 YAML文件方式 创建nginx-pod.yaml文件 --- apiVersion: v1 kind: Namespace metadata:name: prod ...--- apiVersion: v1 kind: Pod metadata:name: nginx-podnamespace: prod spec:containers:- name: nginx-containerimage: nginx:latest ...# 执行create命令创建资源 kubectl create -f nginx-pod.yaml# 使用apply操作资源如果资源不存在就创建如果资源已存在就更新 [rootk8s-master ~]# kubectl apply -f nginx-pod.yaml namespace/prod created pod/nginx-pod created [rootk8s-master ~]# kubectl apply -f nginx-pod.yaml namespace/prod unchanged pod/nginx-pod unchanged[rootk8s-master ~]# kubectl create -f nginx-pod.yaml namespace/prod created pod/nginx-pod created[rootk8s-master ~]# kubectl get -f nginx-pod.yaml NAME STATUS AGE namespace/prod Active 21sNAME READY STATUS RESTARTS AGE pod/nginx-pod 1/1 Running 0 21s小结 # 创建/更新资源 kubectl apply -f xxx.yaml# 删除资源 kubectl delete -f xxx.yaml# 查看资源 kubectl get -f xxx.yaml kubectl describe -f xxx.yaml5 Namespace k8s的命名空间Namespace可以将集群的资源进行逻辑上的划分和隔离。 作用 隔离和资源划分命名空间允许将集群资源进行逻辑上的划分和隔离。多租户支持通过使用命名空间可以在同一个Kubernetes集群中支持多个租户或团队。访问控制和权限管理命名空间提供了一种在集群中实施访问控制和权限管理的机制。资源管理和监控通过将相关的资源放置在同一个命名空间下可以更方便地进行资源管理和监控。 5.1 查看命名空间 资源查看命名空间 [rootk8s-master ~]# kubectl api-resources | grep Namespace NAME SHORTNAMES APIVERSION NAMESPACED KIND namespaces ns v1 false Namespace命名空间查看命令 常用命令 # 查看所有的命名空间 kubectl get ns# 查看某个命名空间 kubectl get ns 命名空间名称# 查看某个命名空间详情 kubectl describe ns 命名空间名称# 查看命名空间指定格式输出 # 常见wide、json、yaml格式 kubectl get ns -o yaml kubectl get ns 命名空间名称 -o yaml示例 [rootk8s-master ~]# kubectl get ns NAME STATUS AGE default Active 3d3h kube-node-lease Active 3d3h kube-public Active 3d3h kube-system Active 3d3h[rootk8s-master ~]# kubectl get ns default NAME STATUS AGE default Active 3d3h [rootk8s-master ~]# kubectl describe ns default Name: default Labels: kubernetes.io/metadata.namedefault Annotations: none Status: ActiveNo resource quota.No LimitRange resource.[rootk8s-master ~]# kubectl describe ns default Name: default Labels: kubernetes.io/metadata.namedefault Annotations: none Status: ActiveNo resource quota.No LimitRange resource.[rootk8s-master ~]# kubectl get ns default -o yaml apiVersion: v1 kind: Namespace metadata:creationTimestamp: 2023-12-18T07:51:02Zlabels:kubernetes.io/metadata.name: defaultname: defaultresourceVersion: 45uid: e88e80f3-8a34-46c1-9978-41014cd3a179 spec:finalizers:- kubernetes status:phase: Active5.2 创建命名空间 kubectl create ns 命名空间名称kubectl create -f 文件名.yamlkubectl apply -f 文件名.yaml示例 [rootk8s-master ~]# kubectl create ns dev namespace/dev created# ns-dev.yaml # create dev namespace yaml apiVersion: v1 kind: Namespace metadata:name: dev[rootk8s-master ~]# kubectl apply -f ns-dev.yaml namespace/dev created5.3 删除命名空间 kubectl delete ns 命名空间名称kubectl delete -f 文件名.yaml示例 [rootk8s-master ~]# kubectl delete ns dev namespace dev deleted [rootk8s-master ~]# kubectl delete -f ns-dev.yaml namespace dev deleted5.4 命名空间资源限额 通过ResourceQuota可以对Namespace资源包括CPU、内存、存储等使用限制。编写YAML文件时可以采用kubectl explain 资源类型或资源类型.属性获得帮助信息。 备注如果命名空间做了限制那么对应pod也要做资源限制 示例 apiVersion: v1 kind: Namespace metadata:name: dev --- apiVersion: v1 kind: ResourceQuota metadata:name: uat-quotanamespace: dev spec:hard:requests.cpu: 2requests.memory: 2Gilimits.cpu: 2limits.memory: 2Gi[rootk8s-master ~]# kubectl apply -f ns-dev.yaml namespace/dev created resourcequota/uat-quota created[rootk8s-master ~]# kubectl get -f ns-dev.yaml NAME STATUS AGE namespace/dev Active 7m35sNAME AGE REQUEST LIMIT resourcequota/uat-quota 7m35s requests.cpu: 0/2, requests.memory: 0/2Gi limits.cpu: 0/2, limits.memory: 0/2Gi配置含义说明 资源名称说明limits.cpu所有非终止状态的 Pod其 CPU 限额总量不能超过该值limits.memory所有非终止状态的 Pod其内存限额总量不能超过该值requests.cpu所有非终止状态的 Pod其 CPU 需求总量不能超过该值requests.memory所有非终止状态的 Pod其内存需求总量不能超过该值hugepages-对于所有非终止状态的 Pod针对指定尺寸的巨页请求总数不能超过此值cpu与 requests.cpu 相同memory与 requests.memory 相同 6 Pod 程序运行在容器中容器运行在pod中pod属于某个命名空间 [rootk8s-master ~]# kubectl api-resources | grep Pod pods po v1 true Pod6.1 创建pods 语法 kubectl run NAME --imageimage [--envkeyvalue] [--portport] [--dry-runserver|client] [--overridesinline-json] [--command] -- [COMMAND] [args...] [options]kubectl apply -f 文件名.yamlkubectl create -f 文件名.yaml示例 [rootk8s-master ~]# kubectl run nginx-test --imagenginx --port80 -n dev pod/nginx-test created6.2 查看pods [rootk8s-master ~]# kubectl get pods -n dev NAME READY STATUS RESTARTS AGE nginx-test 1/1 Running 0 26s[rootk8s-master ~]# kubectl get pods nginx-test -n dev NAME READY STATUS RESTARTS AGE nginx-test 1/1 Running 0 108s[rootk8s-master ~]# kubectl get pods -o wide -n dev NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-test 1/1 Running 0 51s 10.244.36.80 k8s-node1 none none[rootk8s-master ~]# kubectl describe pods nginx-test -n dev 略[rootk8s-master ~]# kubectl get pods -o wide -n dev 略# 在k8s各个节点上都可以访问nginx-test pod里面的nginx服务 [rootk8s-master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane 3d20h v1.28.2 k8s-node1 Ready none 3d19h v1.28.2 k8s-node2 Ready none 3d19h v1.28.2 k8s-node3 Ready none 3d19h v1.28.2[rootk8s-master ~]# curl 10.244.36.80:80 !DOCTYPE html html head titleWelcome to nginx!/title style html { color-scheme: light dark; } body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } /style /head body h1Welcome to nginx!/h1 pIf you see this page, the nginx web server is successfully installed and working. Further configuration is required./ppFor online documentation and support please refer to a hrefhttp://nginx.org/nginx.org/a.br/ Commercial support is available at a hrefhttp://nginx.com/nginx.com/a./ppemThank you for using nginx./em/p /body /html[rootk8s-node1 ~]# curl 10.244.36.80:80 略[rootk8s-node2 ~]# curl 10.244.36.80:80 略[rootk8s-node3 ~]# curl 10.244.36.80:80 略6.3 删除pods [rootk8s-master ~]# kubectl delete pods nginx-test pod nginx-test deleted6.4 资源清单 apiVersion: v1 #必选版本号例如v1 kind: Pod   #必选资源类型例如 Pod metadata:   #必选元数据name: string #必选Pod名称namespace: string #Pod所属的命名空间,默认为defaultlabels:    #自定义标签列表name: string   spec: #必选Pod中容器的详细定义containers: #必选Pod中容器列表- name: string #必选容器名称image: string #必选容器的镜像名称imagePullPolicy: [ Always|Never|IfNotPresent ] #获取镜像的策略 command: [string] #容器的启动命令列表如不指定使用打包时使用的启动命令args: [string] #容器的启动命令参数列表workingDir: string #容器的工作目录volumeMounts: #挂载到容器内部的存储卷配置- name: string #引用pod定义的共享存储卷的名称需用volumes[]部分定义的的卷名mountPath: string #存储卷在容器内mount的绝对路径应少于512字符readOnly: boolean #是否为只读模式ports: #需要暴露的端口库号列表- name: string #端口的名称containerPort: int #容器需要监听的端口号hostPort: int #容器所在主机需要监听的端口号默认与Container相同protocol: string #端口协议支持TCP和UDP默认TCPenv: #容器运行前需设置的环境变量列表- name: string #环境变量名称value: string #环境变量的值resources: #资源限制和请求的设置limits: #资源限制的设置cpu: string #Cpu的限制单位为core数将用于docker run --cpu-shares参数memory: string #内存限制单位可以为Mib/Gib将用于docker run --memory参数requests: #资源请求的设置cpu: string #Cpu请求容器启动的初始可用数量memory: string #内存请求,容器启动的初始可用数量lifecycle: #生命周期钩子postStart: #容器启动后立即执行此钩子,如果执行失败,会根据重启策略进行重启preStop: #容器终止前执行此钩子,无论结果如何,容器都会终止livenessProbe: #对Pod内各容器健康检查的设置当探测无响应几次后将自动重启该容器exec:   #对Pod容器内检查方式设置为exec方式command: [string] #exec方式需要制定的命令或脚本httpGet: #对Pod内个容器健康检查方法设置为HttpGet需要制定Path、portpath: stringport: numberhost: stringscheme: stringHttpHeaders:- name: stringvalue: stringtcpSocket: #对Pod内个容器健康检查方式设置为tcpSocket方式port: numberinitialDelaySeconds: 0 #容器启动完成后首次探测的时间单位为秒timeoutSeconds: 0    #对容器健康检查探测等待响应的超时时间单位秒默认1秒periodSeconds: 0    #对容器监控检查的定期探测时间设置单位秒默认10秒一次successThreshold: 0failureThreshold: 0securityContext:privileged: falserestartPolicy: [Always | Never | OnFailure] #Pod的重启策略nodeName: string #设置NodeName表示将该Pod调度到指定到名称的node节点上nodeSelector: obeject #设置NodeSelector表示将该Pod调度到包含这个label的node上imagePullSecrets: #Pull镜像时使用的secret名称以keysecretkey格式指定- name: stringhostNetwork: false #是否使用主机网络模式默认为false如果设置为true表示使用宿主机网络volumes: #在该pod上定义共享存储卷列表- name: string #共享存储卷名称 volumes类型有很多种emptyDir: {} #类型为emtyDir的存储卷与Pod同生命周期的一个临时目录。为空值hostPath: string #类型为hostPath的存储卷表示挂载Pod所在宿主机的目录path: string    #Pod所在宿主机的目录将被用于同期中mount的目录secret:    #类型为secret的存储卷挂载集群与定义的secret对象到容器内部scretname: string items: - key: stringpath: stringconfigMap: #类型为configMap的存储卷挂载预定义的configMap对象到容器内部name: stringitems:- key: stringpath: string7 Label标签 label标签的意思给资源添加标签实现对资源进行分类分组 标签是以键值对(key: value 或 keyvalue)添加到资源上(node、pods、pods控制器、service等) 一个标签可以添加到多个资源上一个资源也可以添加多个标签 常见标签 版本标签version: “1.0” 环境标签env: dev 7.1 标签操作 语法 kubectl label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1VAL_1 ... KEY_NVAL_N [--resource-versionversion] [options]示例 1、前提工作 [rootk8s-master ~]# kubectl run nginx-pod --imagenginx --port80 -n dev pod/nginx-pod created[rootk8s-master ~]# kubectl get pods -n dev NAME READY STATUS RESTARTS AGE nginx-pod 1/1 Running 0 19s2、添加标签 [rootk8s-master ~]# kubectl label Pod nginx-pod envdev version1.0 -n dev pod/nginx-pod labeled3、更新标签 [rootk8s-master ~]# kubectl label --overwrite Pod nginx-pod version2.0 -n dev pod/nginx-pod labeled4、查看标签 [rootk8s-master ~]# kubectl get pods nginx-pod -n dev --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx-pod 1/1 Running 0 7m26s envdev,runnginx-pod,version2.05、删除标签 [rootk8s-master ~]# kubectl label Pod nginx-pod version- -n dev pod/nginx-pod unlabeled# 验证标签是否删除 [rootk8s-master ~]# kubectl get pods nginx-pod -n dev --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx-pod 1/1 Running 0 9m18s envdev,runnginx-pod6、添加、更新、删除标签也都可以在文件中实施 # nginx-pod.yaml文件 apiVersion: v1 kind: Pod metadata:name: nginx-podnamespace: devlabels:env: devversion: 2.0 spec:containers:- name: nginx-containerimage: nginx:latest[rootk8s-master ~]# kubectl apply -f nginx-pod.yaml pod/nginx-pod created[rootk8s-master ~]# kubectl get pods -n dev --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx-pod 1/1 Running 0 25s envdev,version2.07.2 分组管理 Label Selector选择器通过一个过滤的语法进行查找到对应标签的资源 匹配规则 keyvalue这类是直接匹配 key!value匹配标签中没有keyvalue的资源 key in (A,B)匹配所有具有keyA和keyB标签的资源 key not in (A)匹配所有不具有标签A的资源 多个条件匹配用逗号隔开 示例 [rootk8s-master ~]# kubectl get pods -n dev --show-labels NAME READY STATUS RESTARTS AGE LABELS nginx-pod 1/1 Running 0 19m envdev,version2.0[rootk8s-master ~]# kubectl get pods -l envdev -n dev NAME READY STATUS RESTARTS AGE nginx-pod 1/1 Running 0 19m[rootk8s-master ~]# kubectl get pods -l env!dev -n dev No resources found in dev namespace.[rootk8s-master ~]# kubectl get pods -l envdev,version2.0 -n dev NAME READY STATUS RESTARTS AGE nginx-pod 1/1 Running 0 21mselector: # 选择器通过它指定该控制器管理哪些podmatchLabels: # Labels匹配规则app: nginx-podmatchExpressions: # Expressions匹配规则- { key: app, operator: In, values: [ nginx-pod ] }通过类似上面这种方式实现资源的互相绑定这个是后话。 8 Pod控制器 Pod是k8s最小管理单元在k8s中按照pods的创建方式分为两类 自主式podkubectl run直接创建这种pods删除后就没有了也不会重建 控制器创建的pods通过控制器创建的pods直接删除pods会自动新建得直接删除控制器才行 8.1 Pod控制器概念 Pod控制器是管理pod的中间层通过Pod控制器按照控制器的策略维护pods 8.2 Pod控制器种类 在k8s中有很多类型的Pod控制器每种都有自己的适合的场景常见的Pod控制器有下面这些 kind名称简称apiVersion说明备注ReplicationControllerreplicationcontrollersrcv1比较原始的pod控制器由ReplicaSet替代废弃ReplicaSetreplicasetsrsapps/v1pod数量固定支持pod数量扩缩容镜像升级Deploymentdeploymentsdeployapps/v1控制ReplicaSet操作Pod并支持滚动升级、回退版本HorizontalPodAutoscalerhorizontalpodautoscalershpaautoscaling/v2根据集群负载自动调整Pod数量实现削峰填谷DaemonSetdaemonsetsdsapps/v1指定节点运行一个Pod用于守护进程任务Jobjobsbatch/v1完成一次性任务CronJobcronjobscjbatch/v1定时任务不需要持续后台运行StatefulSetstatefulsetsstsapps/v1管理有状态应用 ​ 8.3 ReplicaSet pod数量固定支持pod数量扩缩容镜像升级 8.3.1 常见操作 # 查 kubectl get replicasets -n 命名空间kubectl get replicasets -n 命名空间 -o wide/json/yamlkubectl get replicasets rs控制器名 -n 命名空间 -o wide/json/yamlkubectl describe replicasets rs控制器名 -n 命名空间# 建 kubectl create/apply -f 文件名.yaml# 编辑 kubectl edit replicasets rs控制器名 -n 命名空间 kubectl apply -f 文件名.yamlkubectl set SUBCOMMAND [options] # SUBCOMMAND选项可以通过类似kubectl set image --help帮助信息 env Update environment variables on a pod template image Update the image of a pod template resources 使用 Pod 模板更新对象的资源请求/限制 selector 为资源设置选择器 serviceaccount Update the service account of a resource subject Update the user, group, or service account in a role binding or cluster role# 删除 kubectl delete -f 文件名.yaml kubectl delete replicasets rs控制器名 -n 命名空间8.3.2 资源清单 apiVersion: apps/v1 # 版本号 kind: ReplicaSet # 类型 metadata: # 元数据name: # rs名称 namespace: # 所属命名空间 labels: # 标签controller: rs spec: # 详情描述replicas: 3 # 副本数量selector: # 选择器通过它指定该控制器管理哪些podmatchLabels: # Labels匹配规则app: nginx-podmatchExpressions: # Expressions匹配规则- { key: app, operator: In, values: [ nginx-pod ] }template: # 模板当副本数量不足时会根据下面的模板创建pod副本metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:latestports:- containerPort: 80示例 apiVersion: apps/v1 kind: ReplicaSet metadata:name: rs-nginxnamespace: devlabels:controller: rs-nginx spec:replicas: 3selector:matchLabels:app: nginx-podmatchExpressions:- { key: app, operator: In, values: [ nginx-pod ] }template:metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:latestports:- containerPort: 80[rootk8s-master ~]# kubectl get replicasets -n dev NAME DESIRED CURRENT READY AGE rs-nginx 3 3 3 3m50s[rootk8s-master ~]# kubectl get pods -n dev NAME READY STATUS RESTARTS AGE rs-nginx-4znwr 1/1 Running 0 3m56s rs-nginx-6g6t2 1/1 Running 0 3m56s rs-nginx-6rtm2 1/1 Running 0 3m56s[rootk8s-master ~]# kubectl get pods -o wide -n dev NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES rs-nginx-4znwr 1/1 Running 0 6m50s 10.244.36.81 k8s-node1 none none rs-nginx-6g6t2 1/1 Running 0 6m50s 10.244.169.135 k8s-node2 none none rs-nginx-6rtm2 1/1 Running 0 6m50s 10.244.107.199 k8s-node3 none none8.3.3 pod数量固定 ReplicaSet管理的pod数量保持稳定假如删除一个pod马上又会重新启动一个pod 示例 [rootk8s-master ~]# kubectl delete pods rs-nginx-4znwr -n dev pod rs-nginx-4znwr deleted[rootk8s-master ~]# kubectl get pods -n dev NAME READY STATUS RESTARTS AGE rs-nginx-6g6t2 1/1 Running 0 8m33s rs-nginx-6rtm2 1/1 Running 0 8m33s rs-nginx-ss8kw 0/1 ContainerCreating 0 6s[rootk8s-master ~]# kubectl get pods -n dev NAME READY STATUS RESTARTS AGE rs-nginx-6g6t2 1/1 Running 0 8m48s rs-nginx-6rtm2 1/1 Running 0 8m48s rs-nginx-ss8kw 1/1 Running 0 21s8.3.4 pod数量扩缩容 ReplicaSet管理的pod数量可以进行扩缩容增加pod数量或者减少pod数量 示例 1、查看replicasets名称 [rootk8s-master ~]# kubectl get replicasets -n dev NAME DESIRED CURRENT READY AGE rs-nginx 3 3 3 16m2、方式一修改pod数量 # 修改数量为5 [rootk8s-master ~]# kubectl edit replicasets rs-nginx -n dev replicaset.apps/rs-nginx edited3、方式一修改pod数量是否生效 [rootk8s-master ~]# kubectl get replicasets -n dev NAME DESIRED CURRENT READY AGE rs-nginx 5 5 4 18m4、方式二修改pod数量 # 修改数量为4 [rootk8s-master ~]# kubectl scale replicasets rs-nginx --replicas4 -n dev replicaset.apps/rs-nginx scaled5、方式二修改pod数量是否生效 [rootk8s-master ~]# kubectl scale replicasets rs-nginx --replicas4 -n dev replicaset.apps/rs-nginx scaled6、方式三修改pod数量 # # 修改数量为6 [rootk8s-master ~]# vim controller-rs-nginx.yaml [rootk8s-master ~]# kubectl apply -f controller-rs-nginx.yaml replicaset.apps/rs-nginx configured7、方式三修改pod数量是否生效 [rootk8s-master ~]# kubectl get replicasets -n dev NAME DESIRED CURRENT READY AGE rs-nginx 6 6 4 24m8.3.5 pod镜像更改 ReplicaSet管理的pod容器镜像进行更改 示例 1、查看replicasets的镜像 [rootk8s-master ~]# kubectl get replicasets -n dev -o wide NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR rs-nginx 3 3 0 6s nginx nginx:1.13.0 appnginx-pod,app in (nginx-pod)2、方式一修改容器镜像 # 修改容器镜像为nginx:1.15.0 [rootk8s-master ~]# kubectl edit replicasets rs-nginx -n dev replicaset.apps/rs-nginx edited3、方式一修改容器镜像验证 [rootk8s-master ~]# kubectl get replicasets -n dev -o wide NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR rs-nginx 3 3 3 3m13s nginx nginx:1.15.0 appnginx-pod,app in (nginx-pod)4、方式二修改容器镜像 # 修改容器镜像为nginx:1.15.5 [rootk8s-master ~]# vim controller-rs-nginx.yaml [rootk8s-master ~]# kubectl apply -f controller-rs-nginx.yaml replicaset.apps/rs-nginx configured5、方式二修改容器镜像验证 [rootk8s-master ~]# kubectl get replicasets -n dev -o wide NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR rs-nginx 3 3 3 12m nginx nginx:1.15.5 appnginx-pod,app in (nginx-pod)6、方式三修改容器镜像 # 修改容器镜像为nginx:1.23.0 [rootk8s-master ~]# kubectl set image replicasets rs-nginx nginxnginx:1.23.0 -n dev replicaset.apps/rs-nginx image updated7、方式三修改容器镜像验证 [rootk8s-master ~]# kubectl get replicasets -n dev -o wide NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR rs-nginx 3 3 3 14m nginx nginx:1.23.0 appnginx-pod,app in (nginx-pod)注意上面方式只是把ReplicaSet控制器容器镜像版本给更改了但是现有pod容器镜像并不会发生改变得一个个删掉现有的重新生成的才是新镜像版本 [rootk8s-master ~]# kubectl delete pods rs-nginx-5gsxg -n dev pod rs-nginx-5gsxg deleted[rootk8s-master ~]# kubectl get pods -n dev NAME READY STATUS RESTARTS AGE rs-nginx-2s5wm 0/1 ContainerCreating 0 8s rs-nginx-jjfbq 1/1 Running 0 26m rs-nginx-tk4th 1/1 Running 0 26m[rootk8s-master ~]# kubectl get pods -n dev NAME READY STATUS RESTARTS AGE rs-nginx-2s5wm 1/1 Running 0 6m30s rs-nginx-jjfbq 1/1 Running 0 32m rs-nginx-tk4th 1/1 Running 0 32m8.4 Deployment 控制ReplicaSet操作Pod就是控制器ReplicaSet该有的功能控制器Deployment都实现。并在pod镜像方面做了升级pod会自动更换镜像、暂停更换、继续更换、回滚操作 8.4.1 常见操作 # 查 kubectl get deployments -n 命名空间kubectl get deployments -n 命名空间 -o wide/json/yamlkubectl get deployments deploy控制器名 -n 命名空间 -o wide/json/yamlkubectl describe deployments deploy控制器名 -n 命名空间# 建 kubectl create/apply -f 文件名.yaml# 编辑 kubectl edit deployments deploy控制器名 -n 命名空间 kubectl apply -f 文件名.yamlkubectl set SUBCOMMAND [options] # SUBCOMMAND选项可以通过类似kubectl set image --help帮助信息 env Update environment variables on a pod template image Update the image of a pod template resources 使用 Pod 模板更新对象的资源请求/限制 selector 为资源设置选择器 serviceaccount Update the service account of a resource subject Update the user, group, or service account in a role binding or cluster role# 删除 kubectl delete -f 文件名.yaml kubectl delete deployments deploy控制器名 -n 命名空间8.4.2 资源清单 apiVersion: apps/v1 # 版本号 kind: Deployment # 类型 metadata: # 元数据name: # rs名称namespace: # 所属命名空间labels: # 标签controller: deploy spec: # 详情描述replicas: 3 # 副本数量revisionHistoryLimit: 3 # 保留历史版本paused: false # 暂停部署默认是falseprogressDeadlineSeconds: 600 # 部署超时时间s默认是600strategy: # 策略type: RollingUpdate # 滚动更新策略rollingUpdate: # 滚动更新maxSurge: 30% # 最大额外可以存在的副本数可以为百分比也可以为整数maxUnavailable: 30% # 最大不可用状态的 Pod 的最大值可以为百分比也可以为整数selector: # 选择器通过它指定该控制器管理哪些podmatchLabels: # Labels匹配规则app: nginx-podmatchExpressions: # Expressions匹配规则- { key: app, operator: In, values: [ nginx-pod ] }template: # 模板当副本数量不足时会根据下面的模板创建pod副本metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:1.30.1ports:- containerPort: 808.4.3 pod镜像更改 Deployment控制器的容器镜像修改也同ReplicaSet控制器修改容器镜像方法相同但是pod的容器镜像不需要手动删除会根据策略进行自动版本更新。 spec.strategy.type有两个值 RollingUpdate滚动更新就是杀死一部分就启动一部分在更新过程中存在两个版本PodRecreate在创建出新的Pod之前会先杀掉所有已存在的Pod spec.strategy.rollingUpdate.maxSurge用来指定在升级过程中不可用Pod的最大数量默认为25% spec.strategy.rollingUpdate.maxSurge用来指定在升级过程中可以超过期望的Pod的最大数量默认为25% 示例 apiVersion: apps/v1 kind: Deployment metadata:name: deploy-nginxnamespace: devlabels:controller: deploy spec:replicas: 3revisionHistoryLimit: 3paused: falseprogressDeadlineSeconds: 600strategy:type: RollingUpdaterollingUpdate:maxSurge: 30%maxUnavailable: 30%selector:matchLabels:app: nginx-podmatchExpressions:- { key: app, operator: In, values: [ nginx-pod ] }template:metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:1.15.5ports:- containerPort: 80[rootk8s-master ~]# kubectl apply -f controller-deploy-nginx.yaml deployment.apps/deploy-nginx created[rootk8s-master ~]# kubectl get deployment -n dev -o wide NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR deploy-nginx 3/3 3 3 103s nginx nginx:1.15.5 appnginx-pod,app in (nginx-pod)[rootk8s-master ~]# kubectl get pods -n dev NAME READY STATUS RESTARTS AGE deploy-nginx-677f59dd8-2m9ph 1/1 Running 0 83s deploy-nginx-677f59dd8-c5rbk 1/1 Running 0 83s deploy-nginx-677f59dd8-t64bl 1/1 Running 0 83s1、容器镜像版本更改 容器镜像版本更改方式参照ReplicaSet控制器方式 [rootk8s-master ~]# kubectl set image deployment deploy-nginx nginxnginx:1.23.0 -n dev deployment.apps/deploy-nginx image updated2、容器镜像版本更改验证 [rootk8s-master ~]# kubectl get deployment -n dev -o wide NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR deploy-nginx 3/3 2 3 3m1s nginx nginx:1.23.0 appnginx-pod,app in (nginx-pod)3、观看pods情况是会进行镜像自动更新 [rootk8s-master ~]# kubectl get pods -n dev NAME READY STATUS RESTARTS AGE deploy-nginx-677f59dd8-2m9ph 1/1 Running 0 3m12s deploy-nginx-677f59dd8-t64bl 1/1 Running 0 3m12s deploy-nginx-7cd566d98b-6sthc 0/1 ContainerCreating 0 12s deploy-nginx-7cd566d98b-ztl65 1/1 Running 0 14s[rootk8s-master ~]# kubectl get pods -n dev NAME READY STATUS RESTARTS AGE deploy-nginx-7cd566d98b-6sthc 1/1 Running 0 2m35s deploy-nginx-7cd566d98b-sxkn5 1/1 Running 0 101s deploy-nginx-7cd566d98b-ztl65 1/1 Running 0 2m37s[rootk8s-master ~]# kubectl describe pods deploy-nginx-7cd566d98b-6sthc -n dev 略8.4.4 pod镜像更改操作 pod镜像也可以称为pod版本通过kubectl rollout --help可知以下常见操作 kubectl rollout SUBCOMMAND [options] # SUBCOMMAND status 显示上线的状态 history 显示pod容器镜像(版本)更改记录 pause 暂停pod容器镜像(版本)更改操作 resume 继续已经暂停的pod容器镜像(版本)更改操作 restart 重启pod容器镜像(版本)更改操作 undo 默认回滚到上一次更改pod容器镜像(版本)更改记录(使用--to-revision指定回滚版本)1、查看pod镜像(版本)更换情况 kubectl rollout status deployments deploy控制器名 -n 命名空间示例 [rootk8s-master ~]# kubectl rollout status deploy deploy-nginx -n dev deployment deploy-nginx successfully rolled out2、查看pod镜像(版本)更换历史 kubectl rollout history deployments deploy控制器名 -n 命名空间示例 [rootk8s-master ~]# kubectl rollout history deploy deploy-nginx -n dev deployment.apps/deploy-nginx REVISION CHANGE-CAUSE 1 none 2 none3、暂停pod镜像(版本)更换操作 滚动更新是逐个替换更新是需要一个时间段暂停更换就是维持目前pod容器镜像版本现状 kubectl rollout pause deployments deploy控制器名 -n 命名空间4、暂停继续更换pod镜像(版本) kubectl rollout resume deployments deploy控制器名 -n 命名空间5、重启更改pod镜像(版本) kubectl rollout restart deployments deploy控制器名 -n 命名空间6、回滚操作 # 默认回滚到上一个版本 kubectl rollout undo deployments deploy控制器名 -n 命名空间# 回滚到1的版本 kubectl rollout undo deployments deploy控制器名 --to-revision1 -n 命名空间8.5 HPA控制器 kubectl scale [--resource-versionversion] [--current-replicascount] --replicasCOUNT (-f FILENAME | TYPE NAME) [options]kubectl scale可以实现pod数量的更改实际生产环境中希望实现自动扩缩容。 [rootk8s-master ~]# kubectl api-resources | grep Horizontal horizontalpodautoscalers hpa autoscaling/v2 true HorizontalPodAutoscaler8.5.1 自动扩缩容 文档地址https://kubernetes.io/zh-cn/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#autoscaling-on-multiple-metrics-and-custom-metrics 示例 # hpa-nginx.yaml 文件 apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata:name: hpa-nginxnamespace: devlabels:controller: hpa spec:scaleTargetRef: # 指定要控制的信息apiVersion: apps/v1kind: Deploymentname: deploy-nginxminReplicas: 1 # 最小pod数量maxReplicas: 10 # 最大pod数量metrics:- type: Resourceresource:name: cputarget:type: UtilizationaverageUtilization: 50# 执行 [rootk8s-master ~]# kubectl apply -f hpa-nginx.yaml horizontalpodautoscaler.autoscaling/hpa-nginx created# 查看发现内存查看 [rootk8s-master ~]# kubectl get hpa -n dev NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE hpa-nginx Deployment/deploy-nginx unknown/50% 1 10 3 6m4s# 查看内存、cpu使用情况发现指标API不可用 [rootk8s-master ~]# kubectl top node error: Metrics API not available8.5.2 指标API可用安装 kubectl top命令可用则需要安装Metrics API # 下载最新版本high-availability-1.21.yaml [rootk8s-master ~]# https://521github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21.yaml 略# 改下面三处内容 hostNetwork: true - --kubelet-insecure-tls image: registry.aliyuncs.com/google_containers/metrics-server:v0.6.4[rootk8s-master ~]# kubectl apply -f high-availability-1.21.yaml[rootk8s-master ~]# kubectl top nodes NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% k8s-master 193m 4% 1641Mi 44% k8s-node1 68m 3% 755Mi 20% k8s-node2 70m 3% 651Mi 37% k8s-node3 70m 3% 559Mi 32%[rootk8s-master ~]# kubectl top pods -n dev NAME CPU(cores) MEMORY(bytes) deploy-nginx-7cd566d98b-6sthc 0m 1Mi deploy-nginx-7cd566d98b-sxkn5 0m 1Mi deploy-nginx-7cd566d98b-ztl65 0m 7Mi[rootk8s-master ~]# kubectl top --help Display resource (CPU/memory) usage.The top command allows you to see the resource consumption for nodes or pods.This command requires Metrics Server to be correctly configured and working on the server.Available Commands:node Display resource (CPU/memory) usage of nodespod Display resource (CPU/memory) usage of podsUsage:kubectl top [flags] [options]Use kubectl top command --help for more information about a given command. Use kubectl options for a list of global command-line options (applies to all commands).常用命令 # 查看所有节点cpu、内存情况 kubectl top nodes# 查看某个节点cpu、内存情况 kubectl top nodes 节点ip/节点域名# 查看某个命名空间所有pods的cpu、内存情况 kubectl top pods -n 命名空间名称# 查看某个命名空间某个pods的cpu、内存情况 kubectl top pods pods名称 -n 命名空间名称8.6 DaemonSet [rootk8s-master ~]# kubectl api-resources | grep DaemonSet daemonsets ds apps/v1 true DaemonSet节点级别的控制器常用来日志收集、节点监控会随着节点添加新增一个pod节点移走减少一个pod DaemonSet控制器生成的pods也支持使用kubectl rollout回滚操作、暂停、暂停继续、重启等操作。 8.6.1 资源清单 apiVersion: apps/v1 # 版本号 kind: DaemonSet # 类型 metadata: # 元数据name: # ds控制器称namespace: # 所属命名空间labels: #标签controller: daemonset spec: # 详情描述revisionHistoryLimit: 3 # 保留历史版本updateStrategy: # 更新策略type: RollingUpdate # 滚动更新策略rollingUpdate: # 滚动更新maxUnavailable: 1 # 最大不可用状态的 Pod 的最大值可以为百分比也可以为整数selector: # 选择器通过它指定该控制器管理哪些podmatchLabels: # Labels匹配规则app: nginx-podmatchExpressions: # Expressions匹配规则- { key: app, operator: In, values: [ nginx-pod ] }template: # 模板当副本数量不足时会根据下面的模板创建pod副本metadata:labels:app: nginx-podspec:containers:- name: nginx-containersimage: nginx:latestports:- containerPort: 80示例 apiVersion: apps/v1 kind: DaemonSet metadata:name: ds-nginxnamespace: dev spec:selector:matchLabels:app: nginx-podtemplate:metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:latest[rootk8s-master ~]# kubectl apply -f ds-nginx.yaml daemonset.apps/ds-nginx created[rootk8s-master ~]# kubectl get pods -n dev -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES ds-nginx-d7dtp 1/1 Running 0 75s 10.244.36.94 k8s-node1 none none ds-nginx-fwlrk 1/1 Running 0 75s 10.244.169.146 k8s-node2 none none ds-nginx-pjqxb 1/1 Running 0 75s 10.244.107.210 k8s-node3 none none8.7 Job控制器 [rootk8s-master ~]# kubectl api-resources | grep Job jobs batch/v1 true Job运行一次就结束pods的控制器 8.7.1 资源清单 apiVersion: batch/v1 # 版本号 kind: Job # 类型 metadata: # 元数据name: # Job控制器名称 namespace: # 所属命名空间 labels: #标签controller: job spec: # 详情描述completions: 1 # 指定job需要成功运行Pods的次数。默认值: 1parallelism: 1 # 指定job在任一时刻应该并发运行Pods的数量。默认值: 1activeDeadlineSeconds: 30 # 指定job可运行的时间期限超过时间还未结束系统将会尝试进行终止。backoffLimit: 6 # 指定job失败后进行重试的次数。默认是6manualSelector: true # 是否可以使用selector选择器选择pod默认是falseselector: # 选择器通过它指定该控制器管理哪些podmatchLabels: # Labels匹配规则app: counter-podmatchExpressions: # Expressions匹配规则- { key: app, operator: In, values: [ counter-pod ] }template: # 模板当副本数量不足时会根据下面的模板创建pod副本metadata:labels:app: counter-podspec:restartPolicy: Never # 重启策略只能设置为Never或者OnFailurecontainers:- name: counterimage: busybox:latestcommand: [ bin/sh,-c,for i in {1..10}; do echo $i;sleep 2;done ]关于重启策略设置的说明如果指定为OnFailure则job会在pod出现故障时重启容器而不是创建podfailed次数不变如果指定为Never则job会在pod出现故障时创建新的pod并且故障pod不会消失也不会重启failed次数加1如果指定为Always的话就意味着一直重启意味着job任务会重复去执行了当然不对所以不能设置为Always8.8 CronJob [rootk8s-master ~]# kubectl api-resources | grep CronJob cronjobs cj batch/v1 true CronJob执行类似定时任务的pods的控制器 8.8.1 资源清单 apiVersion: batch/v1 # 版本号 kind: CronJob # 类型 metadata: # 元数据name: # CronJob控制器名称namespace: # 所属命名空间labels: #标签controller: cronjob spec: # 详情描述schedule: # cron格式的作业调度运行时间点,用于控制任务在什么时间执行concurrencyPolicy: # 并发执行策略用于定义前一次作业运行尚未完成时是否以及如何运行后一次的作业failedJobHistoryLimit: # 为失败的任务执行保留的历史记录数默认为1successfulJobHistoryLimit: # 为成功的任务执行保留的历史记录数默认为3startingDeadlineSeconds: # 启动作业错误的超时时长jobTemplate: # job控制器模板用于为cronjob控制器生成job对象;下面其实就是job的定义metadata:spec:completions: 1parallelism: 1activeDeadlineSeconds: 30backoffLimit: 6manualSelector: trueselector:matchLabels:app: counter-podmatchExpressions: # 规则- { key: app, operator: In, values: [ counter-pod ] }template:metadata:labels:app: counter-podspec:restartPolicy: Nevercontainers:- name: counterimage: busybox:latestcommand: [ bin/sh,-c,for i in 1 2 3 4 5 6 7 8 9; do echo $i;sleep 20;done ]需要重点解释的几个选项 schedule: cron表达式用于指定任务的执行时间*/1 * * * *分钟 小时 日 月份 星期分钟 值从 0 到 59.小时 值从 0 到 23.日 值从 1 到 31.月 值从 1 到 12.星期 值从 0 到 6, 0 代表星期日多个时间可以用逗号隔开 范围可以用连字符给出*可以作为通配符 /表示每... concurrencyPolicy:Allow: 允许Jobs并发运行(默认)Forbid: 禁止并发运行如果上一次运行尚未完成则跳过下一次运行Replace: 替换取消当前正在运行的作业并用新作业替换它
http://www.hkea.cn/news/14326331/

相关文章:

  • 腾讯建设网站首页wordpress 哪些网站
  • 域名备案与网站备案seo专员工作内容
  • 胶州市城乡建设局网站做网站教程pdf
  • 网站推广外包公司如何备份网站 整站
  • 财富半岛建设购物网站外链网站 风险
  • 投标文件网站开发技术部分如何做一个自己的app
  • 公司网站建设 目录基于mvc的网站开发
  • 设计 网站 源码湖北长安建设集团官方网站
  • 公司要我做网站_没有公司的材料是不是不可以做桂建云官网
  • 外贸网站啥需要掌握在自己手里在线定制礼品
  • wordpress站群 优化莘县做网站推广
  • 汕头网站建设方案开发网站建设培训招生
  • 在哪个网站可以学做淘宝详情网站后台登录界面
  • 网页设计与网站建设区别两个路由器做双网站
  • 建网站价格 建设网站需要多少钱微信公众号转入公司网站建设
  • 权重较高网站美图在线图片编辑器
  • 企业建站1年建造师网
  • 网站建设的价值最好的网站管理系统
  • 安徽工程建设信息网站王开林什么网站可以做线上小游戏
  • 导航网站帝国cms模版精品课程网站建设的国内外现状
  • 做影视网站引流合肥seo软件
  • 郑州的做网站公司有哪些营销型网站建设多少钱
  • 网站建设和应用的情况网站视频主持人制作
  • 国外互联网资讯网站wordpress 4.7.2安装
  • 青州网站建设优化舟山网站建设哪家好
  • 做网站设计网站建设推广电商无货源怎么做
  • 网站loading动画效果婚庆公司简介
  • 网易那个网站可以做字幕如何做企业的网站
  • 微网站建设公司首选内容网站管理系统
  • 做线上网站的目的暴雪手游