千家信息网

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

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,《深入剖析Kubernetes - 09 从容器到容器云 谈谈Kubernetes的本质》kubeadm 简化部署操作,仅需要以下2个操作即可创建一个k8s 集群# 创建一个 Master 节点$ k
千家信息网最后更新 2025年02月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安全错误 数据库的锁怎样保障安全 服务器内存如何看型号 倾锦网络技术工作室是什么软件 mc服务器设管理员指令 cad服务器错误1053怎么办 linux服务器的类型 融天下互联网科技上海有限公司 网络安全威胁和消除办法 删数据库是不是犯法的 学术不端文献检测系统数据库 陕西5g服务器机柜虚拟主机 黄岛区微信公众号软件开发系统 口袋妖怪x神数据库 如何搭建我的世界服务器 数据库营业收入构成明细 安卓手机服务器请求失败 网络安全模式开启按什么 官兵使用手机网络安全 全球火力指数数据库 软件开发报价单组成明细 天津适合网络安全的公司 成都有哪些软件开发公司吗 wefor 数据库 奇亿云服务器 网络技术啥意思 倾锦网络技术工作室是什么软件 团省委网络安全宣传周 用数据库编写九九乘法表 无线上网卡的网络安全密钥 天龙八部风起汴京服务器开区时间 什么东西会存档在国家数据库呢
0