当前位置:网站首页>Configuration and startup of kubedm series-02-kubelet
Configuration and startup of kubedm series-02-kubelet
2022-07-05 08:47:00 【runzhliu】
List of articles
overview
No matter what control plane The node is still ordinary worker node ,kubelet It is a process that must be started , and kubelet The installation method of can use rpm Packages can also be binary
About kube init
About kubelet Start log , Review the
# To start kubelet
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Starting the kubelet
Default configuration
For the default configuration , We don't need to know every parameter very well , You can check the relevant documents and codes when necessary
# kubeadm config print init-defaults --component-configs KubeletConfiguration
# Excerpts kind: KubeletConfiguration Part of
---
apiVersion: kubelet.config.k8s.io/v1beta1
authentication:
anonymous:
enabled: false
webhook:
cacheTTL: 0s
enabled: true
x509:
clientCAFile: /etc/kubernetes/pki/ca.crt
authorization:
mode: Webhook
webhook:
cacheAuthorizedTTL: 0s
cacheUnauthorizedTTL: 0s
cgroupDriver: cgroupfs
clusterDNS:
- 10.96.0.10
clusterDomain: cluster.local
cpuManagerReconcilePeriod: 0s
evictionPressureTransitionPeriod: 0s
fileCheckFrequency: 0s
healthzBindAddress: 127.0.0.1
healthzPort: 10248
httpCheckFrequency: 0s
imageMinimumGCAge: 0s
kind: KubeletConfiguration
logging: {}
nodeStatusReportFrequency: 0s
nodeStatusUpdateFrequency: 0s
rotateCertificates: true
runtimeRequestTimeout: 0s
shutdownGracePeriod: 0s
shutdownGracePeriodCriticalPods: 0s
staticPodPath: /etc/kubernetes/manifests
streamingConnectionIdleTimeout: 0s
syncFrequency: 0s
volumeStatsAggPeriod: 0s
drop in To configure
kubelet There are some special configuration files that need attention , Those who don't understand can check Official documents
Without those package managers , You can refer to the documents installed by hand here
start-up
kubelet The logic that is really started is in the following code , First, try to stop the process ( Prevent multiple processes from starting ), It's essentially passing systemctl status kubelet
First check the status of the service , without enable Will remind , If enable It will pass systemctl stop kubelet
To stop the service , Then I will ClusterConfiguration
and NodeRegistration
Parameters of ( Not all , Mainly the parameters for starting the process args
And so on KUBELET_KUBEADM_ARGS
) Merge , And will write to the default path /var/lib/kubelet/kubeadm-flags.env
, Then take it. ClusterConfiguration
( Only aim at kubelet.config.k8s.io
) Write to disk /var/lib/kubelet/config.yaml
, Finally, through systemctl start kubelet
To start the process
// runKubeletStart executes kubelet start logic.
func runKubeletStart(c workflow.RunData) error {
data, ok := c.(InitData)
if !ok {
return errors.New("kubelet-start phase invoked with an invalid data struct")
}
// First off, configure the kubelet. In this short timeframe, kubeadm is trying to stop/restart the kubelet
// Try to stop the kubelet service so no race conditions occur when configuring it
if !data.DryRun() {
klog.V(1).Infoln("Stopping the kubelet")
kubeletphase.TryStopKubelet()
}
// Write env file with flags for the kubelet to use. We do not need to write the --register-with-taints for the control-plane,
// as we handle that ourselves in the mark-control-plane phase
// TODO: Maybe we want to do that some time in the future, in order to remove some logic from the mark-control-plane phase?
if err := kubeletphase.WriteKubeletDynamicEnvFile(&data.Cfg().ClusterConfiguration, &data.Cfg().NodeRegistration, false, data.KubeletDir()); err != nil {
return errors.Wrap(err, "error writing a dynamic environment file for the kubelet")
}
// Write the kubelet configuration file to disk.
if err := kubeletphase.WriteConfigToDisk(&data.Cfg().ClusterConfiguration, data.KubeletDir()); err != nil {
return errors.Wrap(err, "error writing kubelet configuration to disk")
}
// Try to start the kubelet service in case it's inactive
if !data.DryRun() {
fmt.Println("[kubelet-start] Starting the kubelet")
kubeletphase.TryStartKubelet()
}
return nil
}
Take a look
# cat /var/lib/kubelet/kubeadm-flags.env
KUBELET_KUBEADM_ARGS="--network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.4.1"
# cat /var/lib/kubelet/config.yaml
apiVersion: kubelet.config.k8s.io/v1beta1
authentication:
anonymous:
enabled: false
webhook:
cacheTTL: 0s
enabled: true
x509:
clientCAFile: /etc/kubernetes/pki/ca.crt
authorization:
mode: Webhook
webhook:
cacheAuthorizedTTL: 0s
cacheUnauthorizedTTL: 0s
cgroupDriver: cgroupfs
clusterDNS:
- 10.96.0.10
clusterDomain: cluster.local
cpuManagerReconcilePeriod: 0s
evictionPressureTransitionPeriod: 0s
fileCheckFrequency: 0s
healthzBindAddress: 127.0.0.1
healthzPort: 10248
httpCheckFrequency: 0s
imageMinimumGCAge: 0s
kind: KubeletConfiguration
logging: {}
nodeStatusReportFrequency: 0s
nodeStatusUpdateFrequency: 0s
rotateCertificates: true
runtimeRequestTimeout: 0s
shutdownGracePeriod: 0s
shutdownGracePeriodCriticalPods: 0s
staticPodPath: /etc/kubernetes/manifests
streamingConnectionIdleTimeout: 0s
syncFrequency: 0s
volumeStatsAggPeriod: 0s
other
The following is the control plane It is fully started on kubelet After through ps -ef|cat
Get the process and parameters
# kubeadm init --upload-certs --image-repository registry.aliyuncs.com/google_containers --kubernetes-version 1.21.7 --pod-network-cidr=10.244.0.0/16
/usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.4.1
边栏推荐
猜你喜欢
Matlab tips (28) fuzzy comprehensive evaluation
猜谜语啦(142)
Guess riddles (142)
整形的分类:short in long longlong
STM32 lights up the 1.8-inch screen under Arduino IDE
资源变现小程序添加折扣充值和折扣影票插件
Xrosstools tool installation for X-Series
Redis实现高性能的全文搜索引擎---RediSearch
Programming implementation of ROS learning 6 -service node
猜谜语啦(8)
随机推荐
[formation quotidienne - Tencent Selection 50] 557. Inverser le mot III dans la chaîne
【日常訓練--騰訊精選50】557. 反轉字符串中的單詞 III
特征工程
RT-Thread内核快速入门,内核实现与应用开发学习随笔记
Halcon: check of blob analysis_ Blister capsule detection
Guess riddles (2)
Halcon blob analysis (ball.hdev)
EA introduction notes
Mathematical modeling: factor analysis
Count of C # LINQ source code analysis
MATLAB小技巧(28)模糊综合评价
Reasons for the insecurity of C language standard function scanf
Daily question - input a date and output the day of the year
An enterprise information integration system
How to manage the performance of R & D team?
golang 基础 ——map、数组、切片 存放不同类型的数据
整形的分类:short in long longlong
Guess riddles (7)
L298N module use
[牛客网刷题 Day4] JZ55 二叉树的深度