当前位置:网站首页>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
边栏推荐
猜你喜欢
随机推荐
Guess riddles (3)
Halcon: check of blob analysis_ Blister capsule detection
JS asynchronous error handling
Basic number theory - fast power
猜谜语啦(142)
Latex improve
Guess riddles (7)
Chapter 18 using work queue manager (1)
Low code platform | apaas platform construction analysis
Esp8266 interrupt configuration
图解网络:什么是网关负载均衡协议GLBP?
Explore the authentication mechanism of StarUML
Guess riddles (2)
MATLAB skills (28) Fuzzy Comprehensive Evaluation
C# LINQ源码分析之Count
Numpy 小坑:维度 (n, 1) 和 维度 (n, ) 数组相加运算后维度变为 (n, n)
ROS learning 1- create workspaces and function packs
[Niuke brush questions day4] jz55 depth of binary tree
Digital analog 2: integer programming
猜谜语啦(7)