3-1 部署kubelet

1.1 集群规划#

主机名 角色 IP地址
pg60-31.k8s.host.com kubelet 10.20.60.31
pg60-32.k8s.host.com kubelet 10.20.60.32
pg60-33.k8s.host.com kubelet 10.20.60.33

1.2 下载和分发 kubelet 二进制文件#

参考(摘要):

  • 《2-1. kubernetes环境准备》
Copy
shell> echo -e "DNS1=10.20.60.11\nDNS2=10.20.60.12" >> /etc/sysconfig/network-scripts/ifcfg-eth0 shell> systemctl restart network shell> rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm shell> yum --enablerepo=elrepo-kernel install -y kernel-lt shell> grub2-set-default 0 shell> echo 'PATH=/opt/etcd/bin:/opt/kubernetes/server/bin/:$PATH' >> /root/.bashrc shell> reboot
  • 《2-2.2 签发kubernetes ca证书》
Copy
shell> mkdir -p /etc/kubernetes/pki/ shell> ls -l /etc/kubernetes/pki/ca*.pem
  • 《1-2. Docker安装部署》
  • 《2-3.2 安装和配置kubectl》
Copy
shell> mkdir ~/.kube shell> cp /usr/local/src/kubectl.kubeconfig ~/.kube/config
  • 《2-3.3 部署kube-apiserver集群(systemd)》
Copy
shell> wget http://dlsw.91donkey.com/software/source/k8s/v1.18.2/kubernetes-server-linux-amd64.tar.gz shell> tar zxf kubernetes-server-linux-amd64.tar.gz -C /opt/ shell> mkdir /opt/kubernetes/server/sbin

1.3 创建 kubelet bootstrap kubeconfig 文件#

Copy
shell> cat > kubelet-bootstrap.sh << "EOF" #!/bin/bash - node_name="pg60-31 pg60-32 pg60-33" kubelet(){ # 创建 token export BOOTSTRAP_TOKEN=$(kubeadm token create \ --description kubelet-bootstrap-token \ --groups system:bootstrappers:${node_name} \ --kubeconfig ~/.kube/config) # 设置集群参数 kubectl config set-cluster kubernetes \ --certificate-authority=/etc/kubernetes/pki/ca.pem \ --embed-certs=true \ --server="https://10.20.60.10:6443" \ --kubeconfig=kubelet-bootstrap-${node_name}.kubeconfig # 设置客户端认证参数 kubectl config set-credentials kubelet-bootstrap \ --token=${BOOTSTRAP_TOKEN} \ --kubeconfig=kubelet-bootstrap-${node_name}.kubeconfig # 设置上下文参数 kubectl config set-context default \ --cluster=kubernetes \ --user=kubelet-bootstrap \ --kubeconfig=kubelet-bootstrap-${node_name}.kubeconfig # 设置默认上下文 kubectl config use-context default --kubeconfig=kubelet-bootstrap-${node_name}.kubeconfig } for node_name in ${node_name} do kubelet done EOF

注意修改 node_name 字段

1.4 查看 kubeadm 为各节点创建的 token#

  • token 有效期为 1 天,超期后将不能再被用来 bootstrap kubelet,且会被 kube-controller-manager 的 tokencleaner 清理。

1.5 分发 bootstrap kubeconfig 文件到所有 worker 节点#

Copy
shell> scp kubelet-bootstrap-pg60-32.kubeconfig root@${node_ip}:/etc/kubernetes/kubelet-bootstrap.kubeconfig

1.6 创建和分发 kubelet 参数配置文件#

  • 创建配置文件
Copy
shell> cat > kubelet-config.yaml.template << EOF kind: KubeletConfiguration apiVersion: kubelet.config.k8s.io/v1beta1 address: "10.20.60.31" staticPodPath: "" syncFrequency: 1m fileCheckFrequency: 20s httpCheckFrequency: 20s staticPodURL: "" port: 10250 readOnlyPort: 0 rotateCertificates: true serverTLSBootstrap: true authentication: anonymous: enabled: false webhook: enabled: true x509: clientCAFile: "/etc/kubernetes/pki/ca.pem" authorization: mode: Webhook registryPullQPS: 0 registryBurst: 20 eventRecordQPS: 0 eventBurst: 20 enableDebuggingHandlers: true enableContentionProfiling: true healthzPort: 10248 healthzBindAddress: "10.20.60.31" clusterDomain: "cluster.local" clusterDNS: - "10.254.0.2" // - "192.168.0.2" nodeStatusUpdateFrequency: 10s nodeStatusReportFrequency: 1m imageMinimumGCAge: 2m imageGCHighThresholdPercent: 85 imageGCLowThresholdPercent: 80 volumeStatsAggPeriod: 1m kubeletCgroups: "" systemCgroups: "" cgroupRoot: "" cgroupsPerQOS: true cgroupDriver: cgroupfs runtimeRequestTimeout: 10m hairpinMode: promiscuous-bridge maxPods: 220 podCIDR: "172.60.0.0/16" podPidsLimit: -1 resolvConf: /etc/resolv.conf maxOpenFiles: 1000000 kubeAPIQPS: 1000 kubeAPIBurst: 2000 serializeImagePulls: false evictionHard: memory.available: "100Mi" nodefs.available: "10%" nodefs.inodesFree: "5%" imagefs.available: "15%" evictionSoft: {} enableControllerAttachDetach: true failSwapOn: true containerLogMaxSize: 20Mi containerLogMaxFiles: 10 systemReserved: {} kubeReserved: {} systemReservedCgroup: "" kubeReservedCgroup: "" enforceNodeAllocatable: ["pods"] EOF

注意根据不同服务器修改配置项

  • 分发配置文件
Copy
shell> scp kubelet-config.yaml.template root@${node_ip}/etc/kubernetes/kubelet-config.yaml

1.7 创建和分发 kubelet systemd unit 文件#

  • 创建
Copy
shell> cat > kubelet.service.template << "EOF" [Unit] Description=Kubernetes Kubelet Documentation=https://github.com/GoogleCloudPlatform/kubernetes After=containerd.service Requires=containerd.service [Service] ExecStart=/opt/kubernetes/server/bin/kubelet \ --bootstrap-kubeconfig=/etc/kubernetes/kubelet-bootstrap.kubeconfig \ --cgroup-driver=systemd \ --cert-dir=/etc/kubernetes/pki \ --root-dir=/export/kubernetes/kubelet \ --kubeconfig=/etc/kubernetes/kubelet.kubeconfig \ --config=/etc/kubernetes/kubelet-config.yaml \ --hostname-override=pg60-31 \ --image-pull-progress-deadline=15m \ --pod-infra-container-image=kubernetes/pause:latest \ // --pod-infra-container-image=ibmcom/pause:3.1 \ --volume-plugin-dir=/export/kubernetes/kubelet/kubelet-plugins/volume/exec/ \ --logtostderr=true \ --v=2 Restart=always RestartSec=5 StartLimitInterval=0 [Install] WantedBy=multi-user.target EOF

注意根据不同服务器修改配置项

  • 分发
Copy
shell> scp kubelet.service root@${node_ip}:/etc/systemd/system/kubelet.service

1.8 启动 kubelet 服务#

Copy
shell> mkdir -p /export/kubernetes/kubelet/kubelet-plugins/volume/exec/ shell> /usr/sbin/swapoff -a shell> systemctl daemon-reload && systemctl enable kubelet && systemctl restart kubelet

1.9 查看 kubelet 情况#

所有节点均注册

posted @   龍龍小宝  阅读(88)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示
CONTENTS