千家信息网

【读书笔记】10 Kubernetes一键部署利器 kubeadm

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,《深入剖析Kubernetes - 09 从容器到容器云 谈谈Kubernetes的本质》kubeadm 简化部署操作,仅需要以下2个操作即可创建一个k8s 集群# 创建一个 Master 节点$ k
千家信息网最后更新 2025年12月01日【读书笔记】10 Kubernetes一键部署利器 kubeadm

《深入剖析Kubernetes - 09 从容器到容器云 谈谈Kubernetes的本质》

kubeadm 简化部署操作,仅需要以下2个操作即可创建一个k8s 集群

# 创建一个 Master 节点$ kubeadm init# 将一个 Node 节点加入到当前集群中$ kubeadm join


k8s 每个组件都是一个独立的二进制文件,部署过程无非就是将二进制跟配置文件分布到指定机器,并通过脚本启停进程,这些工作在物理机时代完全可以通过saltstack 或者ansible 来完成,但后续运维成本会比较高,得自己实现进程监控,健康检查等等。

既然k8s 做服务编排,自然可以解决服务发现,服务注册,健康检查等功能。

具体方法是,master机器上 先手动在机器上安装kubeadm、kubelet、kubectl 这3个二进制文件;

而node 节点上面则只需要安装kubelet / kubeadm 然后通过kubeadm join 添加到集群内部即可

一、kubeadm init 工作流程

(1)检查机器环境是否满足

1、linux内核是否3.10 以上

2、cgroups 模块是否启用

3、hostname 是否符合标准(遵循DNS命名规则)

4、kubeadm 和 kubelet 版本是否匹配

5、是否已安装kubernetes 二进制文件

6、10250/10251/10252 等端口是否被占用

7、ip、mount 等指令是否存在

8、docker 是否安装

... ...


(2)生成kubernetes 对外提供服务所需证书和对应目录

默认放在/etc/kubernetes/pki 目录下

主要有ca.crt / ca.key

apiserver-kubelet-client.crt / apiserver-kubelet-client.key


(3)为master组件生成Pod 配置文件

即api-server、scheduler、controller-manager 以static-pod 方式部署

static-pod 允许将yaml 文件放在指定目录,在kubelet 启动时指定该目录,此时它会自动检查该目录并加载所有pod yaml文件并启动相应pod


为什么要用static pod?

刚创建集群的时候,上面并没有api-server 、kubectl ,无法创建相关的pod,故只能通过这种方式启动pod。

master 组件yaml文件生成目录为:/etc/kubernetes/manifests

ls /etc/kubernetes/manifests/etcd.yaml  kube-apiserver.yaml  kube-controller-manager.yaml  kube-scheduler.yaml


这里有个api-server.yaml 的例子:

apiVersion: v1kind: Podmetadata:  annotations:    scheduler.alpha.kubernetes.io/critical-pod: ""  creationTimestamp: null  labels:    component: kube-apiserver    tier: control-plane  name: kube-apiserver  namespace: kube-systemspec:  containers:  - command:    - kube-apiserver    - --authorization-mode=Node,RBAC    - --runtime-config=api/all=true    - --advertise-address=10.168.0.2    ...    - --tls-cert-file=/etc/kubernetes/pki/apiserver.crt    - --tls-private-key-file=/etc/kubernetes/pki/apiserver.key    image: k8s.gcr.io/kube-apiserver-amd64:v1.11.1    imagePullPolicy: IfNotPresent    livenessProbe:      ...    name: kube-apiserver    resources:      requests:        cpu: 250m    volumeMounts:    - mountPath: /usr/share/ca-certificates      name: usr-share-ca-certificates      readOnly: true    ...  hostNetwork: true  priorityClassName: system-cluster-critical  volumes:  - hostPath:      path: /etc/ca-certificates      type: DirectoryOrCreate    name: etc-ca-certificates  ...


通过这么一个yaml配置文件,告诉k8s 创建相应的api object , 这个api对象定义参考上述yaml 文件


(4)为该集群生成bootstrap token

供worknode 节点 通过kubeadm join 加入到该集群


(5)安装默认插件

例如kube-proxy / dns (以容器的方式部署)


二、kubeadm join 工作流程

为了方便部署操作,不需要手动从master 上面拷贝证书到每台worknode , kubeadm 至少需要发起一次"不安全模式" 的访问到api-server,从而拿到保存在configmap中的cluster-info,而bootstrap token 扮演的就是这个过程中安全验证的角色。


三、指定kubeadm 部署参数

$ kubeadm init --config kubeadm.yaml

在kubeadm.yaml 配置文件中定义

PS:kubeadm 的不足之处在于,它并没有解决像etcd 、master 等组件的高可用部署,而是单点部署。


文件 目录 集群 二进制 机器 组件 节点 服务 检查 生成 配置 容器 方式 工作 健康 安全 就是 工作流程 流程 证书 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 盲盒的软件开发商 数据中心的服务器品牌 软件系统及互联网科技学科 六点网络安全知识 如何做好智慧城市的网络安全建设 公益网络技术网站 人社业务与数据库的连接应用功能 网络安全法 网信 应用技术数据库 江西有口碑的软件开发发展现状 天津通用软件开发配置 可以搭建服务器的单机游戏 青浦区网络技术服务质量保证 自考面向对象数据库技术真题 苏州未未和来来互联网科技 软件开发 买台式机 数据库物理结构怎么写 开发板做php服务器 上海工业软件开发预算 400字的网络安全学习笔记 jsp连接数据库是失败 阿里云服务器宝塔防攻击 数据库原理与应用教程尹志宁郭晴主编 智能管理软件开发工具 滁州通信软件开发需要多少钱 sql数据库入门基础知识 服务器内的电路是什么电路 易语言数据库如何删除字段 索引和数据库技术 怎么删除hive仓库的数据库
0