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.mzph.cn/diannao/9190.shtml

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

相关文章

5月9日作业

1&#xff0c;创建一对父子进程&#xff1a;父进程负责向文件中写入 长方形的长和宽子进程负责读取文件中的长宽信息后&#xff0c;计算长方形的面积。 1 #include <stdio.h> 2 #include <string.h> 3 #include <unistd.h> 4 #include <stdlib.h> 5 #…

Fortinet的安全愿景SASO概述

FTNT SASE的独特方法&#xff0c;使其成为一家适应性极强的厂商&#xff0c;能够应对不断变化的网络和网络安全环境。FTNT开发了一种名为Secure Access Service Omni&#xff08;SASO&#xff09;的变体&#xff0c;以更准确地反映FTNT在融合网络和安全功能方面的实力。我们预计…

【C++】string类的使用②(容量接口Capacity || 元素获取Element access)

&#x1f525;个人主页&#xff1a; Forcible Bug Maker &#x1f525;专栏&#xff1a; STL || C 目录 前言&#x1f525;容量接口&#xff08;Capacity&#xff09;size和lengthcapacitymax_sizereserveresizeclearemptyshrink_to_fit &#x1f525;元素获取&#xff08;Ele…

3D 打印为压铸行业的带来新动力

近年来&#xff0c;随着多家车企的积极引领&#xff0c;一体化压铸技术已逐渐成为汽车行业的一大趋势。该技术不仅简化了车身的制造流程&#xff0c;而且优化了供应链环节&#xff0c;成为汽车制造业中的一次创新&#xff0c;同时显著提升了经济效益。 压铸技术&#xff0c;简而…

【C++】学习笔记——stack和queue

文章目录 九、stack和queue1. stack和queue的介绍2. stack和queue的使用3. stack和queue的模拟实现4. deque的简单了解 未完待续 九、stack和queue 1. stack和queue的介绍 stack 就是我们常说的 栈 &#xff0c;而 queue 就是 队列 。栈就是 后进先出 的数据结构&#xff0c;队…

《大数据分析-数据仓库项目实战》学习笔记

目录 基本概念 数据仓库 数据仓库整体技术架构 数据仓库主题 数据集市 数据仓库的血缘关系 数据仓库元数据管理 数据仓库的指标 数据仓库维度概念 HDFS Flume Hadoop Kafka 数据仓库分层模型 Superset 即席查询 Sqoop Atlas元数据管理 项目需求描述 系统目标…

一天吃透Spring面试八股文

目录&#xff1a; Spring的优点Spring 用到了哪些设计模式&#xff1f;什么是AOP&#xff1f;AOP有哪些实现方式&#xff1f;Spring AOP的实现原理JDK动态代理和CGLIB动态代理的区别&#xff1f;Spring AOP相关术语Spring通知有哪些类型&#xff1f;什么是IOC&#xff1f;IOC的…

贪心算法--将数组和减半的最小操作数

本题是力扣2208---点击跳转题目 思路&#xff1a; 要尽快的把数组和减小&#xff0c;那么每次挑出数组中最大的元素减半即可&#xff0c;由于每次都是找出最值元素&#xff0c;可以用优先队列来存储这些数组元素 每次取出最值&#xff0c;减半后再放入优先队列中&#xff0c;操…

光峰科技2023年营收、净利润均双位数下滑,新一年延续?

近日&#xff0c;深圳光峰科技股份有限公司&#xff08;688007.SH&#xff0c;下称“光峰科技”&#xff09;对外公布了2023年和2024年一季度的经营“成绩单”。 透视财报不难看出&#xff0c;虽然光峰科技在降低成本、提振销售等层面下足了功夫&#xff0c;但受制于市场需求式…

JavaEE >> Spring MVC(1)

MVC MVC&#xff1a;Model View Controller 的缩写&#xff0c;是一种软件架构模式&#xff0c;将软件系统分为模型、视图和控制器三个部分。 Mode&#xff08;模型&#xff09;&#xff1a;是应⽤程序中⽤于处理应⽤程序数据逻辑的部分。通常模型对象负责在数据库中存取数据…

哈希题目总结

以下列举了可以用哈希方法&#xff08;包括但不限于用HashMap和HashSet&#xff09;的题目&#xff0c;实质上是把东西丢给这些数据结构去维护。请注意有些题目中用哈希是最优解&#xff0c;有些题目中不是最优解&#xff0c;可以自行探索其时间复杂度和空间复杂度的区别&#…

C++ 基础 输入输出

一 C 的基本IO 系统中的预定义流对象cin和cout: 输入流&#xff1a;cin处理标准输入&#xff0c;即键盘输入&#xff1b; 输出流&#xff1a;cout处理标准输出&#xff0c;即屏幕输出&#xff1b; 流&#xff1a;从某种IO设备上读入或写出的字符系列 使用cin、cout这两个流对…

什么是HTTP?

什么是HTTP&#xff1f; HTTP基本概念HTTP 是什么&#xff1f;HTTP 常见的状态码有哪些&#xff1f;HTTP 常见字段有哪些&#xff1f; HTTP特性HTTP/1.1 的优点有哪些&#xff1f;HTTP/1.1 的缺点有哪些&#xff1f; HTTP基本概念 HTTP 是什么&#xff1f; HTTP 是超文本传输…

设计模式(2)——工厂方法模式

目录 1. 摘要 2. 需求案例(设计一个咖啡店的点餐系统) 2.1 咖啡父类及其子类 2.2 咖啡店类与咖啡类的关系 3. 普通方法实线咖啡店点餐系统 3.1 定义Coffee父类 3.2 定义美式咖啡类继承Coffee类 3.3 定义拿铁咖啡继承Coffee类 3.4 定义咖啡店类 3.5 编写测试类 4. 简…

故障——蓝桥杯十三届2022国赛大学B组真题

问题分析 这道题纯数学&#xff0c;考察贝叶斯公式 AC_Code #include <bits/stdc.h> using namespace std; typedef pair<int,double> PI; bool cmp(PI a,PI b){if(a.second!b.second)return a.second>b.second;return a.first<b.first; } int main() {i…

Java毕设之基于springboot的医护人员排班系统

运行环境 开发语言:java 框架:springboot&#xff0c;vue JDK版本:JDK1.8 数据库:mysql5.7(推荐5.7&#xff0c;8.0也可以) 数据库工具:Navicat11 开发软件:idea/eclipse(推荐idea) 系统详细实现 医护类型管理 医护人员排班系统的系统管理员可以对医护类型添加修改删除以及…

2024年大学生三下乡社会实践活动投稿注意事项

随着2024年夏季的热浪一同涌来的,是我校一年一度的“大学生三下乡”社会实践活动。作为一名积极参与其中的大学生,我满怀激情地投身于这项旨在促进农村发展的公益行动中。然而,当活动圆满落幕,轮到我承担起向各大媒体投稿、传播实践成果的重任时,却遭遇了一系列意想不到的挑战,…

端口占用解决方法

1、查询端口 打开cmd命令提示符窗口&#xff0c;输入以下指令查询所有端口 netstat -ano //查询所有端口 netstat -ano|findstr 8080 //查询指定端口 2、杀死进程 taskkill /t /f /im 进程号(PID)

【Ansible】ansible-playbook剧本

playbook 是ansible的脚本 playbook的组成 1&#xff09;Tasks&#xff1a;任务&#xff1b;通过tasks 调用ansible 的模板将多个操作组织在一个playbook中运行 2&#xff09;Variables&#xff1a;变量 3&#xff09;Templates&#xff1a;模板 4&#xff09;Handles&#xf…

车载测试系列:入行车载测试分享

车载测试前景如何&#xff1f; 软件定义汽车时代的发展趋势&#xff0c;随着控制器自主开发力度的加强&#xff0c;作为V流程中必备环节&#xff0c;车载测试工程师岗位需求会越来越多&#xff1b;控制器集成化&#xff0c;功能集成程度越来越高&#xff0c;对于测试工程师的知…