k8s(Kubernetes)集群部署--使用 kubeadm方式部署

k8s集群部署--使用 kubeadm方式部署

  • 一、测试所需环境(三台均要执行)
  • 二、配置准备(三台均要执行)
    • 1. 重命名hostname、添加hosts
    • 2. 关闭防火墙、selinux与swap
    • 3. 添加网桥过滤及内核转发配置文件
    • 4.同步时间
    • 5.安装ipset及ipvsadm
  • 三、安装docker(三台均要执行)
    • 1. 配置Docker CE的yum存储库
    • 2. 安装Docker CE
    • 3. 设置cgroup驱动,使用systemd
  • 四、安装cri-dockerd(rpm安装)(三台均要执行)
  • 五、使用 kubeadm 创建集群(三台均要执行)
    • 1. 添加k8s的yum软件源
    • 2. 安装kubelet-1.28.0、kubeadm-1.28.0和kubectl-1.28.0
    • 3. 部署master和node节点
  • 六、安装网络插件calico(master节点)
  • 七、安装nginx进行测试

一、测试所需环境(三台均要执行)

三台服务器

master 192.168.3.101
node1 192.168.3.102
node2 192.168.3.104

二、配置准备(三台均要执行)

1. 重命名hostname、添加hosts

#将192.168.3.101的主机名改为master
hostnamectl set-hostname master && bash
#将192.168.3.102的主机名改为node1
hostnamectl set-hostname node1 && bash
#将192.168..3.104的主机名改为node2
hostnamectl set-hostname node2 && bash
#添加hosts
cat >> /etc/hosts << EOF
192.168.3.101 master
192.168.3.102 node1
192.168.3.104 node2
EOF
#查看
cat /etc/hosts

2. 关闭防火墙、selinux与swap

#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
firewall-cmd --state#selinux永久关闭
setenforce 0sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
cat /etc/selinux/config#swap永久关闭
swapoff --all
sed -ri 's/.*swap.*/#&/' /etc/fstab
cat /etc/fstab

3. 添加网桥过滤及内核转发配置文件

cat > /etc/sysctl.d/k8s.conf << EOFnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1
EOF
#查看
cat /etc/sysctl.d/k8s.conf
#加载br_netfilter模块
modprobe br_netfilter
#查看是否加载
lsmod | grep br_netfilter
#加载网桥过滤及内核转发配置文件
sysctl -p /etc/sysctl.d/k8s.conf

4.同步时间

yum -y install ntpdate
echo "0 */1 * * * /usr/sbin/ntpdate time1.aliyun.com" > /var/spool/cron/root
crontab -l

5.安装ipset及ipvsadm

 #安装ipset及ipvsadmyum -y install ipset ipvsadm配置ipvsadm模块加载方式#添加需要加载的模块
echo ' #!/bin/bashmodprobe -- ip_vsmodprobe -- ip_vs_rrmodprobe -- ip_vs_wrrmodprobe -- ip_vs_shmodprobe -- nf_conntrack
' > /etc/sysconfig/modules/ipvs.modules
#查看
cat /etc/sysconfig/modules/ipvs.modules#授权、运行、检查是否加载
chmod 755 /etc/sysconfig/modules/ipvs.modules 
bash /etc/sysconfig/modules/ipvs.modules 
lsmod | grep -e ip_vs -e nf_conntrack
#重启
reboot

配置准备完成后,所有节点都需重启

三、安装docker(三台均要执行)

1. 配置Docker CE的yum存储库

打开docker-ce.repo的文件,并将以下内容复制到文件中:

echo '
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://download.docker.com/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg 
' > /etc/yum.repos.d/docker-ce.repo

保存并退出文件。

2. 安装Docker CE

运行以下命令来安装Docker CE:

yum install -y docker-ce docker-ce-cli containerd.io
#启动docker并设置开机自启
systemctl start docker  
systemctl enable docker
#查看版本
docker -v
docker compose version

3. 设置cgroup驱动,使用systemd

配置修改为如下:

#将配置写入daemon.json文件
echo '
{"exec-opts": ["native.cgroupdriver=systemd"]
}' > /etc/docker/daemon.json
#查看
cat /etc/docker/daemon.json
systemctl daemon-reload
systemctl restart docker
docker info

四、安装cri-dockerd(rpm安装)(三台均要执行)

#下载cri-dockerd安装包
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.1/cri-dockerd-0.3.1-3.el7.x86_64.rpm
#安装cri-dockerd
rpm -ivh cri-dockerd-0.3.1-3.el7.x86_64.rpm
#修改镜像地址为国内,否则kubelet拉取不了镜像导致启动失败
vi /usr/lib/systemd/system/cri-docker.service
###########################修改内容######################
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9
###########################修改内容######################
#启动cri-dockerd
systemctl daemon-reload 
systemctl start cri-docker.service
systemctl enable cri-docker.service

五、使用 kubeadm 创建集群(三台均要执行)

1. 添加k8s的yum软件源

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

2. 安装kubelet-1.28.0、kubeadm-1.28.0和kubectl-1.28.0

#安装kubelet、kubeadm、kubectl
yum install -y kubelet-1.28.0 kubeadm-1.28.0  kubectl--1.28.0  --disableexcludes=kubernetes#将cgroup改为systemd
echo 'KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"' > /etc/sysconfig/kubelet
#查看
cat /etc/sysconfig/kubelet
#设置开机启动
systemctl restart kubelet.service
systemctl enable kubelet.service

3. 部署master和node节点

  1. 部署master节点,在192.168.3.101执行,初始化master节点
kubeadm init \--apiserver-advertise-address=192.168.3.101\--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.28.0 \--service-cidr=10.96.0.0/12 \--pod-network-cidr=10.244.0.0/16 \--cri-socket=unix:///var/run/cri-dockerd.sock \--ignore-preflight-errors=all

–apiserver-advertise-address=192.168.3.101 :集群的主节点IP地址
–image-repository registry.aliyuncs.com/google_containers:指定容器镜像的仓库地址。
–kubernetes-version v1.28.0:指定要使用的Kubernetes版本。
–service-cidr=10.90.0.0/16:指定服务网络的CIDR范围。
–pod-network-cidr=10.240.0.0/16:指定Pod网络的CIDR范围。
–cri-socket=unix:///var/run/cri-dockerd.sock:不可缺少

执行成功后会产生如下的命令参数(需要分别在本机和各node节点执行):

[addons] Applied essential addon: kube-proxy
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a
regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster. Run “kubectl apply -f [podnetwork].yaml” with one of the options listed at: https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:

kubeadm join 192.168.3.101:6443 --token xrnhnh.37cn3fcsltg7e90h --discovery-token-ca-cert-hash sha256:fb68fac112fd55ddb45c691a5b9db98a9bf15ce86a0244641cd787654aa3cf40

在本机(master)执行

mkdir -p $HOME/.kube 
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config 
sudo chown $(id -u):$(id -g) $HOME/.kube/config   
  1. 部署node节点
    将master节点产生的命令输到各个node节点
kubeadm join 192.168.3.101:6443 --token xrnhnh.37cn3fcsltg7e90h \--discovery-token-ca-cert-hash sha256:fb68fac112fd55ddb45c691a5b9db98a9bf15ce86a0244641cd787654aa3cf40 \--cri-socket=unix:///var/run/cri-dockerd.sock  #此行不可缺少

六、安装网络插件calico(master节点)

wget https://docs.projectcalico.org/manifests/calico.yaml#修改calico.yaml找到CALICO_IPV4POOL_CIDR
vi calico.yaml
##############修改内容###################value: "10.244.0.0/16"##############修改内容####################在master节点上安装calicokubectl apply -f calico.yaml
#查看所有的节点
kubectl get nodes
kubectl get nodes -o wide
#查看集群健康情况kubectl get cs

七、安装nginx进行测试

#创建Nginx程序
kubectl create deployment nginx --image=nginx
#开放80端口
kubectl expose deployment nginx --port=80 --type=NodePort
#查看pod状态
kubectl get pod
#查看service状态
kubectl get service
##########################################################################
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        5d1h
nginx        NodePort    10.98.221.224   <none>        80:32743/TCP   23s
##########################################################################
#访问网页测试(端口号以查看service状态得到的为准)
http://192.168.3.101:32743/

成功界面如下
在这里插入图片描述


点击链接查看Kubernetes Dashboard安装部署教程
https://blog.csdn.net/AMCUL/article/details/132865544

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

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

相关文章

Mysql002:(库和表)操作SQL语句

目录&#xff1a; 》SQL通用规则说明 SQL分类&#xff1a; 》DDL&#xff08;数据定义&#xff1a;用于操作数据库、表、字段&#xff09; 》DML&#xff08;数据编辑&#xff1a;用于对表中的数据进行增删改&#xff09; 》DQL&#xff08;数据查询&#xff1a;用于对表中的数…

【Verilog教程】2.3 Verilog 数据类型

Verilog 最常用的 2 种数据类型就是线网&#xff08;wire&#xff09;与寄存器&#xff08;reg&#xff09;&#xff0c;其余类型可以理解为这两种数据类型的扩展或辅助。 线网&#xff08;wire&#xff09; wire 类型表示硬件单元之间的物理连线&#xff0c;由其连接的器件输…

十分钟理解OSPF路由协议

十分钟理解OSPF路由协议 1.RIP的缺陷以跳数为度量值最大跳数为15更新路由表采用全更新收敛速度慢 2.RIP与OSPF比较OSPF概述运行OSPF协议之前运行OSPF协议之后 3.OSPF协议工作过程1.发现邻居2.建立邻接关系3.传递链路状态信息4.计算路由 4.OSPF分区域管理 有RIP协议&#xff0c;…

Visual Studio Code配置开发Maven项目、Spring Boot项目

配置开发Maven项目、Spring Boot项目 配置全局配置项目配置注意 Maven项目开发安装插件创建项目启动项目 Spring Boot项目开发安装插件创建项目启动项目 其他插件 配置 全局配置 ctrlshiftp打开搜索setting.json&#xff0c;这个setting.json配置属于全局配置 配置全局的Java与…

Python配置与测试利器:Hydra + pytest的完美结合

简介&#xff1a;Hydra 和 pytest 可以一起使用&#xff0c;基于 Hydra Pytest 的应用可以轻松地管理复杂配置&#xff0c;并编写参数化的单元测试&#xff0c;使得Python开发和测试将变得更为高效。 安装&#xff1a; pip install hydra-core pytest案例源码&#xff1a;my…

毕业设计|基于stm32单片机的app视频遥控抽水灭火小车设计

基于stm32单片机的app视频遥控抽水灭火水泵小车设计 1、项目简介1.1 系统构成1.2 系统功能 2、部分电路设计2.1 L298N电机驱动电路设计2.2 继电器控制电路设计 3、部分代码展示3.1 小车控制代码3.1 水泵控制代码 4 演示视频及代码资料获取 1、项目简介 视频简介中包含资料http…

用selenium和xpath定位元素并获取属性值以及str字符型转json型

页面html如图所示&#xff1a; 要使用xpath定位这个div元素&#xff0c;并且获取其属性data-config的内容值。 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.options import Optionshost127.0.0.1 port10808 …

(图论) 1020. 飞地的数量 ——【Leetcode每日一题】

❓ 1020. 飞地的数量 难度&#xff1a;中等 给你一个大小为 m x n 的二进制矩阵 grid &#xff0c;其中 0 表示一个 海洋单元格、1 表示一个 陆地单元格。 一次 移动 是指从一个陆地单元格走到另一个相邻&#xff08;上、下、左、右&#xff09;的陆地单元格或跨过 grid 的边…

python基础语法(四)

感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接 &#x1f412;&#x1f412;&#x1f412;个人主页 &#x1f978;&#x1f978;&#x1f978;C语言 &#x1f43f;️&#x1f43f;️&#x1f43f;️C语言例题 &#x1f423;&#x1f413;&#x1f3c0;python 这…

9.19 QT作业

完成文本编辑器的保存工作 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QFontDialog> //字体对话框 #include<QFont> //字体类 #include<QMessageBox> //消息对话框 #inclu…

SpringMVC学习|JSON讲解、Controller返回JSON数据、Jackson、JSON乱码处理、FastJson

JSON讲解 JSON(JavaScript Object Notation,JS 对象标记)是一种轻量级的数据交换格式&#xff0c;目前使用特别 广泛。 采用完全独立于编程语言的文本格式来存储和表示数据。 简洁和清晰的层次结构使得 JSON成为理想的数据交换语言。 易于人阅读和编写&#xff0c;同时也易于机…

岩土工程安全监测中振弦采集仪连接振弦传感器时注意事项

岩土工程安全监测中振弦采集仪连接振弦传感器时注意事项 岩土工程安全监测是保障工程稳定和安全的重要手段之一&#xff0c;而振弦采集仪则是岩土工程安全监测的常用设备之一&#xff0c;可以用于实时监测地下水位、土体变形、岩体应力等。其中&#xff0c;振弦传感器是振弦采…

解决报错:npm ERR! code 1

我是 npm install --legacy-peer-deps 成功了 解决方案&#xff1a; 升级swiper库&#xff1a;你可以尝试升级你的项目中的swiper库到5.2.0或更高版本&#xff0c;以满足vue-awesome-swiper的需求。你可以使用以下命令来进行升级&#xff1a; npm install swiperlatest 注意…

Hadoop:YARN、MapReduce、Hive操作

目录 分布式计算概述 YARN概述 YARN架构 核心架构 辅助架构 MapReduce 概述 配置相关文件 提交MapReduce到YARN Hive Hive架构 Hive在VMware部署 Hive的启动 数据库操作 数据表操作 内部表操作 外部表操作 数据加载和导出 数据加载LOAD 数据加载 - INSERT SEL…

Flink sql 1.17笔记

环境准备 # 启动hadoop集群 # 启动Flink yarn session (base) [link999hadoop102 flink-1.17.0]$ bin/yarn-session.sh -d# 启动finksql客户端 (base) [link999hadoop102 flink-1.17.0]$ bin/sql-client.sh -s yarn-session# 如果有初始化文件 bin/sql-client.sh embedded -s …

Spring Cloud Alibaba Ribbon负载均衡器

文章目录 Ribbon 负载均衡器环境搭建1.依赖2.配置3.修改其默认的负载均衡策略3.1 验证 4.创建自定义的Rule4.1 MyRule&#xff08;&#xff09;4.2 在配置config类中配置 5.饥饿加载6.我只想访问不想被别的访问 Ribbon 负载均衡器 背景 Ribbon 是一个用于客户端负载均衡的开源…

【ElementUI】ElementUI Tooltip 根据内容判断是否显示、文字提示自定义样式

【ElementUI】ElementUI Tooltip 根据内容判断是否显示、文字提示自定义样式 封装组件自定义内容 <template><span v-if"[, null, undefined].indexOf(content) -1"><el-tooltip :content"content" effect"light" placement&q…

Pytorch从零开始实战04

Pytorch从零开始实战——猴痘病识别 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——猴痘病识别环境准备数据集模型选择模型训练数据可视化其他模型图片预测 环境准备 本文基于Jupyter notebook&#xff0c;使用Python3.8&#xff0c;Pytor…

前端-layui动态渲染表格行列与复杂表头合并

说在前面&#xff1a; 最近一直在用layui处理表格 写的有些代码感觉还挺有用的&#xff0c;顺便记录下来方便以后查看使用&#xff1b; HTML处代码 拿到id 渲染位置表格 <div class"layui-table-body salaryTable"><table class"layui-table" i…

GE WES5120 5120-1506 自动化控制模块

GE WES5120 5120-1506 是一种自动化控制模块&#xff0c;通常用于工业自动化和控制系统中&#xff0c;用于监测和控制各种工业过程。这种类型的自动化控制模块在多个应用领域都有广泛的用途&#xff0c;包括但不限于以下几个领域&#xff1a; 制造业&#xff1a; WES5120 5120-…