Kubernetes学习-集群搭建篇(一) 搭建Master结点

简介: Kubernetes学习-集群搭建篇(一) 搭建Master结点

image.png

1. 前言

我们在前面的几篇文章中讲解了Kubernetes的相关概念,接下来我们进入实战,从零搭建Kubernetes集群

2. 集群搭建方式

Kubernetes集群的搭建方式主要有以下几种:

1.kubeadm

优点

  • 易于使用:kubeadm提供了简单的命令行工具来初始化和管理Kubernetes集群。
  • 社区支持:由于是官方提供的工具,因此有广泛的社区支持和文档。
  • 版本控制:可以轻松升级和降级Kubernetes版本。
  • 自定义:支持自定义配置,可以根据需求调整集群设置。
  • 缺点
  • 生产就绪:默认配置可能不适合生产环境,需要额外的配置和调优。
  • 学习曲线:对于新手来说,可能需要一定时间来理解和学习kubeadm的工作原理。

2.Minikube

  • 优点
  • 易于启动:适合快速启动一个本地的Kubernetes环境进行开发和测试。
  • 无需外部依赖:可以在个人电脑上运行,不需要额外的物理或虚拟机。
  • 缺点
  • 单节点:仅适用于单节点集群,不适合生产环境。
  • 功能有限:某些Kubernetes功能可能无法在Minikube中完全支持。

3.Kind (Kubernetes in Docker)

  • 优点
  • 快速部署:可以在Docker容器中运行Kubernetes集群,非常适合本地开发和测试。
  • 无需虚拟机:与Minikube类似,Kind也不需要额外的虚拟机。
  • 缺点
  • Docker依赖:依赖于Docker环境,不支持其他容器运行时。
  • 同样适用于单节点环境,不适合生产部署。

4.手动搭建

  • 优点
  • 完全控制:可以完全自定义集群的每个组件和配置。
  • 理解深入:通过手动搭建,可以更深入地理解Kubernetes的内部结构和组件交互。
  • 缺点
  • 复杂性:手动搭建过程复杂,容易出错。
  • 维护困难:升级和故障排查需要更多的手工操作。

5.自动化工具(如Ansible, Terraform)

  • 优点
  • 自动化:可以自动化集群的部署和配置过程,减少人为错误。
  • 可重复:脚本可以重复使用,便于管理多个集群。
  • 缺点
  • 学习成本:需要学习额外的工具和脚本语言。
  • 维护脚本:随着集群的变化,脚本可能需要更新和维护。

6.托管服务(如GKE, EKS, AKS)

  • 优点
  • 管理简单:云提供商管理Kubernetes的控制平面,用户只需管理工作节点。
  • 高可用:通常提供高可用性和自动扩展功能。
  • 与云服务集成:与云提供商的其他服务(如存储、网络)集成良好。
  • 缺点
  • 成本:可能需要支付额外的费用。
  • 云提供商依赖:锁定到特定的云提供商。

每种搭建方式都有其适用场景和优缺点。选择哪种方式取决于你的需求、资源、技能和预算。对于学习和测试环境,我们采用kubeadm来搭建集群

3. 环境说明

  • 操作系统:CentOs7.6
  • Docker:20+
  • k8s:1.23.6
  • 主节点云服务器:4H8G
  • 从节点云服务器:4H4G


云服务器最低配置推荐:2核,2G内存,20G硬盘,学习的话购买2H2G的就够用啦

4. 利用kubeadm初始化Master结点

4.1. 初始操作

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

关闭 selinux

sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
setenforce 0  # 临时

关闭swap,关闭完swap后要重启一遍机器!

swapoff -a  # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab    # 永久

根据规划设置主机名

hostnamectl set-hostname 这里填你的主机名(随便起,比如k8s-master)

在master添加hosts配置

cat >> /etc/hosts << EOF
192.168.113.120 k8s-master
192.168.113.121 k8s-node1
192.168.113.122 k8s-node2
EOF

将桥接的IPv4流量传递到iptables的链

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

让上述配置生效

sysctl --system

同步机器时间

yum install ntpdate -y
ntpdate time.windows.com

4.2 安装基础软件(全部结点都要安装)

安装docker(使用官方的自动脚本)

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

启动docker

sudo systemctl start docker

添加阿里云镜像源

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

安装kubeadm、kubelet、kubectl

yum install -y kubelet-1.23.6 kubeadm-1.23.6 kubectl-1.23.6
 
systemctl enable kubelet

配置关闭 Docker 的 cgroups(不关闭后面启动会报错),修改 /etc/docker/daemon.json(如果没有这个文件就手动创建),加入以下内容

{"exec-opts": ["native.cgroupdriver=systemd"]}

重启docker

systemctl daemon-reload
systemctl restart docker

4.3. 部署Kubernetes Master结点

初始化master结点,其中apiserver-advertise-address改为自己的公网地址即可

kubeadm init \
      --apiserver-advertise-address=192.168.113.120 \
      --image-repository registry.aliyuncs.com/google_containers \
      --kubernetes-version v1.23.6 \
      --service-cidr=10.96.0.0/12 \
      --pod-network-cidr=10.244.0.0/16

初始化成功会提示control-plane has initialized successfully!

如果遇到如下报错,提示端口被占用


可输入kubeadm reset指令清除上次初始化生成的配置,再次调用init初始化即可

安装成功后,复制如下配置并执行

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

输入kubectl get nodes来测试结点是否配置启动成功,如果显示下述信息,那么代表你master已经启动好啦~

5. 总结

本次我们先简单的搭建了Master结点,下一次我们将继续部署从节点,并部署CNI网络插件,实现不同结点间的相互通信。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务&nbsp;ACK 容器服务&nbsp;Kubernetes&nbsp;版(简称&nbsp;ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
相关文章
|
5天前
|
Kubernetes 微服务 容器
Aspire项目发布到远程k8s集群
Aspire项目发布到远程k8s集群
34 2
Aspire项目发布到远程k8s集群
|
9天前
|
存储 运维 监控
Kubernetes 集群监控与日志管理实践
【5月更文挑战第28天】在微服务架构日益普及的当下,容器编排工具如 Kubernetes 已成为运维工作的核心。有效的集群监控和日志管理是确保系统稳定性和服务可靠性的关键。本文将深入探讨 Kubernetes 集群的监控策略,以及如何利用现有的工具进行日志收集、存储和分析,以实现对集群健康状况的实时掌握和问题快速定位。
|
10天前
|
存储 监控 Kubernetes
Kubernetes 集群监控与日志管理实践
【5月更文挑战第27天】 在微服务架构日益普及的当下,容器化技术与编排工具如Kubernetes已成为现代云原生应用的基石。然而,随着集群规模的不断扩大和复杂性的增加,如何有效监控和管理这些动态变化的服务成为了维护系统稳定性的关键。本文将深入探讨Kubernetes环境下的监控策略和日志管理的最佳实践,旨在为运维人员提供一套系统的解决思路,确保应用性能的最优化和问题的快速定位。
|
6天前
|
运维 Kubernetes 调度
【kubernetes】关于k8s集群的污点、容忍、驱逐以及k8s集群故障排查思路
【kubernetes】关于k8s集群的污点、容忍、驱逐以及k8s集群故障排查思路
|
7天前
|
Kubernetes 微服务 容器
Aspire项目发布到win11本地k8s集群
Aspire项目发布到win11本地k8s集群
15 0
Aspire项目发布到win11本地k8s集群
|
7天前
|
运维 Prometheus 监控
Kubernetes 集群的监控与维护策略
【5月更文挑战第30天】 在微服务架构日益普及的背景下,容器编排工具如Kubernetes成为确保服务高效运行的关键。本文聚焦于Kubernetes集群的监控和维护,首先探讨了监控系统的重要性及其对集群健康的影响,随后详细介绍了一套综合监控策略,包括节点性能监控、应用服务质量跟踪以及日志管理等方面。此外,文章还提出了一系列实用的集群维护技巧和最佳实践,旨在帮助运维人员预防故障发生,快速定位问题,并确保集群长期稳定运行。
|
7天前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与日志管理实践深入理解PHP的命名空间与自动加载机制
【5月更文挑战第30天】 在容器化和微服务架构日益普及的背景下,Kubernetes 已成为众多企业的首选容器编排工具。然而,随之而来的挑战是集群的监控与日志管理。本文将深入探讨 Kubernetes 集群监控的最佳实践,包括节点资源使用情况、Pods 健康状态以及网络流量分析等关键指标的监控方法。同时,我们也将讨论日志聚合、存储和查询策略,以确保快速定位问题并优化系统性能。文中将介绍常用的开源工具如 Prometheus 和 Fluentd,并分享如何结合这些工具构建高效、可靠的监控和日志管理系统。
|
7天前
|
Prometheus 监控 Kubernetes
Kubernetes 集群的监控与维护最佳实践
【5月更文挑战第30天】 在现代云计算环境中,容器编排工具如Kubernetes已成为部署和管理微服务的关键。随着其日益广泛的应用,对集群进行有效的监控和维护显得尤为重要。本文将深入探讨Kubernetes集群监控的策略,并分享维护的最佳实践,以确保系统的稳定性和性能优化。我们将从监控工具的选择、关键指标的跟踪到故障排除流程等方面进行详细阐述,并提供实用的操作建议。
|
7天前
|
存储 运维 Kubernetes
Kubernetes 集群的持续性能优化策略
【5月更文挑战第30天】 在动态且日益复杂的云计算环境中,保持 Kubernetes 集群的高性能和稳定性是一个持续的挑战。本文将探讨一系列实用的性能优化策略,旨在帮助运维专家识别并解决可能影响集群性能的问题。我们将从节点资源配置、网络优化、存储管理以及集群监控等方面入手,提供一系列经过实践检验的调优技巧,并分享最佳实践案例。这些策略不仅有助于提升现有集群的性能,也为规划新的 Kubernetes 部署提供了参考依据。
|
8天前
|
运维 Kubernetes 监控
Kubernetes 集群的持续性能优化实践
【5月更文挑战第30天】 在动态且日益复杂的云原生环境中,维持 Kubernetes 集群的高性能运行是一个持续的挑战。本文将探讨一系列针对性能监控、问题定位及优化措施的实践方法,旨在帮助运维专家确保其 Kubernetes 环境能够高效、稳定地服务于不断变化的业务需求。通过深入分析系统瓶颈,我们不仅提供即时的性能提升方案,同时给出长期维护的策略建议,确保集群性能的可持续性。

推荐镜像

更多