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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 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 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1月前
|
Kubernetes 微服务 容器
Aspire项目发布到远程k8s集群
Aspire项目发布到远程k8s集群
406 2
Aspire项目发布到远程k8s集群
|
1月前
|
Kubernetes Cloud Native 微服务
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
219 3
|
5天前
|
存储 Kubernetes 监控
Kubernetes 集群的持续性能优化策略
【5月更文挑战第70天】 随着容器化技术的普及,Kubernetes 已成为管理微服务架构的首选平台。然而,在大规模部署和长期运行过程中,集群往往会遭遇性能瓶颈,影响服务的响应速度和稳定性。本文将探讨针对 Kubernetes 集群的性能优化策略,包括资源调度优化、网络延迟降低、存储效率提升及监控与日志分析等方面,旨在为运维工程师提供一套系统化的持续优化方法,确保集群性能的长期稳定。
|
17天前
|
Kubernetes 网络协议 Docker
k8s 开船记-故障公告:自建 k8s 集群在阿里云上大翻船
k8s 开船记-故障公告:自建 k8s 集群在阿里云上大翻船
|
17天前
|
Kubernetes Ubuntu jenkins
超详细实操教程!在现有K8S集群上安装JenkinsX,极速提升CI/CD体验!
超详细实操教程!在现有K8S集群上安装JenkinsX,极速提升CI/CD体验!
|
17天前
|
Kubernetes 应用服务中间件 nginx
K8s高可用集群二进制部署-V1.20
2.4 部署Etcd集群 以下在节点1上操作,为简化操作,待会将节点1生成的所有文件拷贝到节点2和节点3. 1. 创建工作目录并解压二进制包 mkdir /opt/etcd/{bin,cfg,ssl} -p tar zxvf etcd-v3.4.9-linux-amd64.tar.gz mv etcd-v3.4.9-linux-amd64/{etcd,etcdctl} /opt/etcd/bin/
|
23天前
|
Kubernetes 算法 API
K8S 集群认证管理
【6月更文挑战第22天】Kubernetes API Server通过REST API管理集群资源,关键在于客户端身份认证和授权。
|
1月前
|
Kubernetes 数据处理 调度
天呐!部署 Kubernetes 模式的 Havenask 集群太震撼了!
【6月更文挑战第11天】Kubernetes 与 Havenask 集群结合,打造高效智能的数据处理解决方案。Kubernetes 如指挥家精准调度资源,Havenask 快速响应查询,简化复杂任务,优化资源管理。通过搭建 Kubernetes 环境并配置 Havenask,实现高可扩展性和容错性,保障服务连续性。开发者因此能专注业务逻辑,享受自动化基础设施管理带来的便利。这项创新技术组合引领未来,开启数据处理新篇章。拥抱技术新时代!
|
1月前
|
Kubernetes 前端开发 Serverless
Serverless 应用引擎产品使用合集之如何调用Kubernetes集群内服务
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
17天前
|
前端开发 Devops 测试技术
阿里云云效产品使用问题之更换所部署的环境关联的ACK集群该如何实现
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。

推荐镜像

更多