文章目录
Kubernetes 部署方式
常见的K8S安装部署方式
- Minikube
- 用途:用于本地快速运行一个单节点微型K8S,适合学习、预览K8S特性。
- 部署地址:https://kubernetes.io/docs/setup/minikube
- Kubeadm
- 用途:提供
kubeadm init和kubeadm join命令,用于快速部署K8S集群,相对简单。 - 文档地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/
- 用途:提供
- 二进制安装部署
- 用途:生产首选,从官方下载发行版的二进制包,手动部署每个组件和自签TLS证书,组成K8S集群。
- 下载地址:https://github.com/kubernetes/kubernetes/releases
- 备注:虽然手动部署较麻烦,但期间可以学习很多工作原理,也利于后期维护。
总结:
- Minikube:适合本地学习和预览K8S特性。
- Kubeadm:部署简单,适合快速搭建K8S集群,但管理难度较大,故障恢复速度较慢。
- 二进制部署:部署复杂,但管理方便,集群伸展性能好,稳定性高,适合生产环境。
Kubeadm与二进制部署的区别
- 二进制部署
- 部署难度:难
- 管理方便性:方便
- 集群伸展性能:好
- 稳定性:集群规模到达一定规模(几百个节点、上万个Pod)时,二进制部署的稳定性高于kubeadm。
- 故障恢复:宿主机起来后,进程也会自动起来,恢复速度快。
- Kubeadm部署
- 部署难度:简单
- 管理方便性:难
- 部署方式:以容器管理容器的方式部署组件及服务。
- 故障恢复:恢复速度比二进制慢,因为需要先启动宿主机,再启动进程,最后启动容器,集群才能恢复。
Kubernetes部署安装
环境配置
| 节点名称 | IP地址 | 托管服务/组件 |
|---|---|---|
| k8s集群master01 | 20.0.0.10 | kube-apiserver, kube-controller-manager, kube-scheduler, etcd |
| k8s集群master02 | 20.0.0.66 | (备用master) |
| k8s集群node01 | 20.0.0.58 | kubelet, kube-proxy, docker, etcd |
| k8s集群node02 | 20.0.0.59 | kubelet, kube-proxy, docker, etcd |
| etcd集群节点1 | 20.0.0.10 | etcd |
| etcd集群节点2 | 20.0.0.58 | etcd |
| etcd集群节点3 | 20.0.0.59 | etcd |
Kubernetes集群初始化配置(实验环境)
一、操作系统初始化配置
-
关闭防火墙
- 停止并禁用
firewalld服务。 - 清除所有iptables规则。
systemctl stop firewalld systemctl disable firewalld iptables -F && iptables -t nat -F && iptables -t mangle -F && iptables -X - 停止并禁用
-
关闭SELinux
- 临时关闭SELinux。
- 永久修改
/etc/selinux/config文件,将SELinux设置为disabled。
setenforce 0 sed -i 's/enforcing/disabled/' /etc/selinux/config -
关闭Swap
- 临时关闭Swap。
- 永久禁用Swap,修改
/etc/fstab文件,注释掉Swap相关行。
swapoff -a sed -ri 's/.*swap.*/#&/' /etc/fstab -
设置主机名
- 根据规划,使用
hostnamectl命令设置各节点的主机名。
hostnamectl set-hostname [主机名] - 根据规划,使用
-
添加Hosts
- 在
master节点上,编辑/etc/hosts文件,添加集群内其他节点的IP和主机名映射。
cat >> /etc/hosts << EOF 20.0.0.10 master01 20.0.0.58 node01 20.0.0.59 node02 EOF - 在
-
调整内核参数
- 创建
/etc/sysctl.d/k8s.conf文件,添加必要的内核参数配置。 - 应用配置。
cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv6.conf.all.disable_ipv6=1 net.ipv4.ip_forward=1 EOF sysctl --system - 创建
-
时间同步
- 安装
ntpdate工具。 - 使用
ntpdate同步时间。
yum install ntpdate -y ntpdate time.windows.com - 安装
二、部署Docker引擎
-
安装依赖
- 在所有
node节点上,安装yum-utils、device-mapper-persistent-data和lvm2。
yum install -y yum-utils device-mapper-persistent-data lvm2 - 在所有
-
添加Docker仓库
- 使用
yum-config-manager添加Docker的官方仓库。
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo - 使用
-
安装Docker
- 安装Docker CE、Docker CE CLI和
containerd.io。
yum install -y docker-ce docker-ce-cli containerd.io - 安装Docker CE、Docker CE CLI和
-
配置Docker
- 创建
/etc/docker目录。 - 在
/etc/docker/daemon.json文件中添加Docker的配置,包括镜像加速器、Cgroup Driver等。
mkdir /etc/docker cat > /etc/docker/daemon.json <<EOF { "registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com", "https://docker.m.daocloud.io", "https://docker.1panel.live"], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "1g", "max-file": "3" } } EOF - 创建
-
启动并启用Docker服务
- 启动Docker服务。
- 设置Docker服务开机自启。
systemctl start docker.service systemctl enable docker.service -
验证Docker配置
- 使用
docker info命令检查Cgroup Driver是否配置正确。
docker info | grep "Cgroup Driver" Cgroup Driver: systemd - 使用
------------------------------ 部署 etcd 集群 ------------------------------
etcd是一个分布式键值存储系统,用于在分布式系统中保存配置信息、元数据以及关键的共享状态。它是一个开源项目,最初由CoreOS开发并维护,现在由CNCF托管。etcd的设计目标是提供可靠的分布式存储,以支持分布式系统的一致性和高可用性。
关键特性:
- 分布式存储:etcd的数据存储是分布式的,可以跨多个节点进行分布,确保高可用性和可扩展性。
- 强致性:etcd提供强一致性的保证,确保在集群中的所有节点都能看到相同的数据视图。
- 轻量级:etcd采用轻量级的Raft一致性算法,以确保集群中的节点之间达成一致,同时保持相对较低的性能开销。
- API支持:etcd提供简单而强大的HTTP+JSON API,使得开发人员可以轻松地与其进行交互,并集成到各种应用和工具中。
- Watch机制:etcd支持Watch机制,允许客户端监视特定键的变化,并在数据发生变更时得到通知。
- 安全性:etcd支持SSL/TLS加密,以保障数据在传输过程中的安全性,并提供基于角色的访问控制。
应用场景:
- 配置管理: etcd常用于存储应用程序和系统的配置信息,允许动态地更新配置而无需重启应用。
- 服务发现: etcd可以用作服务发现的后端存储,帮助服务在动态环境中找到彼此。
- 分布式锁: 通过etcd的分布式锁机制,可以实现分布式系统中的协同工作和资源同步。
- 集群协调: etcd在构建分布式系统中,作为集群协调的关键组件,确保系统的一致性和稳定性。
总体而言,etcd在云原生应用和分布式系统中发挥着重要作用,提供了可靠的分布式存储和协调服务,为应用程序提供一致性、可靠性和高可用性的基础设施支持。
etcd 目前默认使用2379端口提供HTTP API服务, 2380端口和peer通信(这两个端口已经被IANA(互联网数字分配机构)官方预留给etcd)。 即etcd默认使用2379端口对外为客户端提供通讯,使用端口2380来进行服务器间内部通讯。
etcd 在生产环境中一般推荐集群方式部署。由于etcd 的leader选举机制,要求至少为3台或以上的奇数台。
---------- 准备签发证书环境 ----------
CFSSL 是 CloudFlare 公司开源的一款 PKI/TLS 工具。 CFSSL 包含一个命令行工具和一个用于签名、验证和捆绑 TLS 证书的 HTTP API 服务。使用Go语言编写。
CFSSL 使用配置文件生成证书,因此自签之前,需要生成它识别的 j


1639

被折叠的 条评论
为什么被折叠?



