Kubernetes云容器技术专题—k8s 之 kubelet组件

简介: k8s 之 kubelet组件

Kubelet组件运行在Node节点上,维持运行中的Pods以及提供kuberntes运行时环境,主要完成以下使命:

1.监视分配给该Node节点的pods

2.挂载pod所需要的volumes

3.下载pod的secret

4.通过docker/rkt来运行pod中的容器

5.周期的执行pod中为容器定义的liveness探针

6.上报pod的状态给系统的其他组件

7.上报Node的状态

kubelet安装在node节点,我们的node跟apiserver在一起,这里安装在hdss7-21,22上:

首先,kubernetes依赖pause,我们先将此服务上传到们自己的docker私有仓库:

 

kubernetes中的pause容器主要为每个业务容器提供以下功能:

 

  • 在pod中担任Linux命名空间共享的基础;
  • 启用pid命名空间,开启init进程。

1 HDSS7-200上:
# docker pull kubernetes/pause
# docker tag f9d5de079539 harbor.od.com/public/pause:latest
# docker push harbor.od.com/public/pause:latest

首先在hdss7-200上申请证书:
# vi /opt/certs/kubelet-csr.json

{
    "CN": "k8s-kubelet",
    "hosts": [
    "127.0.0.1",
    "192.168.12.10",
    "192.168.12.21",
    "192.168.12.22",
    "192.168.12.23",
    "192.168.12.24",
    "192.168.12.25",
    "192.168.12.26",
    "192.168.12.27",
    "192.168.12.28"
    ],
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "ST": "beijing",
            "L": "beijing",
            "O": "od",
            "OU": "ops"
        }
    ]

申请证书:

# cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=server kubelet-csr.json | cfssl-json -bare kubelet

2 拷贝证书到21,22上:

# cd /opt/kubernetes/server/bin/cert/

# scp hdss7-200:/opt/certs/kubelet.pem ./

# scp hdss7-200:/opt/certs/kubelet-key.pem ./

进入到conf目录执行以下命令:21,22上执行:

cert]# cd ../conf/

# kubectl config set-cluster myk8s \

 --certificate-authority=/opt/kubernetes/server/bin/cert/ca.pem \

 --embed-certs=true \

 --server=https://192.168.12.10:7443 \

 --kubeconfig=kubelet.kubeconfig

# kubectl config set-credentials k8s-node \

 --client-certificate=/opt/kubernetes/server/bin/cert/client.pem \

 --client-key=/opt/kubernetes/server/bin/cert/client-key.pem \

 --embed-certs=true \

 --kubeconfig=kubelet.kubeconfig

# kubectl config set-context myk8s-context \

 --cluster=myk8s \

 --user=k8s-node \

 --kubeconfig=kubelet.kubeconfig

# kubectl config use-context myk8s-context --kubeconfig=kubelet.kubeconfig


hdss7-21上执行:PS:因为不论在哪个节点创建,已经同步到etcd上。

conf]# vi k8s-node.yaml

apiVersion: rbac.authorization.k8s.io/v1

kind: ClusterRoleBinding

metadata:

 name: k8s-node

roleRef:

 apiGroup: rbac.authorization.k8s.io

 kind: ClusterRole

 name: system:node

subjects:

- apiGroup: rbac.authorization.k8s.io

 kind: User

 name: k8s-node

# kubectl create -f k8s-node.yaml

检查k8s-node资源创建状态:

# kubectl get clusterrolebinding k8s-node -o yaml

image.png

编辑kubelet启动脚本:标红部分第二台要修改成对应的主机名

# vi /opt/kubernetes/server/bin/kubelet.sh

#!/bin/sh

./kubelet \

 --anonymous-auth=false \

 --cgroup-driver systemd \

 --cluster-dns 192.168.0.2 \

 --cluster-domain cluster.local \

 --runtime-cgroups=/systemd/system.slice \

 --kubelet-cgroups=/systemd/system.slice \

 --fail-swap-on="false" \

 --client-ca-file ./cert/ca.pem \

 --tls-cert-file ./cert/kubelet.pem \

 --tls-private-key-file ./cert/kubelet-key.pem \

 --hostname-override hdss7-21.host.com \

 --image-gc-high-threshold 20 \

 --image-gc-low-threshold 10 \

 --kubeconfig ./conf/kubelet.kubeconfig \

 --log-dir /data/logs/kubernetes/kube-kubelet \

 --pod-infra-container-image harbor.od.com/public/pause:latest \

 --root-dir /data/kubelet

执行权限:

# chmod u+x /opt/kubernetes/server/bin/kubelet.sh

创建日志存储目录:

# mkdir -p /data/logs/kubernetes/kube-kubelet

编辑supervisord启动文件:红色部分自行修改

# vi /etc/supervisord.d/kube-kubelet.ini

[program:kube-kubelet-7-21]

command=/opt/kubernetes/server/bin/kubelet.sh     ; the program (relative uses PATH, can take args)

numprocs=1                                        ; number of processes copies to start (def 1)

directory=/opt/kubernetes/server/bin              ; directory to cwd to before exec (def no cwd)

autostart=true                                    ; start at supervisord start (default: true)

autorestart=true                                ; retstart at unexpected quit (default: true)

startsecs=30                                      ; number of secs prog must stay running (def. 1)

startretries=3                                    ; max # of serial start failures (default 3)

exitcodes=0,2                                     ; 'expected' exit codes for process (default 0,2)

stopsignal=QUIT                                   ; signal used to kill process (default TERM)

stopwaitsecs=10                                   ; max num secs to wait b4 SIGKILL (default 10)

user=root                                         ; setuid to this UNIX account to run the program

redirect_stderr=true                              ; redirect proc stderr to stdout (default false)

stdout_logfile=/data/logs/kubernetes/kube-kubelet/kubelet.stdout.log   ; stderr log path, NONE for none; default AUTO

stdout_logfile_maxbytes=64MB                      ; max # logfile bytes b4 rotation (default 50MB)

stdout_logfile_backups=4                          ; # of stdout logfile backups (default 10)

stdout_capture_maxbytes=1MB                       ; number of bytes in'capturemode' (default 0)

stdout_events_enabled=false                       ; emit events on stdout writes (default false)

# supervisorctl update

# supervisorctl status

image.png

给node打tag:

# kubectl label node hdss7-21.host.com node-role.kubernetes.io/master=

image.png


相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6月前
|
存储 Kubernetes 网络安全
关于阿里云 Kubernetes 容器服务(ACK)添加镜像仓库的快速说明
本文介绍了在中国大陆地区因网络限制无法正常拉取 Docker 镜像的解决方案。作者所在的阿里云 Kubernetes 集群使用的是较旧版本的 containerd(1.2x),且无法直接通过 SSH 修改节点配置,因此采用了一种无需更改 Kubernetes 配置文件的方法。通过为 `docker.io` 添加 containerd 的镜像源,并使用脚本自动修改 containerd 配置文件中的路径错误(将错误的 `cert.d` 改为 `certs.d`),最终实现了通过多个镜像站点拉取镜像。作者还提供了一个可重复运行的脚本,用于动态配置镜像源。虽然该方案能缓解镜像拉取问题,
716 2
|
12月前
|
存储 Kubernetes 监控
K8s集群实战:使用kubeadm和kuboard部署Kubernetes集群
总之,使用kubeadm和kuboard部署K8s集群就像回归童年一样,简单又有趣。不要忘记,技术是为人服务的,用K8s集群操控云端资源,我们不过是想在复杂的世界找寻简单。尽管部署过程可能遇到困难,但朝着简化复杂的目标,我们就能找到意义和乐趣。希望你也能利用这些工具,找到你的乐趣,满足你的需求。
1072 33
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
366 0
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
|
存储 监控 对象存储
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
ACK 容器监控存储全面更新:让您的应用运行更稳定、更透明
291 1
|
弹性计算 人工智能 资源调度
DeepSeek大解读系列公开课上新!阿里云专家主讲云上智能算力、Kubernetes容器服务、DeepSeek私有化部署
智猩猩「DeepSeek大解读」系列公开课第三期即将开讲,聚焦阿里云弹性计算助力大模型训练与部署。三位专家将分别讲解智能算力支撑、Kubernetes容器服务在AI场景的应用实践、以及DeepSeek一键部署和多渠道应用集成,分享云计算如何赋能大模型发展。欲观看直播,可关注【智猩猩GenAI视频号】预约。 (239字符)
|
监控 Kubernetes Cloud Native
基于阿里云容器服务Kubernetes版(ACK)的微服务架构设计与实践
本文介绍了如何基于阿里云容器服务Kubernetes版(ACK)设计和实现微服务架构。首先概述了微服务架构的优势与挑战,如模块化、可扩展性及技术多样性。接着详细描述了ACK的核心功能,包括集群管理、应用管理、网络与安全、监控与日志等。在设计基于ACK的微服务架构时,需考虑服务拆分、通信、发现与负载均衡、配置管理、监控与日志以及CI/CD等方面。通过一个电商应用案例,展示了用户服务、商品服务、订单服务和支付服务的具体部署步骤。最后总结了ACK为微服务架构提供的强大支持,帮助应对各种挑战,构建高效可靠的云原生应用。
|
12月前
|
存储 运维 Kubernetes
容器数据保护:基于容器服务 Kubernetes 版(ACK)备份中心实现K8s存储卷一键备份与恢复
阿里云ACK备份中心提供一站式容器化业务灾备及迁移方案,减少数据丢失风险,确保业务稳定运行。
|
监控 Cloud Native Java
基于阿里云容器服务(ACK)的微服务架构设计与实践
本文介绍如何利用阿里云容器服务Kubernetes版(ACK)构建高可用、可扩展的微服务架构。通过电商平台案例,展示基于Java(Spring Boot)、Docker、Nacos等技术的开发、容器化、部署流程,涵盖服务注册、API网关、监控日志及性能优化实践,帮助企业实现云原生转型。
|
Kubernetes 容器
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(五)
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(五)
273 0
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(五)
|
Kubernetes 容器
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(四)
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(四)
238 0
KUBERNETES03_k8s对象是什么、如何管理、命名空间、代码自动补全提示(四)

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多