Kubeadm搭建kubernetes(k8s)集群

news2024/11/29 0:33:27

目录

一、集群介绍

1、集群搭建方法

二、集群部署

环境配置

所有节点,关闭防火墙规则,关闭selinux,关闭swap交换 

node02(192.168.137.30) 

node01(192.168.137.20) ​编辑

master(192.168.137.10) ​编辑

修改主机名,并添加主机映射 

调整内核参数 

​编辑所有节点安装Docker

所有节点配置K8S源

部署 kubernetes Master 节点(master 节点上执行)

执行以下命令可使用kubectl管理工具

k8s-node 节点加入 master 节点(两个 node 执行) 

添加网络插件

给node添加标签

master检查

再次查询服务是否正常

测试K8s集群,在集群中创建pod,验证是否能正常运行

测试一下,master和node都能通过自己的IP的31757端口去访问


一、集群介绍

1、集群搭建方法

目前生产部署Kubernetes 集群主要有两种方式:

①、Kubeadm

Kubeadm是一个K8s 部署工具,提供 kubeadm init 和 kubeadm join,用于快速部署Kubernetes 集群。

②、二进制包

从github 下载发行版的二进制包,手动部署每个组件,组成Kubernetes 集群。

Kubeadm 降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可控,推荐使用二进制包部署Kubernetes 集群,虽然手动部署麻烦点,期间可以学习很多工作原理,也利于后期维护。

二、集群部署

在所有节点上安装Docker和kubeadm
部署Kubernetes Master
部署容器网络插件
部署 Kubernetes Node,将节点加入Kubernetes集群中
部署 Dashboard Web 页面,可视化查看Kubernetes资源

环境配置

服务器类型I地址
master192.168.137.10
nodeo1192.168.137.20
node02192.168.137.30

所有节点,关闭防火墙规则,关闭selinux,关闭swap交换 

#所有节点,关闭防火墙规则,关闭selinux,关闭swap交换
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
swapoff -a		#交换分区必须要关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab	#永久关闭swap分区,&符号在sed命令中代表上次匹配的结果
free -g         #查看交换分区
 
注:这里只用一台机子做展示

node02(192.168.137.30) 

node01(192.168.137.20) 

master(192.168.137.10) 

修改主机名,并添加主机映射 

cat >> /etc/hosts << EOF
192.168.137.10 master
192.168.137.20 node1
192.168.137.30 node2
EOF

调整内核参数 

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

#调整内核参数
 
cat > /etc/sysctl.d/kubernetes.conf << EOF
#开启网桥模式,可将网桥的流量传递给iptables链
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
EOF
 
#加载参数
sysctl --system  
 
注:这里只用一台机子做展示

所有节点安装Docker

yum install -y yum-utils device-mapper-persistent-data lvm2 
cd /etc/yum.repos.d/
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
 
yum install -y docker-ce
 
systemctl start docker
systemctl enable docker
 
vim /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"]
}
systemctl daemon-reload
systemctl restart docker
 
##安装方法之前博客有具体描述,这里就不显示出来了

所有节点配置K8S源

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
#安装软件
yum install -y kubelet-1.21.3 kubeadm-1.21.3 kubectl-1.21.3
systemctl enable kubelet
systemctl start kubelet

部署 kubernetes Master 节点(master 节点上执行)

kubeadm init --apiserver-advertise-address=192.168.137.10 --image-repository registry.cn-hangzhou.aliyuncs.com/google_containers --kubernetes-version v1.21.3 --service-cidr=10.125.0.0/16 --pod-network-cidr=10.150.0.0/16

执行以下命令可使用kubectl管理工具

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

k8s-node 节点加入 master 节点(两个 node 执行) 

 ps:加入集群的命令中的token==有效期为24小时==,若过期,需要重新申请token

#生成token
kubeadm token create
#查看token
kubeadm token list  | awk -F" " '{print $1}'
#获取CA公钥的hash值
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed  's/^ .* //'

添加网络插件

######################网络添加############################
#添加
kubectl apply -f \
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#删除
kubectl delete -f \
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
######################weget下载##########################
wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
#更改配置文件
vim kube-flannel.yml
#将IP更改为master节点制作时的IP地址
 84       "Network": "10.150.0.0/16"
#添加插件
kubectl apply -f + kube-flannel.yml的路径

给node添加标签

kubectl label node node1 node-role.kubernetes.io/node=node
kubectl label node node2 node-role.kubernetes.io/node=node
#获取节点信息
kubectl get nodes

master检查

#查询master是否正常 
kubectl get cs 
#若为unhealthy 
vim /etc/kubernetes/manifests/kube-scheduler.yaml 
vim /etc/kubernetes/manifests/kube-controller-manager.yaml
 #将- --port=0注释掉

再次查询服务是否正常

#查询所有pod是否正常运行 
kubectl get pods -A 
#查询master是否正常 
kubectl get cs 
#查询node节点是否ready 
kubectl get nodes

测试K8s集群,在集群中创建pod,验证是否能正常运行

测试一下,master和node都能通过自己的IP的31757端口去访问

 

 

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

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

相关文章

单链表经典例题

LeetCode题解移除链表元素反转链表合并两个有序链表移除链表元素 题目描述&#xff1a; ➡️挑战链接⬅️、 分析&#xff1a; 该题是要求我们删除指定元素&#xff0c;那么我们就定义一个cur指针去遍历整个链表就好了&#xff0c;每当我们遇到cur->valval;等于特定值的时…

【PTA-训练day3】L2-014 列车调度 + L1-009 N个数求和

目录 L2-014 列车调度 - 二分贪心 1、java版 - 运行超时 2、c版 L1-010 比较大小 - 10 L1-015 跟奥巴马一起画方块 - 15 L1-009 N个数求和 - 20 java 欧几里得求最大公约数gcd L2-014 列车调度 - 二分贪心 PTA | 程序设计类实验辅助教学平台 如果当前序号比火车队列末…

最流行的 6 款 Python 解释器

有人说&#xff1a;一个人从1岁活到80岁很平凡&#xff0c;但如果从80岁倒着活&#xff0c;那么一半以上的人都可能不凡。 生活没有捷径&#xff0c;我们踩过的坑都成为了生活的经验&#xff0c;这些经验越早知道&#xff0c;你要走的弯路就会越少。 Python 是最流行的编程语言…

双向长短期记忆网络(BiLSTM)详解

双向长短期记忆网络&#xff08;BiLSTM&#xff09;详解 一、前言 在学习BiLSTM之前&#xff0c;首先需要对RNN和LSTM有一定的了解&#xff0c;可以参考本人的博客&#xff1a;详细讲解RNNLSTMTree_LSTM&#xff08;Tree-Long Short Term Memory&#xff09;基于树状长短期记忆…

22、短信登录(隐藏用户的敏感信息)

短信登录&#xff08;隐藏用户的敏感信息&#xff09; 我们返回给前端的信息太多了 问题&#xff1a;为什么我们这里全返回了呢&#xff1f; 我们这里是直接从userHoler里获取用户后就直接返回。 所以我们冲userHoler里取出来的信息就是完整的。 2、userHoler从哪里来&#x…

RSA与AES加密

目录 一、非对称加密和RSA 1.非对称秘钥 2.RSA加密的核心 3.Python中实现RSA加密解密 二、HTTPS通信过程 三、对称加密和AES 1.AES简介 2.Python中实现AES加解密 一、非对称加密和RSA 1.非对称秘钥 https://blog.csdn.net/gao131360144/article/details/79966094HTTPS&…

北理工嵩天Python语言程序设计笔记(6 函数和代码复用)

前言 本文是对《北理工 嵩天/黄天宇/礼欣 Python语言程序设计》的学习笔记&#xff0c;供自己查阅使用。 文章目录 北理工嵩天Python语言程序设计笔记&#xff08;目录&#xff09;北理工嵩天Python语言程序设计笔记&#xff08;2 Python基本语法元素&#xff09;北理工嵩天…

3GPP R17空闲态省电特性

Paging Early Indication 为了进一步降低空闲态UE监听PDCCH的功耗&#xff0c;R17提出Paging Early Indication(PEI)方案。方案的主要思想是在PO(Paging Occasion)之前插入一个PEI-O(PEI Occasion)&#xff0c;UE在解调到PEI信息之后&#xff0c;再确定是否需要解调PO信息。其中…

FPGA帧差算法实现图像识别跟踪,Verilog代码讲解全网最细,提供两套工程源码

之前我写过一篇关于FPGA帧差算法实现图像识别跟踪的文章&#xff0c;可以参考一下FPGA帧差算法实现图像识别跟踪 但那篇文章讲得不够细&#xff0c;这里讲得细一点&#xff1a; 运动目标检测原理&#xff1a;先将RGB图像转为灰度图只取亮度分量y&#xff0c;如果一个物体是运动…

【C++】如何修改set的值

问题&#xff1a;尝试通过begin方法得到的迭代器去修改值&#xff0c;发现会报错。 set<string> st{"hello", "world", "good"}; set<string>::iterator it st.begin(); *it "test"; 原因&#xff1a;我们可以在源码里…

三层交换机(三层配置基础命令)

作者介绍&#xff1a; ♥️作者&#xff1a;小刘在C站 ♥️每天分享课堂笔记&#xff0c;一起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的绽放。 目录 一.什么是三层交换机 二.为什么使用三层交换机 三.层交换机的原理 1.传统的mls 2.快速转…

文件的基本操作

文章目录创建文件删除文件打开文件关闭文件读文件写文件这些基本功能都是操作系统提供给应用程序的系统调用创建文件 提供的参数 所需的外存空间大小文件的存放路径文件名&#xff08;操作系统会有对应的默认名&#xff09; 操作系统做的工作 在外存中找文件所需的空间——空闲…

Python趣味算法入门 - 百钱百鸡

问题描述 中国古代数学家张邱建在他的《算经》中提出了一个著名的“百钱百鸡问题”&#xff1a;一只公鸡值五钱&#xff0c;一只母鸡值三钱&#xff0c;三只小鸡值一钱&#xff0c;现在要用百钱买百鸡&#xff0c;请问公鸡、母鸡、小鸡各多少只&#xff1f; 分析 这也是经典问…

所见即所得即MySQL函数

✨✨hello&#xff0c;愿意点进来的小伙伴们&#xff0c;你们好呐&#xff01; &#x1f43b;&#x1f43b;系列专栏&#xff1a;【MySQL初阶】 &#x1f432;&#x1f432;本篇内容&#xff1a;MySQL函数的详解 &#x1f42f;&#x1f42f;作者简介:一名现大二的三非编程小白&…

【Spring】核心部分之IOC:通过列举代码例子,从底层刨析,深入源码,轻轻松松理解Spring的核心IOC,IOC有这一篇足以

IOC一&#xff0c;概念和原理1.概念&#xff1a;控制反转2.原理&#xff1a;&#xff08;xml解析&#xff0c;工厂模式&#xff0c;反射&#xff09;3.IOC接口&#xff1a;两个主要容器实现类&#xff08;加载xml配置文件&#xff09;二&#xff0c;操作Bean管理1.基于 xml 配置…

React - 实现瀑布流加载

React - 实现瀑布流加载一. 瀑布流实现1.1 处理重复请求问题一. 瀑布流实现 先来看下原本的效果&#xff0c;一次性加载完所有的信息然后展示&#xff1a; 其次&#xff0c;我们需要去监听这个滚轮的滚动事件&#xff0c;那么React页面就可以添加一个监听器&#xff1a; use…

SpringSecurity Oauth2实战 - 04 自定义AuthProvider实现登录认证

文章目录1. 搭建资源服务器1. Token存储配置类 TokenStoreAutoConfiguration2. 资源服务器配置类 ResourceServerAutoConfiguration3. 在META-INF/spring.factories文件下添加配置类2. 搭建授权服务器1. 密码加密配置类 PasswordEncodeConfig2. RestTemplateConfig3. 授权服务器…

k3s 离线部署指南

文章目录1. 简介2. Docker 手动部署镜像方式2.1 安装docker2.2 导入镜像2.3 安装 k3s2.4 查看3. Containerd 手动部署镜像方式3.1 导入镜像到 containerd 镜像列表3.2 授予可执行权限3.3 安装 K3s4. Containerd 私有镜像仓库方式4.1 配置 K3s 镜像仓库4.2 授予可执行权限4.3…

集合(Set)和有序集合(ZSet)的基本使用方法详解【Redis】

文章目录一. Redis中的集合(Set)1.1基本的一些操作1.1.1 smembers查看集合中的所有成员1.1.2 scard删除成员数量1.1.3 smove移动成员1.1.4 sinterstore 存储俩个集合的交集二.Redis中的有序集合(ZSet)2.1 基本的一些操作2.1.1 zadd添加1到多个成员2.1.2 zcount 返回指定分数区间…

【HarmonyOS】鸿蒙轻量级智能穿戴应用可以集成华为分析SDK吗?

1、问题描述 我们的项目是基于鸿蒙系统开发的轻量级智能穿戴应用&#xff0c;目前在做的主要是运动手表GT3。 我们在项目中使用了华为分析服务&#xff0c;但是在Build Hap时出现问题&#xff1a; 因此&#xff0c;我们想了解轻量级智能穿戴应用项目中是否能够集成华为分析服…