ReplicaSet

简要概述

staging/src/k8s.io/api/apps/v1/types.go

查看官方介绍

一般不会直接使用,主要通过 Deployment 来控制该资源间接管理 Pod 副本。

常用指令

TODO;

配置示例

  • 通过 kubectl 创建

无法通过 kubectl 命令行直接创建该资源,可先创建 Deployment 资源然后在更改 yaml 文件。

kubectl create deployment busybox \
	--replicas=3 \
	--image=registry.cn-hangzhou.aliyuncs.com/opsaid/busybox:1.35.0 \
	--dry-run=client \
	-o yaml \
	-- /bin/sh -c "sleep 3600"

更改 kindReplicaSet 同时移除生成 yaml 中 strategystatus 属性。

  • 通过 yaml 创建
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  creationTimestamp: null
  labels:
    app: busybox
  name: busybox
spec:
  replicas: 3
  selector:
    matchLabels:
      app: busybox
  #strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: busybox
    spec:
      containers:
      - command:
        - /bin/sh
        - -c
        - sleep 3600
        image: registry.cn-hangzhou.aliyuncs.com/opsaid/busybox:1.35.0
        name: busybox
        resources: {}
#status: {}

数据结构

ReplicaSet

// ReplicaSet ensures that a specified number of pod replicas are running at any given time.
type ReplicaSet struct {
    metav1.TypeMeta `json:",inline"`

    // If the Labels of a ReplicaSet are empty, they are defaulted to
    // be the same as the Pod(s) that the ReplicaSet manages.
    // Standard object's metadata.
    // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
    // +optional
    metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`

    // Spec defines the specification of the desired behavior of the ReplicaSet.
    // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    // +optional
    Spec ReplicaSetSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`

    // Status is the most recently observed status of the ReplicaSet.
    // This data may be out of date by some window of time.
    // Populated by the system.
    // Read-only.
    // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
    // +optional
    Status ReplicaSetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
}

ReplicaSetSpec

// ReplicaSetSpec is the specification of a ReplicaSet.
type ReplicaSetSpec struct {
    // Replicas is the number of desired replicas.
    // This is a pointer to distinguish between explicit zero and unspecified.
    // Defaults to 1.
    // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller
    // +optional
    Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"`

    // Minimum number of seconds for which a newly created pod should be ready
    // without any of its container crashing, for it to be considered available.
    // Defaults to 0 (pod will be considered available as soon as it is ready)
    // +optional
    MinReadySeconds int32 `json:"minReadySeconds,omitempty" protobuf:"varint,4,opt,name=minReadySeconds"`

    // Selector is a label query over pods that should match the replica count.
    // Label keys and values that must match in order to be controlled by this replica set.
    // It must match the pod template's labels.
    // More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
    Selector *metav1.LabelSelector `json:"selector" protobuf:"bytes,2,opt,name=selector"`

    // Template is the object that describes the pod that will be created if
    // insufficient replicas are detected.
    // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
    // +optional
    Template v1.PodTemplateSpec `json:"template,omitempty" protobuf:"bytes,3,opt,name=template"`
}

metav1.LabelSelector

TODO;

v1.PodTemplateSpec

参考 Pods 资源。

ReplicaSetStatus

// ReplicaSetStatus represents the current status of a ReplicaSet.
type ReplicaSetStatus struct {
    // Replicas is the most recently oberved number of replicas.
    // More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/#what-is-a-replicationcontroller
    Replicas int32 `json:"replicas" protobuf:"varint,1,opt,name=replicas"`

    // The number of pods that have labels matching the labels of the pod template of the replicaset.
    // +optional
    FullyLabeledReplicas int32 `json:"fullyLabeledReplicas,omitempty" protobuf:"varint,2,opt,name=fullyLabeledReplicas"`

    // The number of ready replicas for this replica set.
    // +optional
    ReadyReplicas int32 `json:"readyReplicas,omitempty" protobuf:"varint,4,opt,name=readyReplicas"`

    // The number of available replicas (ready for at least minReadySeconds) for this replica set.
    // +optional
    AvailableReplicas int32 `json:"availableReplicas,omitempty" protobuf:"varint,5,opt,name=availableReplicas"`

    // ObservedGeneration reflects the generation of the most recently observed ReplicaSet.
    // +optional
    ObservedGeneration int64 `json:"observedGeneration,omitempty" protobuf:"varint,3,opt,name=observedGeneration"`

    // Represents the latest available observations of a replica set's current state.
    // +optional
    // +patchMergeKey=type
    // +patchStrategy=merge
    Conditions []ReplicaSetCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,6,rep,name=conditions"`
}

ReplicaSetCondition

type ReplicaSetConditionType string

// These are valid conditions of a replica set.
const (
    // ReplicaSetReplicaFailure is added in a replica set when one of its pods fails to be created
    // due to insufficient quota, limit ranges, pod security policy, node selectors, etc. or deleted
    // due to kubelet being down or finalizers are failing.
    ReplicaSetReplicaFailure ReplicaSetConditionType = "ReplicaFailure"
)

// ReplicaSetCondition describes the state of a replica set at a certain point.
type ReplicaSetCondition struct {
    // Type of replica set condition.
    Type ReplicaSetConditionType `json:"type" protobuf:"bytes,1,opt,name=type,casttype=ReplicaSetConditionType"`
    // Status of the condition, one of True, False, Unknown.
    Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,opt,name=status,casttype=k8s.io/api/core/v1.ConditionStatus"`
    // The last time the condition transitioned from one status to another.
    // +optional
    LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,3,opt,name=lastTransitionTime"`
    // The reason for the condition's last transition.
    // +optional
    Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"`
    // A human readable message indicating details about the transition.
    // +optional
    Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"`
}

v1.ConditionStatus

参考 Pods 资源。