runtime

package
v0.8.6 Latest Latest
Warning

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

Go to latest
Published: Jul 12, 2022 License: Apache-2.0 Imports: 35 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Cluster                = "Cluster"
	InitConfiguration      = "InitConfiguration"
	JoinConfiguration      = "JoinConfiguration"
	ClusterConfiguration   = "ClusterConfiguration"
	KubeProxyConfiguration = "KubeProxyConfiguration"
	KubeletConfiguration   = "KubeletConfiguration"
)
View Source
const (
	RemoteCmdCopyStatic            = "mkdir -p %s && cp -f %s %s"
	RemoteApplyYaml                = `echo '%s' | kubectl apply -f -`
	RemoteCmdGetNetworkInterface   = "ls /sys/class/net"
	RemoteCmdExistNetworkInterface = "ip addr show %s | egrep \"%s\" || true"
	WriteKubeadmConfigCmd          = `cd %s && echo '%s' > etc/kubeadm.yml`
	DefaultVIP                     = "10.103.97.2"
	DefaultAPIserverDomain         = "apiserver.cluster.local"
	DefaultRegistryPort            = 5000
	DockerCertDir                  = "/etc/docker/certs.d"
)
View Source
const (
	V1991 = "v1.19.1"
	V1992 = "v1.19.2"
	V1150 = "v1.15.0"
	V1200 = "v1.20.0"
	V1230 = "v1.23.0"
)
View Source
const (
	RemoteAddEtcHosts           = "cat /etc/hosts |grep '%s' || echo '%s' >> /etc/hosts"
	RemoteUpdateEtcHosts        = `sed "s/%s/%s/g" < /etc/hosts > hosts && cp -f hosts /etc/hosts`
	RemoteCopyKubeConfig        = `rm -rf .kube/config && mkdir -p /root/.kube && cp /etc/kubernetes/admin.conf /root/.kube/config`
	RemoteNonRootCopyKubeConfig = `` /* 155-byte string literal not displayed */
	RemoteReplaceKubeConfig     = `` /* 128-byte string literal not displayed */
	RemoteJoinMasterConfig      = `echo "%s" > %s/etc/kubeadm.yml`
	InitMaster115Lower          = `kubeadm init --config=%s/etc/kubeadm.yml --experimental-upload-certs`
	JoinMaster115Lower          = "kubeadm join %s:6443 --token %s --discovery-token-ca-cert-hash %s --experimental-control-plane --certificate-key %s"
	JoinNode115Lower            = "kubeadm join %s:6443 --token %s --discovery-token-ca-cert-hash %s"
	InitMaser115Upper           = `kubeadm init --config=%s/etc/kubeadm.yml --upload-certs`
	JoinMaster115Upper          = "kubeadm join --config=%s/etc/kubeadm.yml"
	JoinNode115Upper            = "kubeadm join --config=%s/etc/kubeadm.yml"
	RemoveKubeConfig            = "rm -rf /usr/bin/kube* && rm -rf ~/.kube/"
	RemoteCleanMasterOrNode     = `` /* 413-byte string literal not displayed */

	RemoteRemoveAPIServerEtcHost = "sed -i \"/%s/d\" /etc/hosts"
	RemoteRemoveRegistryCerts    = "rm -rf " + DockerCertDir + "/%s*"
	RemoveLvscareStaticPod       = "rm -rf  /etc/kubernetes/manifests/kube-sealyun-lvscare*"
	CreateLvscareStaticPod       = "mkdir -p /etc/kubernetes/manifests && echo '%s' > /etc/kubernetes/manifests/kube-sealyun-lvscare.yaml"
	KubeDeleteNode               = "kubectl delete node %s"
	// TODO check kubernetes certs
	RemoteCheckCerts = "kubeadm alpha certs check-expiration"
)
View Source
const (
	AdminConf      = "admin.conf"
	ControllerConf = "controller-manager.conf"
	SchedulerConf  = "scheduler.conf"
	KubeletConf    = "kubelet.conf"

	// kube file
	KUBECONTROLLERCONFIGFILE = "/etc/kubernetes/controller-manager.conf"
	KUBESCHEDULERCONFIGFILE  = "/etc/kubernetes/scheduler.conf"

	// CriSocket
	DefaultDockerCRISocket     = "/var/run/dockershim.sock"
	DefaultContainerdCRISocket = "/run/containerd/containerd.sock"
	DefaultSystemdCgroupDriver = "systemd"
	DefaultCgroupDriver        = "cgroupfs"

	// kubeadm api version
	KubeadmV1beta1 = "kubeadm.k8s.io/v1beta1"
	KubeadmV1beta2 = "kubeadm.k8s.io/v1beta2"
	KubeadmV1beta3 = "kubeadm.k8s.io/v1beta3"
)
View Source
const (
	Master0              = "Master0"
	Master               = "Master"
	Masters              = "Masters"
	TokenDiscovery       = "TokenDiscovery"
	VIP                  = "VIP"
	Version              = "Version"
	APIServer            = "ApiServer"
	PodCIDR              = "PodCIDR"
	SvcCIDR              = "SvcCIDR"
	Repo                 = "Repo"
	CertSANS             = "CertSANS"
	EtcdServers          = "etcd-servers"
	CriSocket            = "CriSocket"
	CriCGroupDriver      = "CriCGroupDriver"
	KubeadmAPI           = "KubeadmAPI"
	TokenDiscoveryCAHash = "TokenDiscoveryCAHash"
)
View Source
const (
	RemoteAddIPVS                   = "seautil ipvs --vs %s:6443 %s --health-path /healthz --health-schem https --run-once"
	RemoteStaticPodMkdir            = "mkdir -p /etc/kubernetes/manifests"
	RemoteJoinConfig                = `echo "%s" > %s/etc/kubeadm.yml`
	LvscareDefaultStaticPodFileName = "/etc/kubernetes/manifests/kube-lvscare.yaml"
	RemoteAddIPVSEtcHosts           = "echo %s %s >> /etc/hosts"
	RemoteCheckRoute                = "seautil route check --host %s"
	RemoteAddRoute                  = "seautil route add --host %s --gateway %s"
	RemoteDelRoute                  = "if command -v seautil > /dev/null 2>&1; then seautil route del --host %s --gateway %s; fi"
	LvscareStaticPodCmd             = `echo "%s" > %s`
)
View Source
const (
	RegistryName                = "sealer-registry"
	RegistryBindDest            = "/var/lib/registry"
	RegistryBindConfig          = "registry_config.yml"
	RegistryCustomConfig        = "registry.yml"
	SeaHub                      = "sea.hub"
	DefaultRegistryHtPasswdFile = "registry_htpasswd"
	DockerLoginCommand          = "nerdctl login -u %s -p %s %s && " + KubeletAuthCommand
	KubeletAuthCommand          = "cp /root/.docker/config.json /var/lib/kubelet"
	DeleteRegistryCommand       = "" /* 154-byte string literal not displayed */
)
View Source
const (
	AuditPolicyYml = "audit-policy.yml"
)
View Source
const (
	DefaultKubeadmConfig = `` /* 4077-byte string literal not displayed */

)

Variables

View Source
var (
	ContainerdShell = `` /* 134-byte string literal not displayed */

	DockerShell = `driver=$(docker info -f "{{.CgroupDriver}}")
	echo "${driver}"`
)
View Source
var ForceDelete bool
View Source
var MasterStaticFiles = []*StaticFile{
	{
		DestinationDir: "/etc/kubernetes",
		Name:           AuditPolicyYml,
	},
}

MasterStaticFiles Put static files here, can be moved to all master nodes before kubeadm execution

Functions

func GenerateRegistryCert

func GenerateRegistryCert(registryCertPath string, BaseName string) error

func GetClusterImagePlatform

func GetClusterImagePlatform(rootfs string) (cp ocispecs.Platform)

func GetKubectlAndKubeconfig

func GetKubectlAndKubeconfig(ssh ssh.Interface, host net.IP, rootfs string) error

func IsInContainer

func IsInContainer() bool

func NewKubeadmConfig

func NewKubeadmConfig() interface{}

func RemoteCerts

func RemoteCerts(altNames []string, hostIP net.IP, hostName, serviceCIRD, DNSDomain string) string

func VersionCompare

func VersionCompare(v1, v2 string) bool

VersionCompare :if v1 >= v2 return true, else return false

Types

type ClusterRuntime

type ClusterRuntime string
const (
	K0s ClusterRuntime = "k0s"
	K3s ClusterRuntime = "k3s"
	K8s ClusterRuntime = "k8s"
)

type CommandType

type CommandType string
const InitMaster CommandType = "initMaster"
const JoinMaster CommandType = "joinMaster"
const JoinNode CommandType = "joinNode"

type Config

type Config struct {
	Vlog      int
	VIP       string
	RegConfig *RegistryConfig
	// Clusterfile: the absolute path, we need to read kubeadm config from Clusterfile
	ClusterFileKubeConfig *KubeadmConfig
	APIServerDomain       string
}

type Interface

type Interface interface {
	// Init exec kubeadm init
	Init(cluster *v2.Cluster) error
	Upgrade() error
	Reset() error
	JoinMasters(newMastersIPList []net.IP) error
	JoinNodes(newNodesIPList []net.IP) error
	DeleteMasters(mastersIPList []net.IP) error
	DeleteNodes(nodesIPList []net.IP) error
	GetClusterMetadata() (*Metadata, error)
	UpdateCert(certs []string) error
}

func NewDefaultRuntime

func NewDefaultRuntime(cluster *v2.Cluster, clusterfileKubeConfig *KubeadmConfig) (Interface, error)

NewDefaultRuntime arg "clusterfileKubeConfig" is the Clusterfile path/name, runtime need read kubeadm config from it Mount image is required before new Runtime.

type KubeadmConfig

nolint

func LoadKubeadmConfigs

func LoadKubeadmConfigs(arg string, decode func(arg string, kind string) (interface{}, error)) (*KubeadmConfig, error)

func (*KubeadmConfig) LoadFromClusterfile

func (k *KubeadmConfig) LoadFromClusterfile(kubeadmConfig *KubeadmConfig) error

LoadFromClusterfile :Load KubeadmConfig from Clusterfile. If it has `KubeadmConfig` in Clusterfile, load every field to each configuration. If Kubeadm raw config in Clusterfile, just load it.

func (*KubeadmConfig) Merge

func (k *KubeadmConfig) Merge(kubeadmYamlPath string) error

Merge Using github.com/imdario/mergo to merge KubeadmConfig to the ClusterImage default kubeadm config, overwrite some field. if defaultKubeadmConfig file not exist, use default raw kubeadm config to merge k.KubeConfigSpec empty value

type KubeadmRuntime

type KubeadmRuntime struct {
	*sync.Mutex
	*v2.Cluster
	*KubeadmConfig
	*Config
}

func (*KubeadmRuntime) ApplyRegistry

func (k *KubeadmRuntime) ApplyRegistry() error

ApplyRegistry Only use this for join and init, due to the initiation operations.

func (*KubeadmRuntime) CmdAsyncHosts

func (k *KubeadmRuntime) CmdAsyncHosts(hosts []net.IP, cmd string) error

func (*KubeadmRuntime) CmdToString

func (k *KubeadmRuntime) CmdToString(host net.IP, cmd, split string) (string, error)

CmdToString is in host exec cmd and replace to spilt str

func (*KubeadmRuntime) Command

func (k *KubeadmRuntime) Command(version string, name CommandType) (cmd string)

func (*KubeadmRuntime) ConfigKubeadmOnMaster0

func (k *KubeadmRuntime) ConfigKubeadmOnMaster0() error

func (*KubeadmRuntime) CopyStaticFiles

func (k *KubeadmRuntime) CopyStaticFiles(nodes []net.IP) error

func (*KubeadmRuntime) CopyStaticFilesTomasters

func (k *KubeadmRuntime) CopyStaticFilesTomasters() error

func (*KubeadmRuntime) CreateKubeConfig

func (k *KubeadmRuntime) CreateKubeConfig() error

func (*KubeadmRuntime) DeleteMasters

func (k *KubeadmRuntime) DeleteMasters(mastersIPList []net.IP) error

func (*KubeadmRuntime) DeleteNodes

func (k *KubeadmRuntime) DeleteNodes(nodesIPList []net.IP) error

func (*KubeadmRuntime) DeleteRegistry

func (k *KubeadmRuntime) DeleteRegistry() error

func (*KubeadmRuntime) GenerateCert

func (k *KubeadmRuntime) GenerateCert() error

func (*KubeadmRuntime) GenerateRegistryCert

func (k *KubeadmRuntime) GenerateRegistryCert() error

func (*KubeadmRuntime) GerLoginCommand

func (k *KubeadmRuntime) GerLoginCommand() string

func (*KubeadmRuntime) GetClusterMetadata

func (k *KubeadmRuntime) GetClusterMetadata() (*Metadata, error)

func (*KubeadmRuntime) GetJoinTokenHashAndKey

func (k *KubeadmRuntime) GetJoinTokenHashAndKey() error

func (*KubeadmRuntime) GetKubectlAndKubeconfig

func (k *KubeadmRuntime) GetKubectlAndKubeconfig() error

func (*KubeadmRuntime) Init

func (k *KubeadmRuntime) Init(cluster *v2.Cluster) error

func (*KubeadmRuntime) InitMaster0

func (k *KubeadmRuntime) InitMaster0() error

InitMaster0 is

func (*KubeadmRuntime) JoinMasterCommands

func (k *KubeadmRuntime) JoinMasterCommands(master net.IP, joinCmd, hostname string) []string

func (*KubeadmRuntime) JoinMasters

func (k *KubeadmRuntime) JoinMasters(newMastersIPList []net.IP) error

func (*KubeadmRuntime) JoinNodes

func (k *KubeadmRuntime) JoinNodes(newNodesIPList []net.IP) error

func (*KubeadmRuntime) MergeKubeadmConfig

func (k *KubeadmRuntime) MergeKubeadmConfig() error

func (*KubeadmRuntime) ReplaceKubeConfigV1991V1992

func (k *KubeadmRuntime) ReplaceKubeConfigV1991V1992(masters []net.IP) bool

func (*KubeadmRuntime) Reset

func (k *KubeadmRuntime) Reset() error

func (*KubeadmRuntime) SendJoinMasterKubeConfigs

func (k *KubeadmRuntime) SendJoinMasterKubeConfigs(masters []net.IP, files ...string) error

func (*KubeadmRuntime) SendRegistryCert

func (k *KubeadmRuntime) SendRegistryCert(host []net.IP) error

func (*KubeadmRuntime) UpdateCert

func (k *KubeadmRuntime) UpdateCert(certs []string) error

func (*KubeadmRuntime) Upgrade

func (k *KubeadmRuntime) Upgrade() error

func (*KubeadmRuntime) WaitSSHReady

func (k *KubeadmRuntime) WaitSSHReady(tryTimes int, hosts ...net.IP) error

type Metadata

type Metadata struct {
	Version string `json:"version"`
	Arch    string `json:"arch"`
	Variant string `json:"variant"`
	//KubeVersion is a SemVer constraint specifying the version of Kubernetes required.
	KubeVersion string `json:"kubeVersion"`
	NydusFlag   bool   `json:"NydusFlag"`
	//ClusterRuntime is a flag to distinguish the runtime for k0s、k8s、k3s
	ClusterRuntime ClusterRuntime `json:"ClusterRuntime"`
}

func LoadMetadata

func LoadMetadata(rootfs string) (*Metadata, error)

LoadMetadata :read metadata via ClusterImage name.

type RegistryConfig

type RegistryConfig struct {
	IP       net.IP `yaml:"ip,omitempty"`
	Domain   string `yaml:"domain,omitempty"`
	Port     string `yaml:"port,omitempty"`
	Username string `json:"username,omitempty"`
	Password string `json:"password,omitempty"`
}

func GetRegistryConfig

func GetRegistryConfig(rootfs string, defaultRegistryIP net.IP) *RegistryConfig

func (*RegistryConfig) GenerateHtPasswd

func (r *RegistryConfig) GenerateHtPasswd() (string, error)

func (*RegistryConfig) Repo

func (r *RegistryConfig) Repo() string

type StaticFile

type StaticFile struct {
	DestinationDir string
	Name           string
}

StaticFile :static file should not be template, will never be changed while initialization.

Directories

Path Synopsis
kubeadm_types

Jump to

Keyboard shortcuts

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