k8s资源之namespace&replicaset&deployment
  TEZNKK3IfmPf 2023年11月15日 28 0

namespace:

•名称空间

•用于隔离不同的应用

•简称ns

常用命令:

•kubectl get namespaces

• kubectl describe namespace default

•kubectl create -f namespace-test.yaml

•kubectl delete namespace test

•kubectl apply -f namespace-test.yaml

•kubectl label namespace test aa=bb

•kubectl get ns -l aa=bb

•kubectl label ns test aa-

•kubectl edit ns test

•kubectl annotate ns test aa=bb

• kubectl annotate ns test aa-

•kubectl delete ns test --force --grace-period=0

•Kubectl create ns test

•kubectl get ns test -o yaml

resourceQuota:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: mem-cpu-demo
spec:
  hard:
    requests.cpu: "1"
    requests.memory: 1Gi
    limits.cpu: "2"
    limits.memory: 2Gi
kind: Namespace
apiVersion: v1
metadata:
  name: test
  labels:
    name: test

replicaset:

•确保Pod数量:它会确保Kubernetes中有指定数量的Pod在运行,如果少于指定数量的Pod,RC就会创建新的,反之这会删除多余的,保证Pod的副本数量不变

•确保Pod健康:当Pod不健康,比如运行出错了,总之无法提供正常服务时,RC也会杀死不健康的Pod,重新创建新的

•弹性伸缩:在业务高峰或者低峰的时候,可以用过RC来动态的调整Pod数量来提供资源的利用率,当然我们也提到过如果使用HPA这种资源对象的话可以做到自动伸缩。

滚动升级:滚动升级是一种平滑的升级方式,通过逐步替换的策略,保证整体系统的稳定性

常用命令:

•kubectl create -f replicaset.yaml

• kubectl describe rs frontend

•kubectl edit rs frontend

•kubectl label rs frontend aa=bb

•Kubectl label rs frontend aa-

•Kubectl annotate rs frontend xx=yy

•Kubectl annotate rs frontend xx-

• kubectl get rs frontend -o yaml

•kubectl get rs -l aa=bb

•kubectl get rs -o wide

•kubectl scale rs frontend --replicas=4

•kubectl apply -f replicaset.yaml

• kubectl patch rs frontend –p ‘{“metadata”:{“labels”:{“xx”:”yy”}}}’

metadata.generation:

•metadata.generation 就是这个 ReplicationSet 的元配置数据被修改了多少次。这里就有个版本迭代的概念。每次我们使用 kuberctl edit 来修改 ReplicationSet 的配置文件,或者更新镜像,这个generation都会增长1,表示增加了一个版本。

metadata.ownerReferences:

•这个字段就是标注这个 ReplicaSet 的 Owner 信息、

•如果rs由deployment创建那么owner就为这个deployment

metadata.resourceVersion:

•这个 resourceVersion 就是这个资源对象当前的版本号。

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: frontend
  labels:
    app: guestbook
    tier: frontend
spec:
  # this replicas value is default
  # modify it according to your case
  replicas: 3
  selector:
    matchLabels:
      tier: frontend
    matchExpressions:
      - {key: tier, operator: In, values: [frontend]}
  template:
    metadata:
      labels:
        app: guestbook
        tier: frontend
    spec:
      containers:
      - name: php-redis
        image: iaasfree/gb-frontend:v3 
        resources:
          requests:
            cpu: 10m
            memory: 10Mi
        env:
        - name: GET_HOSTS_FROM
          value: dns
          # If your cluster config does not include a dns service, then to
          # instead access environment variables to find service host
          # info, comment out the 'value: dns' line above, and uncomment the
          # line below.
          # value: env
        ports:
        - containerPort: 80

hpa:

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: frontend-hpa
  labels:
    software: apache
    project: frontend
    app: hpa
    version: v1
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: ReplicaSet
    name: frontend
  minReplicas: 1
  maxReplicas: 5
  targetCPUUtilizationPercentage: 10

deployment:

•Deployment为Pod和Replica Set提供声明式更新。

你只需要在 Deployment 中描述您想要的目标状态是什么,Deployment controller 就会帮您将 Pod 和ReplicaSet 的实际状态改变到您的目标状态。您可以定义一个全新的 Deployment 来创建 ReplicaSet 或者删除已有的 Deployment 并创建一个新的来替换。
注意:您不该手动管理由 Deployment 创建的 Replica Set,否则您就篡越了 Deployment controller 的职责!

k8s资源之namespace&replicaset&deployment

常用命令:

•kubectl set image deployment nginx-deployment nginx=nginx:1.13

•kubectl delete -f nginx-deploy.yaml

•kubectl create -f nginx-deploy.yaml

•kubectl apply -f nginx-deploy.yaml

•kubectl edit deploy nginx-deployment

•kubectl label deploy nginx-deployment stage=test

•kubectl label deploy nginx-deployment stage-

•kubectl annotate deploy nginx-deployment anno=xx

•kubectl annotate deploy nginx-deployment anno-

•kubectl replace -f nginx-deploy.yaml

•Kubectl patch deploy nginx-deployment –p ‘{“matadata”:{“labels”:{“aa”:”bb”}}}’

•kubectl diff -f nginx-deploy.yaml

•Kubectl describe deploy nginx-deployment

•kubectl rollout history  deploy/nginx-deployment

•kubectl rollout pause deploy/nginx-deployment

•kubectl rollout resume deploy/nginx-deployment

•kubectl rollout restart deploy/nginx-deployment

•kubectl rollout status deploy/nginx-deployment

•kubectl rollout undo deploy/nginx-deployment

•kubectl rollout undo daemonset/abc --to-revision=3

•kubectl scale deploy nginx-deployment --replicas=3

•kubectl autoscale deployment foo --min=2 --max=10

•kubectl autoscale deployment foo --max=5 --cpu-percent=80

•kubectl set image deploy nginx-deployment nginx=nginx:1.17.6

•kubectl set image deploy nginx-deployment nginx=nginx:1.17.6 --record=true

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

hpa:

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: nginx-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx-deployment
  minReplicas: 1
  maxReplicas: 5
  targetCPUUtilizationPercentage: 10

rollingupdate:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

recreate:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  strategy:
    type: Recreate
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

  progressDeadlineSeconds: 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  progressDeadlineSeconds: 1
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

revisionHistoryLimit:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  revisionHistoryLimit: 2
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年05月31日   23   0   0 redis用户
  TEZNKK3IfmPf   2024年05月31日   27   0   0 dataredis
  TEZNKK3IfmPf   2024年05月31日   23   0   0 nginxpasswd
  TEZNKK3IfmPf   2024年05月31日   23   0   0 awkredis
  TEZNKK3IfmPf   2024年04月26日   34   0   0 linuxnginxcentos
  TEZNKK3IfmPf   2024年05月31日   27   0   0 nginxpasswd
TEZNKK3IfmPf