member

package
v1.1.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 2, 2021 License: Apache-2.0 Imports: 50 Imported by: 2

Documentation

Index

Constants

View Source
const (
	// LastAppliedConfigAnnotation is annotation key of last applied configuration
	LastAppliedConfigAnnotation = "pingcap.com/last-applied-configuration"
	// ImagePullBackOff is the pod state of image pull failed
	ImagePullBackOff = "ImagePullBackOff"
	// ErrImagePull is the pod state of image pull failed
	ErrImagePull = "ErrImagePull"
)
View Source
const (
	// EvictLeaderBeginTime is the key of evict Leader begin time
	EvictLeaderBeginTime = "evictLeaderBeginTime"
)
View Source
const (
	FailedSetStoreLabels = "FailedSetStoreLabels"
)

TODO: move this to a centralized place Since the "Unhealthy" is a very universal event reason string, which could apply to all the TiDB/DM cluster components, we should make a global event module, and put event related constants there.

View Source
const (
	PdTlsCertPath = "/var/lib/pd-tls"
)

Variables

This section is empty.

Functions

func AddConfigMapDigestSuffix added in v1.1.0

func AddConfigMapDigestSuffix(cm *corev1.ConfigMap) error

func CombineAnnotations added in v1.0.0

func CombineAnnotations(a, b map[string]string) map[string]string

CombineAnnotations merges two annotations maps

func FindConfigMapVolume added in v1.1.0

func FindConfigMapVolume(podSpec *corev1.PodSpec, pred func(string) bool) string

FindConfigMapVolume returns the configmap which's name matches the predicate in a PodSpec, empty indicates not found

func GetLastAppliedConfig

func GetLastAppliedConfig(set *apps.StatefulSet) (*apps.StatefulSetSpec, *corev1.PodSpec, error)

GetLastAppliedConfig get last applied config info from Statefulset's annotation and the podTemplate's annotation

func GetPVCSelectorForPod added in v1.1.13

func GetPVCSelectorForPod(controller runtime.Object, memberType v1alpha1.MemberType, ordinal int32) (labels.Selector, error)

GetPVCSelectorForPod compose a PVC selector from a tc/dm-cluster member pod at ordinal position

func MapContainers added in v1.1.0

func MapContainers(podSpec *corev1.PodSpec) map[string]corev1.Container

MapContainers index containers of Pod by container name in favor of looking up

func MarshalTOML added in v1.1.0

func MarshalTOML(v interface{}) ([]byte, error)

MarshalTOML is a template function that try to marshal a go value to toml

func MemberPodName added in v1.1.0

func MemberPodName(tcName string, ordinal int32, memberType v1alpha1.MemberType) string

func NeedForceUpgrade added in v1.1.0

func NeedForceUpgrade(tc *v1alpha1.TidbCluster) bool

NeedForceUpgrade check if force upgrade is necessary

func NewPDMemberManager

func NewPDMemberManager(dependencies *controller.Dependencies, pdScaler Scaler, pdUpgrader Upgrader, pdFailover Failover) manager.Manager

NewPDMemberManager returns a *pdMemberManager

func NewPumpMemberManager added in v1.1.0

func NewPumpMemberManager(deps *controller.Dependencies) manager.Manager

NewPumpMemberManager returns a controller to reconcile pump clusters

func NewTiCDCMemberManager added in v1.1.0

func NewTiCDCMemberManager(deps *controller.Dependencies, ticdcUpgrader Upgrader) manager.Manager

NewTiCDCMemberManager returns a *ticdcMemberManager

func NewTiDBMemberManager

func NewTiDBMemberManager(deps *controller.Dependencies, scaler Scaler, tidbUpgrader Upgrader, tidbFailover Failover) manager.Manager

NewTiDBMemberManager returns a *tidbMemberManager

func NewTiDBScaler added in v1.1.13

func NewTiDBScaler(deps *controller.Dependencies) *tidbScaler

NewTiDBScaler returns a TiDB Scaler.

func NewTiFlashMemberManager added in v1.1.0

func NewTiFlashMemberManager(deps *controller.Dependencies, tiflashFailover Failover, tiflashScaler Scaler, tiflashUpgrader Upgrader) manager.Manager

NewTiFlashMemberManager returns a *tiflashMemberManager

func NewTiKVMemberManager

func NewTiKVMemberManager(deps *controller.Dependencies, failover Failover, scaler Scaler, upgrader Upgrader) manager.Manager

NewTiKVMemberManager returns a *tikvMemberManager

func PdPodName added in v1.1.0

func PdPodName(tcName string, ordinal int32) string

func RenderPDStartScript added in v1.1.0

func RenderPDStartScript(model *PDStartScriptModel) (string, error)

func RenderPumpStartScript added in v1.1.0

func RenderPumpStartScript(model *PumpStartScriptModel) (string, error)

func RenderTiDBInitInitStartScript added in v1.1.0

func RenderTiDBInitInitStartScript(model *TiDBInitInitStartScriptModel) (string, error)

func RenderTiDBInitStartScript added in v1.1.0

func RenderTiDBInitStartScript(model *TiDBInitStartScriptModel) (string, error)

func RenderTiDBStartScript added in v1.1.0

func RenderTiDBStartScript(model *TidbStartScriptModel) (string, error)

func RenderTiKVStartScript added in v1.1.0

func RenderTiKVStartScript(model *TiKVStartScriptModel) (string, error)

func SetStatefulSetLastAppliedConfigAnnotation added in v1.1.0

func SetStatefulSetLastAppliedConfigAnnotation(set *apps.StatefulSet) error

SetStatefulSetLastAppliedConfigAnnotation set last applied config to Statefulset's annotation

func Sha256Sum added in v1.1.0

func Sha256Sum(v interface{}) (string, error)

func TiFlashPodName added in v1.1.11

func TiFlashPodName(tcName string, ordinal int32) string

func TikvPodName added in v1.1.0

func TikvPodName(tcName string, ordinal int32) string

func UnmarshalTOML added in v1.1.0

func UnmarshalTOML(b []byte, obj interface{}) error

Types

type Failover added in v0.2.0

type Failover interface {
	Failover(*v1alpha1.TidbCluster) error
	Recover(*v1alpha1.TidbCluster)
	RemoveUndesiredFailures(*v1alpha1.TidbCluster)
}

Failover implements the logic for pd/tikv/tidb's failover and recovery.

func NewFakePDFailover added in v0.2.0

func NewFakePDFailover() Failover

NewFakePDFailover returns a fake Failover

func NewFakeTiDBFailover added in v0.2.0

func NewFakeTiDBFailover() Failover

NewFakeTiDBFailover returns a fake Failover

func NewFakeTiFlashFailover added in v1.1.0

func NewFakeTiFlashFailover() Failover

NewFakeTiFlashFailover returns a fake Failover

func NewFakeTiKVFailover added in v0.2.0

func NewFakeTiKVFailover() Failover

NewFakeTiKVFailover returns a fake Failover

func NewPDFailover added in v0.2.0

func NewPDFailover(deps *controller.Dependencies) Failover

NewPDFailover returns a pd Failover

func NewTiDBFailover added in v0.2.0

func NewTiDBFailover(deps *controller.Dependencies) Failover

NewTiDBFailover returns a tidbFailover instance

func NewTiFlashFailover added in v1.1.0

func NewTiFlashFailover(deps *controller.Dependencies) Failover

NewTiFlashFailover returns a tiflash Failover

func NewTiKVFailover added in v0.2.0

func NewTiKVFailover(deps *controller.Dependencies) Failover

NewTiKVFailover returns a tikv Failover

type FakeDiscoveryManager added in v1.1.0

type FakeDiscoveryManager struct {
	// contains filtered or unexported fields
}

func NewFakeDiscoveryManger added in v1.1.0

func NewFakeDiscoveryManger() *FakeDiscoveryManager

func (*FakeDiscoveryManager) Reconcile added in v1.1.0

func (*FakeDiscoveryManager) SetReconcileError added in v1.1.0

func (m *FakeDiscoveryManager) SetReconcileError(err error)

type FakeOrphanPodsCleaner added in v1.1.0

type FakeOrphanPodsCleaner struct {
	// contains filtered or unexported fields
}

func NewFakeOrphanPodsCleaner added in v1.0.0

func NewFakeOrphanPodsCleaner() *FakeOrphanPodsCleaner

NewFakeOrphanPodsCleaner returns a fake orphan pods cleaner

func (*FakeOrphanPodsCleaner) Clean added in v1.1.0

func (*FakeOrphanPodsCleaner) SetnOrphanPodCleanerError added in v1.1.0

func (c *FakeOrphanPodsCleaner) SetnOrphanPodCleanerError(err error)

type FakePDMemberManager added in v0.4.0

type FakePDMemberManager struct {
	// contains filtered or unexported fields
}

TODO: seems not used

func NewFakePDMemberManager added in v0.4.0

func NewFakePDMemberManager() *FakePDMemberManager

func (*FakePDMemberManager) SetSyncError added in v0.4.0

func (m *FakePDMemberManager) SetSyncError(err error)

func (*FakePDMemberManager) Sync added in v0.4.0

type FakePVCCleaner added in v1.1.0

type FakePVCCleaner struct {
	// contains filtered or unexported fields
}

func NewFakePVCCleaner added in v1.0.1

func NewFakePVCCleaner() *FakePVCCleaner

NewFakePVCCleaner returns a fake PVC cleaner

func (*FakePVCCleaner) Clean added in v1.1.0

func (c *FakePVCCleaner) Clean(_ *v1alpha1.TidbCluster) (map[string]string, error)

func (*FakePVCCleaner) SetPVCCleanerError added in v1.1.0

func (c *FakePVCCleaner) SetPVCCleanerError(err error)

type FakePumpMemberManager added in v1.1.0

type FakePumpMemberManager struct {
	// contains filtered or unexported fields
}

func NewFakePumpMemberManager added in v1.1.0

func NewFakePumpMemberManager() *FakePumpMemberManager

func (*FakePumpMemberManager) SetSyncError added in v1.1.0

func (m *FakePumpMemberManager) SetSyncError(err error)

func (*FakePumpMemberManager) Sync added in v1.1.0

type FakeTiCDCMemberManager added in v1.1.0

type FakeTiCDCMemberManager struct {
	// contains filtered or unexported fields
}

func NewFakeTiCDCMemberManager added in v1.1.0

func NewFakeTiCDCMemberManager() *FakeTiCDCMemberManager

func (*FakeTiCDCMemberManager) SetSyncError added in v1.1.0

func (m *FakeTiCDCMemberManager) SetSyncError(err error)

func (*FakeTiCDCMemberManager) Sync added in v1.1.0

type FakeTiDBInitManager added in v1.1.0

type FakeTiDBInitManager struct {
	// contains filtered or unexported fields
}

FakeTiDBInitManager FakeTiDBInitManager

func NewFakeTiDBInitManager added in v1.1.0

func NewFakeTiDBInitManager() *FakeTiDBInitManager

NewFakeTiDBInitManager NewFakeTiDBInitManager

func (*FakeTiDBInitManager) SetSyncError added in v1.1.0

func (ftm *FakeTiDBInitManager) SetSyncError(err error)

SetSyncError SetSyncError

func (*FakeTiDBInitManager) Sync added in v1.1.0

Sync Sync

type FakeTiDBMemberManager added in v0.4.0

type FakeTiDBMemberManager struct {
	// contains filtered or unexported fields
}

func NewFakeTiDBMemberManager added in v0.4.0

func NewFakeTiDBMemberManager() *FakeTiDBMemberManager

func (*FakeTiDBMemberManager) SetSyncError added in v0.4.0

func (m *FakeTiDBMemberManager) SetSyncError(err error)

func (*FakeTiDBMemberManager) Sync added in v0.4.0

type FakeTiFlashMemberManager added in v1.1.0

type FakeTiFlashMemberManager struct {
	// contains filtered or unexported fields
}

func NewFakeTiFlashMemberManager added in v1.1.0

func NewFakeTiFlashMemberManager() *FakeTiFlashMemberManager

func (*FakeTiFlashMemberManager) SetSyncError added in v1.1.0

func (m *FakeTiFlashMemberManager) SetSyncError(err error)

func (*FakeTiFlashMemberManager) Sync added in v1.1.0

type FakeTiKVMemberManager added in v0.4.0

type FakeTiKVMemberManager struct {
	// contains filtered or unexported fields
}

func NewFakeTiKVMemberManager added in v0.4.0

func NewFakeTiKVMemberManager() *FakeTiKVMemberManager

func (*FakeTiKVMemberManager) SetSyncError added in v0.4.0

func (m *FakeTiKVMemberManager) SetSyncError(err error)

func (*FakeTiKVMemberManager) Sync added in v0.4.0

type FakeTidbClusterStatusManager added in v1.1.0

type FakeTidbClusterStatusManager struct {
}

func NewFakeTidbClusterStatusManager added in v1.1.0

func NewFakeTidbClusterStatusManager() *FakeTidbClusterStatusManager

func (*FakeTidbClusterStatusManager) Sync added in v1.1.0

type InitManager added in v1.1.0

type InitManager interface {
	// Sync	implements the logic for syncing TidbInitializer.
	Sync(*v1alpha1.TidbInitializer) error
}

InitManager implements the logic for syncing TidbInitializer.

func NewTiDBInitManager added in v1.1.0

func NewTiDBInitManager(deps *controller.Dependencies) InitManager

NewTiDBInitManager return tidbInitManager

type OrphanPodsCleaner added in v1.0.0

type OrphanPodsCleaner interface {
	Clean(*v1alpha1.TidbCluster) (map[string]string, error)
}

OrphanPodsCleaner implements the logic for cleaning the orphan pods(has no pvc)

In scaling out and failover, we will try to delete the old PVC to prevent it from being used by the new pod. However, the PVC might not be deleted immediately in the apiserver because of finalizers (e.g. kubernetes.io/pvc-protection) and the statefulset controller may not have received PVC delete event when it tries to create the new replica and the new pod will be pending forever because no PVC to use. We need to clean these orphan pods and let the statefulset controller to create PVC(s) for them.

https://github.com/kubernetes/kubernetes/blob/84fe3db5cf58bf0fc8ff792b885465ceaf70a435/pkg/controller/statefulset/stateful_pod_control.go#L175-L199

func NewOrphanPodsCleaner added in v1.0.0

func NewOrphanPodsCleaner(deps *controller.Dependencies) OrphanPodsCleaner

NewOrphanPodsCleaner returns a OrphanPodsCleaner

type PDStartScriptModel added in v1.1.0

type PDStartScriptModel struct {
	Scheme  string
	DataDir string
}

type PVCCleanerInterface added in v1.0.1

type PVCCleanerInterface interface {
	Clean(*v1alpha1.TidbCluster) (map[string]string, error)
}

PVCCleaner implements the logic for cleaning the pvc related resource

func NewRealPVCCleaner added in v1.0.1

func NewRealPVCCleaner(deps *controller.Dependencies) PVCCleanerInterface

NewRealPVCCleaner returns a realPVCCleaner

type PVCResizerInterface added in v1.1.4

type PVCResizerInterface interface {
	Resize(*v1alpha1.TidbCluster) error
}

PVCResizerInterface represents the interface of PVC Resizer. It patches the PVCs owned by tidb cluster according to the latest storage request specified by the user. See https://github.com/pingcap/tidb-operator/issues/3004 for more details.

Implementation:

for every unmatched PVC (desiredCapacity != actualCapacity)

if storageClass does not support VolumeExpansion, skip and continue
if not patched, patch

We patch all PVCs at the same time. For many cloud storage plugins (e.g. AWS-EBS, GCE-PD), they support online file system expansion in latest Kubernetes (1.15+).

Limitations:

  • Note that the current statfulset implementation does not allow `volumeClaimTemplates` to be changed, so new PVCs created by statefulset controller will use the old storage request.
  • This is best effort, before statefulset volume resize feature (e.g. https://github.com/kubernetes/enhancements/pull/1848) to be implemented.
  • If the feature `ExpandInUsePersistentVolumes` is not enabled or the volume plugin does not support, the pod referencing the volume must be deleted and recreated after the `FileSystemResizePending` condition becomes true.
  • Shrinking volumes is not supported.

func NewFakePVCResizer added in v1.1.4

func NewFakePVCResizer() PVCResizerInterface

func NewPVCResizer added in v1.1.4

func NewPVCResizer(deps *controller.Dependencies) PVCResizerInterface

type PumpStartScriptModel added in v1.1.0

type PumpStartScriptModel struct {
	Scheme      string
	ClusterName string
	LogLevel    string
}

type Scaler

type Scaler interface {
	// Scale scales the cluster. It does nothing if scaling is not needed.
	Scale(tc *v1alpha1.TidbCluster, actual *apps.StatefulSet, desired *apps.StatefulSet) error
	// ScaleOut scales out the cluster
	ScaleOut(tc *v1alpha1.TidbCluster, actual *apps.StatefulSet, desired *apps.StatefulSet) error
	// ScaleIn scales in the cluster
	ScaleIn(tc *v1alpha1.TidbCluster, actual *apps.StatefulSet, desired *apps.StatefulSet) error
	// SyncAutoScalerAnn would sync Ann created by AutoScaler
	SyncAutoScalerAnn(tc *v1alpha1.TidbCluster, actual *apps.StatefulSet) error
}

Scaler implements the logic for scaling out or scaling in the cluster.

func NewFakePDScaler

func NewFakePDScaler() Scaler

NewFakePDScaler returns a fake Scaler

func NewFakeTiFlashScaler added in v1.1.0

func NewFakeTiFlashScaler() Scaler

NewFakeTiFlashScaler returns a fake tiflash Scaler

func NewFakeTiKVScaler

func NewFakeTiKVScaler() Scaler

NewFakeTiKVScaler returns a fake tikv Scaler

func NewPDScaler

func NewPDScaler(deps *controller.Dependencies) Scaler

NewPDScaler returns a Scaler

func NewTiFlashScaler added in v1.1.0

func NewTiFlashScaler(deps *controller.Dependencies) Scaler

NewTiFlashScaler returns a tiflash Scaler

func NewTiKVScaler

func NewTiKVScaler(deps *controller.Dependencies) Scaler

NewTiKVScaler returns a tikv Scaler

type SvcConfig

type SvcConfig struct {
	Name       string
	Port       int32
	SvcLabel   func(label.Label) label.Label
	MemberName func(clusterName string) string
	Headless   bool
}

SvcConfig corresponds to a K8s service

type TiDBInitInitStartScriptModel added in v1.1.0

type TiDBInitInitStartScriptModel struct {
	ClusterName string
}

type TiDBInitStartScriptModel added in v1.1.0

type TiDBInitStartScriptModel struct {
	ClusterName string
	PermitHost  string
	PasswordSet bool
	InitSQL     bool
	TLS         bool
	CAPath      string
	CertPath    string
	KeyPath     string
}

type TiKVStartScriptModel added in v1.1.0

type TiKVStartScriptModel struct {
	EnableAdvertiseStatusAddr bool
	AdvertiseStatusAddr       string
	DataDir                   string
	PDAddress                 string
}

type TidbClusterStatusManager added in v1.1.0

type TidbClusterStatusManager struct {
	// contains filtered or unexported fields
}

func NewTidbClusterStatusManager added in v1.1.0

func NewTidbClusterStatusManager(deps *controller.Dependencies) *TidbClusterStatusManager

func (*TidbClusterStatusManager) Sync added in v1.1.0

type TidbDiscoveryManager added in v1.1.0

type TidbDiscoveryManager interface {
	Reconcile(tc *v1alpha1.TidbCluster) error
}

func NewTidbDiscoveryManager added in v1.1.0

func NewTidbDiscoveryManager(deps *controller.Dependencies) TidbDiscoveryManager

type TidbStartScriptModel added in v1.1.0

type TidbStartScriptModel struct {
	EnablePlugin    bool
	PluginDirectory string
	PluginList      string
	Path            string
}

type Upgrader added in v0.2.0

type Upgrader interface {
	// Upgrade upgrade the cluster
	Upgrade(*v1alpha1.TidbCluster, *apps.StatefulSet, *apps.StatefulSet) error
}

Upgrader implements the logic for upgrading the tidb cluster.

func NewFakePDUpgrader added in v0.2.0

func NewFakePDUpgrader() Upgrader

NewFakePDUpgrader returns a fakePDUpgrader

func NewFakeTiDBUpgrader added in v0.2.0

func NewFakeTiDBUpgrader() Upgrader

NewFakeTiDBUpgrader returns a fake tidb upgrader

func NewFakeTiFlashUpgrader added in v1.1.0

func NewFakeTiFlashUpgrader() Upgrader

NewFakeTiFlashUpgrader returns a fake tiflash upgrader

func NewFakeTiKVUpgrader added in v0.2.0

func NewFakeTiKVUpgrader() Upgrader

NewFakeTiKVUpgrader returns a fake tikv upgrader

func NewPDUpgrader added in v0.2.0

func NewPDUpgrader(deps *controller.Dependencies) Upgrader

NewPDUpgrader returns a pdUpgrader

func NewTiCDCUpgrader added in v1.1.12

func NewTiCDCUpgrader(deps *controller.Dependencies) Upgrader

NewTiCDCUpgrader returns a ticdc Upgrader

func NewTiDBUpgrader added in v0.2.0

func NewTiDBUpgrader(deps *controller.Dependencies) Upgrader

NewTiDBUpgrader returns a tidb Upgrader

func NewTiFlashUpgrader added in v1.1.0

func NewTiFlashUpgrader(deps *controller.Dependencies) Upgrader

NewTiFlashUpgrader returns a tiflash Upgrader

func NewTiKVUpgrader added in v0.2.0

func NewTiKVUpgrader(deps *controller.Dependencies) Upgrader

NewTiKVUpgrader returns a tikv Upgrader

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL