【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集群的配置,可以配置内部与外部的etcdEtcd 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"`// 启用哪些FeatureGatesFeatureGates map[string]bool `json:"featureGates,omitempty"`// 集群名称ClusterName string `json:"clusterName,omitempty"`
}
1.3 KubeletConfiguration
type KubeletConfiguration struct {metav1.TypeMeta `json:",inline"`//启用kubelet,默认trueEnableServer *bool `json:"enableServer,omitempty"`//静态pod目录或文件,默认""StaticPodPath string `json:"staticPodPath,omitempty"`// 同步运行中的容器与配置的最大周期,默认"1m"// +optionalSyncFrequency 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 ,默认nilStaticPodURLHeader map[string][]string `json:"staticPodURLHeader,omitempty"`// kubelet监听地址,默认"0.0.0.0"Address string `json:"address,omitempty"`//kubelet监听端口,默认10250Port 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),默认nilTLSCipherSuites []string `json:"tlsCipherSuites,omitempty"`//支持的TLS最小版本,默认""TLSMinVersion string `json:"tlsMinVersion,omitempty"`// 启用客户端证书循环? 默认falseRotateCertificates bool `json:"rotateCertificates,omitempty"`// kubelet会用CSR API从apiserver得到证书,需启用RotateKubeletServerCertificate 特性,默认falseServerTLSBootstrap bool `json:"serverTLSBootstrap,omitempty"`// 请求kubelet时的认证配置,bear token、X509等// 默认:// anonymous:// enabled: false// webhook:// enabled: true// cacheTTL: "2m"// +optionalAuthentication KubeletAuthentication `json:"authentication"`// 指定如何授权对kubelet的请求// Defaults:// mode: Webhook// webhook:// cacheAuthorizedTTL: "5m"// cacheUnauthorizedTTL: "30s"Authorization KubeletAuthorization `json:"authorization"`// 拉取镜像的QPS// Default: 5RegistryPullQPS *int32 `json:"registryPullQPS,omitempty"`// bursty pulls的最大数// Default: 10RegistryBurst int32 `json:"registryBurst,omitempty"`// 每秒最大创建事件数// Default: 5EventRecordQPS *int32 `json:"eventRecordQPS,omitempty"`// 每秒最大创建事件数(burst)// Default: 10EventBurst int32 `json:"eventBurst,omitempty"`//是否支持访问kubelet端点的日志功能,以及exec、attach、logs、forward命令// Default: trueEnableDebuggingHandlers *bool `json:"enableDebuggingHandlers,omitempty"`//启用锁争用分析?// Default: falseEnableContentionProfiling bool `json:"enableContentionProfiling,omitempty"`//健康检查端口// Default: 10248HealthzPort *int32 `json:"healthzPort,omitempty"`//健康检查地址// Default: "127.0.0.1"HealthzBindAddress string `json:"healthzBindAddress,omitempty"`//kubelet进程的oom-score-adj// Default: -999OOMScoreAdj *int32 `json:"oomScoreAdj,omitempty"`//配置后所有容器都会使用该DNS// Default: ""ClusterDomain string `json:"clusterDomain,omitempty"`//DNS服务器的列表,配置后将代替宿主机的DNS解析// Default: nilClusterDNS []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: 40NodeLeaseDurationSeconds int32 `json:"nodeLeaseDurationSeconds,omitempty"`//回收没有用的镜像的时间// Default: "2m"ImageMinimumGCAge metav1.Duration `json:"imageMinimumGCAge,omitempty"`//当磁盘使用率达到该值时,会一直进行镜像GC// Default: 85ImageGCHighThresholdPercent *int32 `json:"imageGCHighThresholdPercent,omitempty"`//当磁盘使用率低于该值时,不会进行镜像GC// Default: 80ImageGCLowThresholdPercent *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: trueCgroupsPerQOS *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: nilQOSReserved 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: 110MaxPods int32 `json:"maxPods,omitempty"`// Pod ID CIDR,standalone模式(?)时可以配置该参数,cluster模式时从master获取// Default: ""PodCIDR string `json:"podCIDR,omitempty"`// pod中的最大pid数// Default: -1PodPidsLimit *int64 `json:"podPidsLimit,omitempty"`// 容器dns解析配置// Default: "/etc/resolv.conf"ResolverConfig string `json:"resolvConf,omitempty"`// 让kubelet从apiserver获取一下pod情况,然后退出// Default: falseRunOnce bool `json:"runOnce,omitempty"`// 当容器配置了cpu limits时,启用cpu cfs限制// Default: trueCPUCFSQuota *bool `json:"cpuCFSQuota,omitempty"`// 配置cpu分配的周期,cpu.cfs_period_us// Default: "100ms"CPUCFSQuotaPeriod *metav1.Duration `json:"cpuCFSQuotaPeriod,omitempty"`// 配置node.status.images的数量,//-1:没有上限//0:不返回image// Default: 50NodeStatusMaxImages *int32 `json:"nodeStatusMaxImages,omitempty"`// kubelet进程可打开的最大文件数// Default: 1000000MaxOpenFiles int64 `json:"maxOpenFiles,omitempty"`// 发送给apiserver的contentType// Default: "application/vnd.kubernetes.protobuf"ContentType string `json:"contentType,omitempty"`// 与apiserver交互的QPS// Default: 5KubeAPIQPS *int32 `json:"kubeAPIQPS,omitempty"`// 与apiserver交互的QPS(burst)// Default: 10KubeAPIBurst int32 `json:"kubeAPIBurst,omitempty"`// kubelet一个一个拉取镜像// Default: trueSerializeImagePulls *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: nilEvictionSoft map[string]string `json:"evictionSoft,omitempty"`// 软性驱逐的周期,比如{"memory.available": "30s"}// Default: nilEvictionSoftGracePeriod map[string]string `json:"evictionSoftGracePeriod,omitempty"`// 这是啥?// Default: "5m"EvictionPressureTransitionPeriod metav1.Duration `json:"evictionPressureTransitionPeriod,omitempty"`// 这是啥?// Default: 0EvictionMaxPodGracePeriod 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// +optionalEvictionMinimumReclaim map[string]string `json:"evictionMinimumReclaim,omitempty"`// podsPerCore is the maximum number of pods per core. Cannot exceed MaxPods.// 每核cpu能跑的最大pod数// Default: 0PodsPerCore int32 `json:"podsPerCore,omitempty"`// 让AD-controller来执行卷的挂载/卸载// Default: trueEnableControllerAttachDetach *bool `json:"enableControllerAttachDetach,omitempty"`// true:当内核配置不满足kubelet要求时,kubelet会出现错误//false:kubelet会修改内核配置// Default: falseProtectKernelDefaults bool `json:"protectKernelDefaults,omitempty"`// 会生成一些默认的iptables规则给组件用,比如kube-proxy// Default: trueMakeIPTablesUtilChains *bool `json:"makeIPTablesUtilChains,omitempty"`// 这是啥?// Default: 14IPTablesMasqueradeBit *int32 `json:"iptablesMasqueradeBit,omitempty"`// 这是啥?// Default: 15IPTablesDropBit *int32 `json:"iptablesDropBit,omitempty"`// 支持启用的特性,查看k8s.io/kubernetes/pkg/features/kube_features.go// Default: nilFeatureGates map[string]bool `json:"featureGates,omitempty"`// 当swap启用时,kubelet将不能启动// Default: trueFailSwapOn *bool `json:"failSwapOn,omitempty"`// 容器日志大小(滚动更新前)// Default: "10Mi"ContainerLogMaxSize string `json:"containerLogMaxSize,omitempty"`// 容器最大的日志文件数// Default: 5ContainerLogMaxFiles *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: nilSystemReserved map[string]string `json:"systemReserved,omitempty"`// 为k8s组件预留的资源,支持cpu、mem、loca storage具体查看http://kubernetes.io/docs/user-guide/compute-resources// Default: nilKubeReserved map[string]string `json:"kubeReserved,omitempty"`// 预留的cpu列表,将覆盖system-reserved和kube-reservedReservedSystemCPUs 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"`//开启关闭一些FeatureGatesFeatureGates map[string]bool `json:"featureGates,omitempty"`//kube-proxy绑定地址BindAddress string `json:"bindAddress"`//健康检查绑定地址,默认0.0.0.0:10256HealthzBindAddress string `json:"healthzBindAddress"`//metrics server地址,默认127.0.0.1:10249MetricsBindAddress string `json:"metricsBindAddress"`//若为true,当端口绑定失败时,kube-proxy将退出BindAddressHardFail bool `json:"bindAddressHardFail"`//若为true,提供一个web接口/debug/pprof,给metrics-server使用EnableProfiling bool `json:"enableProfiling"`//集群内pod的CIDRClusterCIDR string `json:"clusterCIDR"`//覆盖真实的hostnameHostnameOverride 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、ipvsMode ProxyMode `json:"mode"`// 主机端口范围,用于service服务转发PortRange string `json:"portRange"`//UDP连接空闲的保持时间,仅适用于proxyMode=userspaceUDPIdleTimeout 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,默认LocalModeClusterCIDRDetectLocalMode 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"` }
【kubeadm】init配置文件相关推荐
- Kubernetes Kubeadm init 与 join 原理分析
一.kubeadm概述 kubeadm是社区维护的Kubernetes集群一键部署利器,使用两条命令即可完成k8s集群中master节点以及node节点的部署,其底层原理是利用了k8s TLS boo ...
- kubeadm工作原理-kubeadm init原理分析-kubeadm join原理分析
kubeadm概述 kubeadm是社区维护的Kubernetes集群一键部署利器,使用两条命令即可完成k8s集群中master节点以及node节点的部署,其底层原理是利用了k8s TLS boots ...
- 【k8s-5】kubeadm init过程的错误
可以看到执行了 kubeadm init 之后,貌似一直卡住 kubelet 这个进程的健康检查上,日志如下. [etcd] Creating static Pod manifest for loca ...
- kubeadm init 问题和解决问题记录
安装 kubeadm: 使用阿里云来安装kube** cat /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl ...
- 阿里云搭建k8s kubeadm init失败的原因
使用阿里云搭建k8s时,在主节点执行kubeadm init时候卡在 Waiting for the kubelet to boot up the control plane as static Po ...
- 第148天学习打卡(Kubernetes kubeadm init 成功部署 部署网络插件 部署容器化应用)
继续安装 c3j9i2htclj6thlta6Z ~]# clear [root@iZ2vc3j9i2htclj6thlta6Z ~]# systemctl stop firewalld [root@ ...
- Kubeadm init报错解决
报错截图如下: 解决方法: 接着执行下面的代码重启kubeadm kubeadm reset 然后输入y,再重新执行init操作即可 看到箭头所示的那句话表示执行成功
- linux init配置文件说明
Linux 内核启动之后,启动的第一个进程就是 init 进程.该进程从 /etc/inittab 文件中读取配置,对系统进行一系列的初始化工作.下面我们来分析一下 /etc/inittab 文件的结 ...
- kubeadm安装高可用kubernetes v1.14.1
前言 步骤跟之前安装1.13版本的是一样的 区别就在于kubeadm init的configuration file 目前kubeadm init with configuration file已经处 ...
最新文章
- 如何利用 C# 爬取带 Token 验证的网站数据?
- 1028. List Sorting (25)
- set,存放不重复数据的集合类型
- LeetCode 1754. 构造字典序最大的合并字符串
- python 动漫卡通人物图片大全_用Python把人物头像动漫化,不同的表情给你不同的惊喜...
- 系统辨识理论及应用_控制理论学习书单推荐(值得一读)
- python需要配置环境变量吗_w10版本python怎样设置环境变量
- python第六篇:Python复制超大文件、复制二进制文件
- 教你如何防止网站被挂马!
- 董事、执行董事、总裁、总经理
- 列车座位应考虑向后摆放
- js获得浏览器高度和宽度 参数
- java开发手机app教程,看完必懂
- 2022年招商团长未来两年发展趋势分析
- python gdal 基于栅格shp文件裁剪geotif图
- 什么是微控制器? 通用组件的定义特征和架构
- 工业云平台大数据统计分析有什么优势?
- VMware下怎么批量创建,克隆,迁移虚拟机
- (151)设计一个同或门之Xnorgate
- FinClip小程序+Rust(二):环境搭建
热门文章
- 网页java代码_java抓取网页代码
- 【热爱祖国热爱人民】
- windows8 linux双系统,win7或win8、win8.1系统下安装ubuntu实现双系统图文教程
- APPserver安装教程(手把手教你搭建)
- 【九章算法】经典题目
- Python计算机视觉——图像内容分类
- parsing XML document from class path resource [applicationContext.xml]…
- 《武林外传》中同福客栈的薪资保障是怎样的?
- 效果最好的SEO软件是哪个?
- Latex无法显示中文#学习笔记