【kubeadm】init配置文件

记录kubeadm --config的可配置内容,参考https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2

 

kubeadm --config的配置文件内容

1.1  InitConfiguration

//初始化参数配置
type InitConfiguration struct {
    metav1.TypeMeta `json:",inline"`

    // BootstrapTokens?
    BootstrapTokens []BootstrapToken `json:"bootstrapTokens,omitempty"`

    //可配置节点name、annotation、Taints,cloud-provider等
    NodeRegistration NodeRegistrationOptions `json:"nodeRegistration,omitempty"`

    //配置apiserver的ip、端口(默认6443),另外一个参数ControlPlaneEndpoint用于在HA情况下配置全局的apiserver地址
    LocalAPIEndpoint APIEndpoint `json:"localAPIEndpoint,omitempty"`

    // 配置上传到集群作为secret的ca证书
    CertificateKey string `json:"certificateKey,omitempty"`
}

 

1.2  ClusterConfiguration

//kubeadm集群的配置
type ClusterConfiguration struct {
    metav1.TypeMeta `json:",inline"`
    // etcd集群的配置,可以配置内部与外部的etcd
    Etcd Etcd `json:"etcd,omitempty"`

    // service网段、pod网段、域名
    Networking Networking `json:"networking,omitempty"`

    // k8s版本
    KubernetesVersion string `json:"kubernetesVersion,omitempty"`

    // 在HA情况下,可配置为SLB地址
    ControlPlaneEndpoint string `json:"controlPlaneEndpoint,omitempty"`

    //apiserver的额外启动参数、挂载的卷、SAN(多域名证书)、apiserver超时时间
    APIServer APIServer `json:"apiServer,omitempty"`


    //controller-manager额外启动参数、挂载的卷
    ControllerManager ControlPlaneComponent `json:"controllerManager,omitempty"`

    //schduler额外启动参数、挂载的卷
    Scheduler ControlPlaneComponent `json:"scheduler,omitempty"`

    // DNS配置
    //安装core-dns还是kube-dns、单独配置dns使用的镜像(如果这里没有配置,则使用ClusterConfiguration里配置的镜像)
    DNS DNS `json:"dns,omitempty"`

    //证书存放位置
    CertificatesDir string `json:"certificatesDir,omitempty"`

    // 镜像仓库地址
    ImageRepository string `json:"imageRepository,omitempty"`

    // 是否使用hyperkube作为k8s组件(弃用)
    UseHyperKubeImage bool `json:"useHyperKubeImage,omitempty"`

    // 启用哪些FeatureGates
    FeatureGates map[string]bool `json:"featureGates,omitempty"`

    // 集群名称
    ClusterName string `json:"clusterName,omitempty"`
}

1.3  KubeletConfiguration

type KubeletConfiguration struct {
    metav1.TypeMeta `json:",inline"`

    //启用kubelet,默认true
    EnableServer *bool `json:"enableServer,omitempty"`

    //静态pod目录或文件,默认""
    StaticPodPath string `json:"staticPodPath,omitempty"`

    // 同步运行中的容器与配置的最大周期,默认"1m"
    // +optional
    SyncFrequency metav1.Duration `json:"syncFrequency,omitempty"`

    //读取配置文件周期,默认"20s"
    //减小时间会造成频繁读取配置文件,可能影响性能
    FileCheckFrequency metav1.Duration `json:"fileCheckFrequency,omitempty"`

    // 静态pod http检查周期,默认"20s"
    //减小时间会使轮询StaticPodURL更频繁,默认""
    HTTPCheckFrequency metav1.Duration `json:"httpCheckFrequency,omitempty"`

    // 判断静态pod在运行的地址? 默认""
    StaticPodURL string `json:"staticPodURL,omitempty"`

    //访问podURL时的http header  ,默认nil
    StaticPodURLHeader map[string][]string `json:"staticPodURLHeader,omitempty"`

    // kubelet监听地址,默认"0.0.0.0"
    Address string `json:"address,omitempty"`

    //kubelet监听端口,默认10250
    Port int32 `json:"port,omitempty"`

    //read-only端口?默认0 (disabled)
    ReadOnlyPort int32 `json:"readOnlyPort,omitempty"`

    //用于https认证的X509证书,默认""
    TLSCertFile string `json:"tlsCertFile,omitempty"`

    //私钥,默认""
    TLSPrivateKeyFile string `json:"tlsPrivateKeyFile,omitempty"`

    //TLS支持的加密算法?值来自(https://golang.org/pkg/crypto/tls/#pkg-constants),默认nil
    TLSCipherSuites []string `json:"tlsCipherSuites,omitempty"`

    //支持的TLS最小版本,默认""
    TLSMinVersion string `json:"tlsMinVersion,omitempty"`

    // 启用客户端证书循环? 默认false
    RotateCertificates bool `json:"rotateCertificates,omitempty"`

    // kubelet会用CSR API从apiserver得到证书,需启用RotateKubeletServerCertificate 特性,默认false
    ServerTLSBootstrap bool `json:"serverTLSBootstrap,omitempty"`

    // 请求kubelet时的认证配置,bear token、X509等
    // 默认:
    //   anonymous:
    //     enabled: false
    //   webhook:
    //     enabled: true
    //     cacheTTL: "2m"
    // +optional
    Authentication KubeletAuthentication `json:"authentication"`

    // 指定如何授权对kubelet的请求
    // Defaults:
    //   mode: Webhook
    //   webhook:
    //     cacheAuthorizedTTL: "5m"
    //     cacheUnauthorizedTTL: "30s"
    Authorization KubeletAuthorization `json:"authorization"`

    // 拉取镜像的QPS
    // Default: 5
    RegistryPullQPS *int32 `json:"registryPullQPS,omitempty"`

    // bursty pulls的最大数
    // Default: 10
    RegistryBurst int32 `json:"registryBurst,omitempty"`

    // 每秒最大创建事件数
    // Default: 5
    EventRecordQPS *int32 `json:"eventRecordQPS,omitempty"`

    // 每秒最大创建事件数(burst)
    // Default: 10
    EventBurst int32 `json:"eventBurst,omitempty"`

    //是否支持访问kubelet端点的日志功能,以及exec、attach、logs、forward命令
    // Default: true
    EnableDebuggingHandlers *bool `json:"enableDebuggingHandlers,omitempty"`

    //启用锁争用分析?
    // Default: false
    EnableContentionProfiling bool `json:"enableContentionProfiling,omitempty"`

    //健康检查端口
    // Default: 10248
    HealthzPort *int32 `json:"healthzPort,omitempty"`

    //健康检查地址
    // Default: "127.0.0.1"
    HealthzBindAddress string `json:"healthzBindAddress,omitempty"`

    //kubelet进程的oom-score-adj
    // Default: -999
    OOMScoreAdj *int32 `json:"oomScoreAdj,omitempty"`

    //配置后所有容器都会使用该DNS
    // Default: ""
    ClusterDomain string `json:"clusterDomain,omitempty"`

    //DNS服务器的列表,配置后将代替宿主机的DNS解析
    // Default: nil
    ClusterDNS []string `json:"clusterDNS,omitempty"`

    //流连接的最长时间
    // Default: "4h"
    StreamingConnectionIdleTimeout metav1.Duration `json:"streamingConnectionIdleTimeout,omitempty"`

    //更新node状态的频率
    // Default: "10s"
    NodeStatusUpdateFrequency metav1.Duration `json:"nodeStatusUpdateFrequency,omitempty"`

    //上报node状态到master的频率
    // nodeStatusUpdateFrequency for backward compatibility.
    // Default: "1m"
    NodeStatusReportFrequency metav1.Duration `json:"nodeStatusReportFrequency,omitempty"`

    // kubelet在租约上的持续时间(参考etcd lease接口)
    // Default: 40
    NodeLeaseDurationSeconds int32 `json:"nodeLeaseDurationSeconds,omitempty"`

    //回收没有用的镜像的时间
    // Default: "2m"
    ImageMinimumGCAge metav1.Duration `json:"imageMinimumGCAge,omitempty"`

    //当磁盘使用率达到该值时,会一直进行镜像GC
    // Default: 85
    ImageGCHighThresholdPercent *int32 `json:"imageGCHighThresholdPercent,omitempty"`

    //当磁盘使用率低于该值时,不会进行镜像GC
    // Default: 80
    ImageGCLowThresholdPercent *int32 `json:"imageGCLowThresholdPercent,omitempty"`

    //计算、缓存所有pod用到的volume
    // Default: "1m"
    VolumeStatsAggPeriod metav1.Duration `json:"volumeStatsAggPeriod,omitempty"`

    //隔离kubelet的cgroup的绝对名称?(需要学习一下cgroup)
    // Default: ""
    KubeletCgroups string `json:"kubeletCgroups,omitempty"`

    //略
    // Default: ""
    SystemCgroups string `json:"systemCgroups,omitempty"`

    //略
    // Default: ""
    CgroupRoot string `json:"cgroupRoot,omitempty"`

    //略
    // Default: true
    CgroupsPerQOS *bool `json:"cgroupsPerQOS,omitempty"`

    //cgroup 驱动,cgroup/systemd
    // Default: "cgroupfs"
    CgroupDriver string `json:"cgroupDriver,omitempty"`

    //cpu管理策略(可用哪些?)
    // Default: "none"
    CPUManagerPolicy string `json:"cpuManagerPolicy,omitempty"`

    // CPU Manager调节周期?
    // Default: "10s"
    CPUManagerReconcilePeriod metav1.Duration `json:"cpuManagerReconcilePeriod,omitempty"`

    // 略
    // Default: "none"
    TopologyManagerPolicy string `json:"topologyManagerPolicy,omitempty"`

    // 系统预留的资源(百分比),支持内存
    // Default: nil
    QOSReserved map[string]string `json:"qosReserved,omitempty"`

    // 容器请求的超时时间,除了pull, logs, exec, attach
    // Default: "2m"
    RuntimeRequestTimeout metav1.Duration `json:"runtimeRequestTimeout,omitempty"`

    //当service想访问自己时,可以配置此参数
    // 可配置的值:
    //promiscuous-bridge:配置容器网桥模式为promiscuous?
    //hairpin-veth:容器网卡上配置hairpin flag?
    //none:啥也不干
    // Default: "promiscuous-bridge"
    HairpinMode string `json:"hairpinMode,omitempty"`

    // 当前节点上可运行的最大pod数
    // Default: 110
    MaxPods int32 `json:"maxPods,omitempty"`

    // Pod ID CIDR,standalone模式(?)时可以配置该参数,cluster模式时从master获取
    // Default: ""
    PodCIDR string `json:"podCIDR,omitempty"`

    // pod中的最大pid数
    // Default: -1
    PodPidsLimit *int64 `json:"podPidsLimit,omitempty"`

    // 容器dns解析配置
    // Default: "/etc/resolv.conf"
    ResolverConfig string `json:"resolvConf,omitempty"`

    // 让kubelet从apiserver获取一下pod情况,然后退出
    // Default: false
    RunOnce bool `json:"runOnce,omitempty"`

    // 当容器配置了cpu limits时,启用cpu cfs限制
    // Default: true
    CPUCFSQuota *bool `json:"cpuCFSQuota,omitempty"`

    // 配置cpu分配的周期,cpu.cfs_period_us
    // Default: "100ms"
    CPUCFSQuotaPeriod *metav1.Duration `json:"cpuCFSQuotaPeriod,omitempty"`

    // 配置node.status.images的数量,
    //-1:没有上限
    //0:不返回image
    // Default: 50
    NodeStatusMaxImages *int32 `json:"nodeStatusMaxImages,omitempty"`

    // kubelet进程可打开的最大文件数
    // Default: 1000000
    MaxOpenFiles int64 `json:"maxOpenFiles,omitempty"`

    // 发送给apiserver的contentType
    // Default: "application/vnd.kubernetes.protobuf"
    ContentType string `json:"contentType,omitempty"`

    // 与apiserver交互的QPS
    // Default: 5
    KubeAPIQPS *int32 `json:"kubeAPIQPS,omitempty"`

    // 与apiserver交互的QPS(burst)
    // Default: 10
    KubeAPIBurst int32 `json:"kubeAPIBurst,omitempty"`

    // kubelet一个一个拉取镜像
    // Default: true
    SerializeImagePulls *bool `json:"serializeImagePulls,omitempty"`

    // 硬性驱逐的阈值,signal -> quantities
    // Default:
    //   memory.available:  "100Mi"
    //   nodefs.available:  "10%"
    //   nodefs.inodesFree: "5%"
    //   imagefs.available: "15%"
    EvictionHard map[string]string `json:"evictionHard,omitempty"`

    // 软性驱逐的阈值(grace)
    // Default: nil
    EvictionSoft map[string]string `json:"evictionSoft,omitempty"`

    // 软性驱逐的周期,比如{"memory.available": "30s"}
    // Default: nil
    EvictionSoftGracePeriod map[string]string `json:"evictionSoftGracePeriod,omitempty"`

    // 这是啥?
    // Default: "5m"
    EvictionPressureTransitionPeriod metav1.Duration `json:"evictionPressureTransitionPeriod,omitempty"`

    // 这是啥?
    // Default: 0
    EvictionMaxPodGracePeriod int32 `json:"evictionMaxPodGracePeriod,omitempty"`

    // Map of signal names to quantities that defines minimum reclaims, which describe the minimum
    // amount of a given resource the kubelet will reclaim when performing a pod eviction while
    // that resource is under pressure. For example: {"imagefs.available": "2Gi"}
    // Dynamic Kubelet Config (beta): If dynamically updating this field, consider that
    // it may change how well eviction can manage resource pressure.
    // Default: nil
    // +optional
    EvictionMinimumReclaim map[string]string `json:"evictionMinimumReclaim,omitempty"`

    // podsPerCore is the maximum number of pods per core. Cannot exceed MaxPods.
    // 每核cpu能跑的最大pod数
    // Default: 0
    PodsPerCore int32 `json:"podsPerCore,omitempty"`

    // 让AD-controller来执行卷的挂载/卸载
    // Default: true
    EnableControllerAttachDetach *bool `json:"enableControllerAttachDetach,omitempty"`

    // true:当内核配置不满足kubelet要求时,kubelet会出现错误
    //false:kubelet会修改内核配置
    // Default: false
    ProtectKernelDefaults bool `json:"protectKernelDefaults,omitempty"`

    // 会生成一些默认的iptables规则给组件用,比如kube-proxy
    // Default: true
    MakeIPTablesUtilChains *bool `json:"makeIPTablesUtilChains,omitempty"`

    // 这是啥?
    // Default: 14
    IPTablesMasqueradeBit *int32 `json:"iptablesMasqueradeBit,omitempty"`

    // 这是啥?
    // Default: 15
    IPTablesDropBit *int32 `json:"iptablesDropBit,omitempty"`

    // 支持启用的特性,查看k8s.io/kubernetes/pkg/features/kube_features.go
    // Default: nil
    FeatureGates map[string]bool `json:"featureGates,omitempty"`

    // 当swap启用时,kubelet将不能启动
    // Default: true
    FailSwapOn *bool `json:"failSwapOn,omitempty"`

    // 容器日志大小(滚动更新前)
    // Default: "10Mi"
    ContainerLogMaxSize string `json:"containerLogMaxSize,omitempty"`

    // 容器最大的日志文件数
    // Default: 5
    ContainerLogMaxFiles *int32 `json:"containerLogMaxFiles,omitempty"`

    // 配置confimap和secret的manager以何种模式运行?
    // Default: "Watch"
    ConfigMapAndSecretChangeDetectionStrategy ResourceChangeDetectionStrategy `json:"configMapAndSecretChangeDetectionStrategy,omitempty"`

    // 为系统预留资源,只支持cpu、mem具体查看http://kubernetes.io/docs/user-guide/compute-resources
    // Default: nil
    SystemReserved map[string]string `json:"systemReserved,omitempty"`

    // 为k8s组件预留的资源,支持cpu、mem、loca storage具体查看http://kubernetes.io/docs/user-guide/compute-resources
    // Default: nil
    KubeReserved map[string]string `json:"kubeReserved,omitempty"`

    // 预留的cpu列表,将覆盖system-reserved和kube-reserved
    ReservedSystemCPUs string `json:"reservedSystemCPUs,omitempty"`

    // 这是啥?
    // Default: ""
    ShowHiddenMetricsForVersion string `json:"showHiddenMetricsForVersion,omitempty"`

    // 系统预留的cgroup,具体参考https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md
    // Default: ""
    SystemReservedCgroup string `json:"systemReservedCgroup,omitempty"`
    // k8s预留的cgroup,具体参考https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md
    // Default: ""
    KubeReservedCgroup string `json:"kubeReservedCgroup,omitempty"`

    // 指定了Node Allocatable enforcements,具体参考https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md
    // Default: ["pods"]
    EnforceNodeAllocatable []string `json:"enforceNodeAllocatable,omitempty"`

    // 允许不安全sysctl操作的白名单列表
    // Default: []
    AllowedUnsafeSysctls []string `json:"allowedUnsafeSysctls,omitempty"`

    // 第三方卷插件目录
    // Default: "/usr/libexec/kubernetes/kubelet-plugins/volume/exec/"
    VolumePluginDir string `json:"volumePluginDir,omitempty"`

    // 标识cloudprovider的实例,ccm中会用到
    // Default: ""
    ProviderID string `json:"providerID,omitempty"`
}

1.4  KubeProxyConfiguration

type KubeProxyConfiguration struct {
    metav1.TypeMeta `json:",inline"`

    //开启关闭一些FeatureGates
    FeatureGates map[string]bool `json:"featureGates,omitempty"`

    //kube-proxy绑定地址
    BindAddress string `json:"bindAddress"`

    //健康检查绑定地址,默认0.0.0.0:10256
    HealthzBindAddress string `json:"healthzBindAddress"`

    //metrics server地址,默认127.0.0.1:10249
    MetricsBindAddress string `json:"metricsBindAddress"`

    //若为true,当端口绑定失败时,kube-proxy将退出
    BindAddressHardFail bool `json:"bindAddressHardFail"`

    //若为true,提供一个web接口/debug/pprof,给metrics-server使用
    EnableProfiling bool `json:"enableProfiling"`

    //集群内pod的CIDR
    ClusterCIDR string `json:"clusterCIDR"`

    //覆盖真实的hostname
    HostnameOverride string `json:"hostnameOverride"`

    //与apiserver通信时的配置 
    //kube-proxy的kubeconfig、请求apiserer时的请求头(将覆盖application/json)、ContentType 、QPS、Burst(当超过查询速率时允许将查询请求缓存下来?)
    ClientConnection componentbaseconfigv1alpha1.ClientConnectionConfiguration `json:"clientConnection"`

    //ipables配置
    //掩码位数[0,31]、是否对所有路由作SNAT、iptables刷新间隔(SyncPeriod 和MinSyncPeriod 有啥区别?)、
    IPTables KubeProxyIPTablesConfiguration `json:"iptables"`

    //IPVS配置
    //略。。。
    IPVS KubeProxyIPVSConfiguration `json:"ipvs"`

    //OOMScoreAdj [-1000,1000]
    OOMScoreAdj *int32 `json:"oomScoreAdj"`

    //kube-proxy转发模式,userspace、iptables、ipvs
    Mode ProxyMode `json:"mode"`

    // 主机端口范围,用于service服务转发
    PortRange string `json:"portRange"`

    //UDP连接空闲的保持时间,仅适用于proxyMode=userspace
    UDPIdleTimeout metav1.Duration `json:"udpIdleTimeout"`
    //conntrack配置
    //如跟踪每个cpu的最大NAT连接数、TCP连接的空闲时间等
    Conntrack KubeProxyConntrackConfiguration `json:"conntrack"`

    //apiserver的配置信息刷新频率
    ConfigSyncPeriod metav1.Duration `json:"configSyncPeriod"`

    //这个设置了有啥用?
    NodePortAddresses []string `json:"nodePortAddresses"`

    // winkernel配置(windows)
    Winkernel KubeProxyWinkernelConfiguration `json:"winkernel"`

    //这个参数是干嘛的?
    ShowHiddenMetricsForVersion string `json:"showHiddenMetricsForVersion"`

    // 检测本地traffic,默认LocalModeClusterCIDR
    DetectLocalMode LocalMode `json:"detectLocalMode"`
}

1.5  JoinConfiguration

type JoinConfiguration struct {
    metav1.TypeMeta `json:",inline"`

    // 可配置kubelet的参数,比如cloud-provider: "external"
    NodeRegistration NodeRegistrationOptions `json:"nodeRegistration,omitempty"`

    //加入计算节点的配置,可Kubeadm token create --print-join-command的输出信息
    Discovery Discovery `json:"discovery"`

    //加入控制面的配置
    ControlPlane *JoinControlPlane `json:"controlPlane,omitempty"`
}

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
kubeadmKubernetes官方提供的一个快速部署Kubernetes集群的工具,它使用配置文件来描述Kubernetes集群的各种配置信息。下面是kubeadm配置文件的详解: kubeadm配置文件采用YAML格式,通常命名为`kubeadm-config.yaml`,包含了以下几个部分: 1. `apiVersion`和`kind`:指定配置文件的API版本和类型,对于kubeadm配置文件来说,`apiVersion`为`kubeadm.k8s.io/v1beta2`,`kind`为`ClusterConfiguration`或`InitConfiguration`。 2. `controlPlaneEndpoint`:指定控制平面的访问地址,可以是负载均衡器的IP或域名,也可以是某个节点的IP地址。 3. `networking`:指定Kubernetes集群的网络配置,包括网络插件、服务IP段、Pod IP段等。 4. `etcd`:指定etcd的相关配置,包括数据目录、镜像地址、数据备份等。 5. `apiServer`:指定API Server的相关配置,包括监听地址、证书和密钥、准入控制等。 6. `controllerManager`:指定Controller Manager的相关配置,包括leader选举、证书和密钥等。 7. `scheduler`:指定Scheduler的相关配置,包括leader选举、证书和密钥等。 8. `dns`:指定CoreDNS的相关配置,包括镜像地址、配置文件等。 9. `certificateKey`:指定用于加密通信的证书密钥,可以通过`kubeadm alpha certs`命令生成。 10. `imageRepository`:指定使用的镜像仓库地址,默认为`k8s.gcr.io`。 以上是kubeadm配置文件的主要内容,不同的配置文件类型可能包含不同的字段。在使用kubeadm部署Kubernetes集群时,可以通过`kubeadm init --config`和`kubeadm join --config`命令来指定配置文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值