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

🏷️个人主页:牵着猫散步的鼠鼠 

🏷️系列专栏:Kubernetes渐进式学习-专栏

🏷️个人学习笔记,若有缺误,欢迎评论区指正 

目录

1. 前言

2. 集群搭建方式

3. 环境说明

4. 利用kubeadm初始化Master结点

4.1. 初始操作

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

4.3. 部署Kubernetes Master结点

5. 总结 


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=0gpgkey=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.6systemctl 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网络插件,实现不同结点间的相互通信。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/681523.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【强训笔记】day14

NO.1 思路&#xff1a;用一个哈希表&#xff0c;先遍历s1&#xff0c;统计哈希表内的字符个数&#xff0c;在遍历s2&#xff0c;s2中的字符在哈希表中减去&#xff0c;如果哈希表中的字符个数小于0那么就输出No。 代码实现&#xff1a; #include <iostream> #include&…

文件名长度调整:指定文件重命名长度,优化你的文件存储体验

在数字时代&#xff0c;文件存储和管理是我们日常生活和工作中不可或缺的一部分。然而&#xff0c;随着文件数量的增加&#xff0c;文件名长度的管理变得尤为重要。合理的文件名长度不仅可以提高文件检索的效率&#xff0c;还能优化整体的存储体验。 为什么文件名长度很重要&am…

【UnityRPG游戏制作】Unity_RPG项目_玩法相关※

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;就业…

使用DBeaver连接postgreSql提示缺少驱动

重新安装电脑之后用dbeaver链接数据库的时候&#xff0c;链接PG库一直提示缺少驱动&#xff0c;当选择下载驱动的时候又非常非常慢经常失败&#xff0c;尝试了一下更改源然后下载库驱动就非常快了&#xff0c;当然也包括dbeaver的自动更新。 方法&#xff1a;点击菜单栏【窗口…

Golang 开发实战day13 - Reciver Functions

&#x1f3c6;个人专栏 &#x1f93a; leetcode &#x1f9d7; Leetcode Prime &#x1f3c7; Golang20天教程 &#x1f6b4;‍♂️ Java问题收集园地 &#x1f334; 成长感悟 欢迎大家观看&#xff0c;不执着于追求顶峰&#xff0c;只享受探索过程 Golang 开发实战day13 - 接收…

Rust 通用代码生成器莲花,红莲尝鲜版二十三,多对多候选,增强数据库反射项目功能

Rust 通用代码生成器莲花&#xff0c;红莲尝鲜版二十三&#xff0c;此版本新增了多对多候选功能&#xff0c;增强了数据库自动反射功能和模板向导的编辑器。请部署在 Tomcat9 的 webapps 目录下。 多对多候选功能大大增强了一个数据库自动反射成一个项目的功能&#xff0c;它可…

手机端如何生成gif?一个方法在线转换gif

当我们看到网络上好看个性的gif动画表情包的时候是不是也很想自己制作呢&#xff1f;很多小伙伴都不知道要怎么在手机上制作gif动图吧&#xff01;下面&#xff0c;给大家分享一款操作简单无需下载的动态图片在线制作&#xff08;https://www.gif.cn/&#xff09;的操作工具&am…

高端建站和普通建站有哪些不同

高端建站与普通建站之间存在着显著的差异&#xff0c;从设计到功能、用户体验以及服务质量等各个方面都有所区别。以下是高端建站和普通建站的不同之处&#xff1a; ### 1. 设计质量 - **高端建站**&#xff1a;注重精美、独特的设计风格&#xff0c;通常由专业设计师团队负责。…

深入理解网络原理5----HTTP协议

文章目录 一、HTTP协议格式二、HTTP请求2.1 URL 基本格式2.2 URL encode2.3 "方法" (method)2.4 认识请求 "报头" (header) 三、HTTP 响应3.1 "状态码" (status code) 四、HTPPS工作过程&#xff08;经典面试题&#xff09; 提示&#xff1a;以下…

Vue+OpenLayers7入门到实战:OpenLayers解析通过fetch请求的GeoJson格式数据,并叠加要素文字标注,以行政区划边界为例

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7入门到实战 前言 本章介绍如何使用OpenLayers7在地图上通过fetch请求geojson数据,然后通过OpenLayers解析为Feature要素叠加到图层上,并且通过动态设置标注方式显示要素属性为文字标注。 本章还是以行政区划边界为例,这个…

『FPGA通信接口』DDR(4)DDR3内存条SODIMMs读写测试

文章目录 前言1.MIG IP核配置2.测试程序3.DDR应用4.传送门 前言 不论是DDR3颗粒还是DDR3内存条&#xff0c;xilinx都是通过MIG IP核实现FPGA与DDR的读写。本文区别于DDR颗粒&#xff0c;记录几个与颗粒配置不同的地方。关于DDR的原理与MIG IP的简介&#xff0c;请查看前面文章&…

基于PHP高考志愿填报系统搭建私有化部署源码

金秋志愿高考志愿填报系统是一款为高中毕业生提供志愿填报服务的在线平台。该系统旨在帮助学生更加科学、合理地选择自己的大学专业和学校&#xff0c;从而为未来的职业发展打下坚实的基础。 该系统的主要功能包括:报考信息查询、志愿填报数据指导、专业信息查询、院校信息查询…