k8s1.25版本集群部署(亲测有效)

news2024/11/24 16:46:00

1.实验环境准备

准备三台centos7虚拟机,用来部署k8s集群:

master(hadoop1,192.168.229.111)配置:

操作系统:centos7.3以及更高版本都可以配置:4核cpu,4G内存,30G硬盘

网络:网络地址转换

node(hadoop2,192.168.229.112)配置:

操作系统:centos7.3以及更高版本都可以配置:4核cpu,4G内存,30G硬盘

网络:网络地址转换

2.初始化实验环境(所有节点)

2.1 配置静态IP

#查看网络信息

#配置静态IP

              

#重启网络服务

systemctl start network.service或者service network restart

#重启虚拟机

               

2.2 修改yum源

#yum在线下载wgetyum -y install wget#备份原有yum源mv /etc/yum.repos.d/CentOS-Base.repo   /etc/yum.repos.d/CentOS-Base.repo.backup#下载阿里云yum源wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo#生成新的yum缓存yum makecache fast#配置k8s需要的yum源cat <<EOF > /etc/yum.repos.d/kubernetes.repo[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1gpgcheck=0EOF#清理缓存yum clean all#生成新的yum缓存yum makecache fast#更新yum源yum -y update#安装软件依赖包yum -y install yum-utils device-mapper-persistent-data lvm2

备注:yum-utils是yum的安装工具包,可以简化安装过程中设置安装源的配置过程。docker内部容器如果需要进行数据存储,需要通过device-mapper-persistent-data和lvm2数据存储驱动来完成数据存储。

#添加新的docker软件源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum clean allyum makecache fast

2.3 安装基础软件包

yum -y install wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat  ipvsadm conntrack ntpdate

2.4 关闭防火墙

#查看防火墙状态

systemctl status firewalld

#停止并禁用防火墙

systemctl stop firewalld && systemctl  disable  firewalld

2.5 时钟同步

#查看时间类型

在hadoop1节点上输入date命令,可以查看到当前系统时间如下所示。

如果结果中系统时间为HKT(即香港时间),可以把时间改为CST(CST表示中部标准时间,即上海时间)。

#修改时间类型

使用shanghai时间来覆盖当前的系统默认时间,具体操作如下所示。

注意:上述操作在集群各个节点都要执行,保证当前系统时间标准为上海时间。

#配置 NTP 服务器

我们选择hadoop1节点来配置 NTP 服务器,集群其他节点定时同步hadoop1节点时间即可。

(1)检查 NTP 服务是否已经安装。

输入rpm -qa | grep ntp命令查看NTP服务是否安装,操作结果如下所示。

[root@hadoop1 ~]# rpm -qa | grep ntpntp-4.2.6p5-12.el6.centos.2.x86_64ntpdate-4.2.6p5-12.el6.centos.2.x86_64

如果NTP服务已经安装,可以直接进行下一步,否则输入yum install -y ntp命令可以在线安装NTP服务。实际上就是安装两个软件, ntpdate-4.2.6p5-12.el6.centos.2.x86_64是用来和某台服务器进行同步的,ntp-4.2.6p5-12.el6.centos.2.x86_64ntp-4.2.6p5-1.el6.centos.x86_64 是用来提供时间同步服务的。

(2)修改配置文件ntp.conf

修改NTP服务配置,具体操作如下所示。

[root@hadoop1 ~]# vi /etc/ntp.conf

#启用 restrict限定该机器网段,192.168.229.111为当前节点的IP地址

restrict 192.168.229.111 mask 255.255.255.0 nomodify notrap

#注释掉 server 域名配置

#server 0.centos.pool.ntp.org iburst#server 1.centos.pool.ntp.org iburst#server 2.centos.pool.ntp.org iburst#server 3.centos.pool.ntp.org iburst

#添加如下两行配置,让本机和本地硬件时间同步

server 127.127.1.0

fudge 127.127.1.0 stratum 10

(3)启动NTP服务

执行chkconfig ntpd on命令,可以保证每次机器启动时,NTP服务都会自动启动,具体操作如下所示。

[root@hadoop1 ~]# chkconfig ntpd on 

(4)配置其他节点定时同步时间

hadoop2节点通过Linux crontab 命令,可以定时同步hadoop1节点的系统时间,具体操作如下所示。

[root@hadoop2 ~]# crontab -e

#表示每个10分钟进行一次时钟同步

0-59/10 * * * * /usr/sbin/ntpdate hadoop1

备注:hadoop2节点也需要使用yum install -y ntp命令安装NTP服务,才能使用ntpdate时间同步命令。

2.6 关闭selinux

#关闭selinux

vi /etc/sysconfig/selinux

#重启虚拟机

reboot

#查看配置结果

getenforce

2.7 关闭交换分区

#设置开机自动关闭分区

swapoff -a

#设置永久禁用分区,打开/etc/fstab文件注释掉带有swap

sed -i 's/.*swap.*/#&/' /etc/fstab

2.8 修改内核参数

#开启网络参数

cat <<EOF > /etc/sysctl.d/k8s.confnet.bridge.bridge-nf-call-ip6tables = 1net.bridge.bridge-nf-call-iptables = 1EOF

#手动加载所有的配置文件

sysctl --system

2.9 修改主机名

#通过/etc/hostname文件修改节点主机名

vi /etc/hostname

hadoop1

2.10 配置hosts文件

[root@hadoop1 ~]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.229.111 hadoop1192.168.229.112 hadoop2

2.11 ssh免密登录

1.在root用户下,配置节点本身ssh免密

#生成密钥对

ssh-keygen -t rsa

#将公钥文件id_rsa.pub 中的内容拷贝到相同目录下的authorized_keys文件中

cd .ssh/

cp id_rsa.pub authorized_keys

#为.ssh目录及文件赋予相应的权限

cd ..

chmod 700 .ssh

chmod 600 .ssh/*

#ssh免密登录

ssh hadoop1

2.实现集群节点间ssh免密登录

#将hadoop2的公钥id_ras.pub复制到hadoo01中的authorized_keys文件中

cat ~/.ssh/id_rsa.pub | ssh root@hadoop1 'cat >> ~/.ssh/authorized_keys'

#将hadoop1中的authorized_keys文件分发到hadoop2节点

scp -r  ~/.ssh/authorized_keys  root@hadoop2:~/.ssh/

#hadoop1 ssh免密登录hadoop2

ssh hadoop2

3.docker安装部署(所有节点)

3.1 查看支持哪些docker版本

yum list docker-ce --showduplicates |sort -r

3.2 安装docker社区版

yum -y install docker-ce-20.10.7-3.el7

3.3 设置开机启动docker

systemctl enable docker && systemctl start docker

3.4 查看docker运行状态

systemctl status docker

3.5 修改docker配置

#设置更多镜像地址

​​​​​​​

cat > /etc/docker/daemon.json <<EOF{"registry-mirrors": ["https://7mimmp7p.mirror.aliyuncs.com","https://registry.docker-cn.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"storage-driver": "overlay2","storage-opts": ["overlay2.override_kernel_check=true"]}EOF

3.6 重启docker

systemctl daemon-reload && systemctl restart docker

3.7 配置k8s网络

​​​​​​​

#配置网络echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptablesecho 1 >/proc/sys/net/bridge/bridge-nf-call-ip6tablesecho """vm.swappiness = 0net.bridge.bridge-nf-call-iptables = 1net.ipv4.ip_forward = 1net.bridge.bridge-nf-call-ip6tables = 1""" > /etc/sysctl.conf#加载配置sysctl -p

3.8 开启ipvs

#不开启ipvs将会使用iptables,但是效率低,所以官网推荐需要开通ipvs内核​​​​​​​

cat > /etc/sysconfig/modules/ipvs.modules <<EOF#!/bin/bashipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack"for kernel_module in \${ipvs_modules}; do/sbin/modinfo -F filename \${kernel_module} > /dev/null 2>&1if [ $? -eq 0 ]; then/sbin/modprobe \${kernel_module}fidoneEOF#修改执行权限并执行chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs

3.9 安装cri-docker

Docker通过cri-docker软件与k8s进行整合。​​​​​​​

#下载cri-dockerwget https://github.com/Mirantis/cri-dockerd/releases/download/v0.2.6/cri-dockerd-0.2.6-3.el7.x86_64.rpm#安装cri-dockerrpm -ivh cri-dockerd-0.2.6-3.el7.x86_64.rpm#重载沙箱(pause)镜像vi /usr/lib/systemd/system/cri-docker.serviceExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.8 --container-runtime-endpoint fd://#启动并设置开机重启cri-dockersystemctl start cri-dockersystemctl enable cri-docker

4.k8s安装部署(所有节点)

4.1 安装kubectl、kubelet、kubeadm组件

#指定版本下载

yum install -y kubelet-1.25.0 kubeadm-1.25.0 kubectl-1.25.0

4.2 启动kubelet并设置为开机启动

systemctl enable kubelet

systemctl start kubelet

4.3 主节点部署k8s master(仅主节点)

#初始化k8s集群(cpu核必须大于1)

​​​​​​​

kubeadm init \--apiserver-advertise-address=192.168.229.111 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.25.0 \--service-cidr=10.96.0.0/12 \--pod-network-cidr=10.244.0.0/16 \--cri-socket unix:///var/run/cri-dockerd.sock# 对于root用户, 直接添加变量即可开始使用集群echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profilesource ~/.bash_profile

4.4 加入k8s集群(仅从节点)

# 这段话是在主节点kubeadm init时复制过来的, 注意添加--cri-socket​​​​​​​

kubeadm join 192.168.229.111:6443 --token q1asjl.zb0ihzewm7ilx895 \--discovery-token-ca-cert-hash sha256:8b30a783d6398b178a8c241380bc63ac4b728730d9f344fc1ebee8d61900fadf \--cri-socket unix:///var/run/cri-dockerd.sock#查看k8s集群节点kubectl get nodes#查看系统默认podskubectl get pods -n kube-system

4.5 安装网络插件calico

Calico网络插件可以实现跨主机间容器通信

# 下载 Pod 网络插件(CNI)

wget https://docs.projectcalico.org/manifests/calico.yaml --no-check-certificate

#下载calico镜像压缩包,收到上传至每台主机

calico~kube~controllers~v3.24.3.tar.gz

calico~cni~v3.24.3.tar.gz

calico~node~v3.24.3.tar.gz

备注:calico插件下载经常失败,加微信提供网盘下载链接。

#每个节点手动通过docker离线加载镜像

docker load -i calico~cni~v3.24.3.tar.gz

docker load -i calico~kube~controllers~v3.24.3.tar.gz

docker load -i calico~node~v3.24.3.tar.gz

#查看calico是否安装成功

docker images | grep calico

#在master节点执行命令进行calico插件安装

kubectl apply -f calico.yaml

4.6 查看节点状况

#在主节点执行命令看集群是否成功

kubectl get node -o wide

备注:如果status列中的状态都为ready,表明集群安装成功。

5.部署Dashboard(仅主节点)

5.1 部署Dashboard

#部署 Dashboard UI

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

#设置访问端口,找到 type: ClusterIP 改为 type: NodePort

kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard

#查看端口

kubectl get svc -A |grep kubernetes-dashboard

#访问:https://集群任意IP:端口 进入登录界面

https://192.168.229.111:30178

5.2 创建访问账号

​​​​​​​

# 准备一个yaml文件vi dashuser.yamlapiVersion: v1kind: ServiceAccountmetadata:name: admin-usernamespace: kubernetes-dashboard---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata:name: admin-userroleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-adminsubjects:- kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard#创建访问账号kubectl apply -f dashuser.yaml

5.3 令牌访问

# 获取访问令牌

kubectl -n kubernetes-dashboard create token admin-user

# 现在复制令牌并将其粘贴到登录屏幕上的Enter令牌字段中

5.4 登录成功

#看到如下界面说明Dashboard部署成功

6.测试k8s集群(仅主节点)

​​​​​​​

# 创建Nginx容器kubectl create deployment nginx --image=nginx#暴露端口kubectl expose deployment nginx --port=80 --type=NodePort查看podkubectl get pod,svc# 访问地址(http://NodeIP:Port)http://192.168.229.111:30985/重要!重要!重要!添加下方二维码获取相关资料。

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

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

相关文章

【JavaScript流程控制-分支】

JavaScript流程控制-分支1 本节目标2 流程控制3 顺序流程控制4 分支流程控制if语句4.1 分支结构4.2 if语句4.2.1 语法结构4.2.2 执行流程4.3 if else语句(双分支语句)4.3.1 语法结构4.3.2 执行流程4.4 if else if语句(多分支语句)4.4.1 语法结构4.4.2 执行流程5 三元表达式5.1 …

蓝桥杯嵌入式第一篇 点亮LED灯开启成功之路

文章目录前言一、准备工作1.拿到开发板第一步看原理图2.下载STM32cubeMX二、开始点灯1.查看LED原理图2.cubeMX配置3.代码实现总结前言 从这篇文章开始将为大家带来最详细最全面的蓝桥杯嵌入式教学&#xff0c;本教程将使用STM32cubeMX教大家快速入门STM32。花最少的时间拿下国…

电镀废水末端除镍工艺,除镍树脂如何使用?

电镀废水的处理方案分析 电镀废水中含有铜、镍等金属物质&#xff0c;具有较高的回收价值。因此&#xff0c;为了减少环境污染&#xff0c;提高电镀企业的经济效率&#xff0c;一般会对电镀废水进行 回收性的处理&#xff0c;来回收金属铜、镍等。而从目前情况看&#xff0c;…

ipv6地址概述——了解ipv6与ipv4不同

目录 一 ipv4与ipv6 1.ipv4的概述 2.ipv4存在的问题 3.ipv6的概述 4.ipv4与ipv6的优点和特点 5.ipv6与ipv4的变化 ipv4包头 ipv6包头 6.ipv6的基本术语 个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每…

三菱机床联网

一、设备信息确认 1、确认型号 数控面板拍照确认&#xff1a; 此系统为&#xff1a;M70控制器 注&#xff1a;目前M70和M80&#xff0c;基本上都有网络通讯和采集功能。 2、确认通讯接口 网口常见位置&#xff0c;LAN标号&#xff0c;可通过这个确认&#xff1a; 1、数控…

云计算的一些常见安全风险

许多企业正在将业务转移到云端以提高效率并简化工作负载。虽然云计算可以为组织提供竞争优势&#xff0c;但重要的是不要在不了解所涉及的风险的情况下仓促采用云。无论您的组织是否已经开始迁移到云&#xff0c;有几个关键的安全注意事项需要牢记在心。下文是一些云计算的常见…

【SQLite】一、SQLite简介——MySQL的简洁版

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;浙江某公司软件工程师&#xff0c;负责开发管理公司OA、CRM业务系统&#xff0c;全栈领域优质创作者&#xff0c;CSDN学院、蓝桥云课认证讲师&#xff0c;开发过20余个前后端分离实战项目&#xff0c;主要发展方向为Vue…

PTA题目 寻找250

对方不想和你说话&#xff0c;并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。 输入格式&#xff1a; 输入在一行中给出不知道多少个绝对值不超过1000的整数&#xff0c;其中保证至少存在一个“250”。 输出格式&#xff1a; 在一行中输出第…

openEuler 通过Rook在k8s集群部署Ceph

openEuler 版本号: 2209 前置条件 k8s集群版本 kubectl version Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.12", GitCommit:"b058e1760c79f46a834ba59bd7a3486ecf28237d", GitTreeState:"clean&…

图片加水印怎么弄?小白都会的加水印方法

现在给图片添加水印很重要&#xff0c;因为我们辛苦拍摄的照片或视频很容易被其他人转发&#xff0c;而他们无需注明出处和原作者&#xff0c;因此很容易误导浏览者&#xff0c;让他们以为这些照片是“转载者”拍摄的。这样其实对原作者很不公平&#xff0c;如果不添加水印&…

C语言 9 —— 函数

把相同业务功能维度的代码有机的整合起来做成函数&#xff0c;这样做既可以方便反复调用&#xff0c;又可以在空间上节省代码行数。 函数的定义&#xff1a; 返回值类型 函数名(参数类型1 参数变量名1, ....参数类型N 参数变量N){ //此处参数为形参// 函数体.... } 如果不需…

【强化学习论文清单】AAAI-2022 | 人工智能CCF-A类会议(附链接)

人工智能促进会(AAAI)成立于1979年&#xff0c;前身为美国人工智能协会(American Association for Artificial Intelligence)&#xff0c;是一个非营利性的科学协会&#xff0c;致力于促进对思想和智能行为及其在机器中的体现的潜在机制的科学理解。AAAI旨在促进人工智能的研究…

【构建ML驱动的应用程序】第 5 章 :训练和评估模型

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

Linux 文件系统与inode,软硬链接

目录 磁盘的结构 磁盘的抽象&#xff08;虚拟&#xff0c;逻辑&#xff09;结构 分区 Block Group 块组&#xff1a; 分析&#xff1a; 文件名 vs inode编号 创建/删除/查看 一个文件&#xff0c;操作系统做了什么&#xff1f; 软硬链接 软连接 硬链接 对比&#xf…

Devart IBDac数据访问组件库

Devart IBDac数据访问组件库 IBDAC是一个完整的InterBase(和FireBird)数据访问组件库&#xff0c;用于将程序连接到FireBird、InterBase和Yaffil。该库有Dolphin、CBuilder、Lazarus和Free Pascal版本&#xff0c;可用于32/64位Windows、Mac OS X、iOS、Android、Linux和FreeBS…

Nacos Config--服务配置

目录 服务配置中心介绍 Nacos Config入门 Nacos Config深入 配置动态刷新 配置共享 nacos的几个概念 创建命名空间(Namespace) 命名空间 组 Nacos多环境切换 如何解决不同环境配置不同 如何解决不同环境配置相同 不同微服务相同配置共享 bootstrap 总结 服务配置…

融云 IM 和 RTC 服务,「助攻」智能物流等客户打通链路、完善生态

关注公众号报名融云&艾瑞“政企数智办公研究报告及新品发布会” 移动互联网时代&#xff0c;通信技术已经突破传统优势项“社交泛娱乐场景”的应用范围&#xff0c;在不同的业务中大放异彩&#xff0c;起到打通链路的关键作用。关注【融云全球互联网通信云】回复【融云】抽…

【数据挖掘】分类与回归预测

OutLine 章节概述1分类与预测2关于分类与预测中存在的问题3决策树分类4贝叶斯分类5BP网络分类6其他分类算法7预测8准确性与误差Chapter 1. 分类与预测 分类 预测分类标签&#xff0c;可以是离散数据或者是名义数据根据训练集和分类属性中的类标签对记录进行分类&#xff0c;…

【构建ML驱动的应用程序】第 6 章 :调试 ML 问题

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

iTOP2K1000开发板Makefile文件

Makefile 就是描述了整个工程编译连接等规则的文件。 我们在终端输入完 make 命令之后&#xff0c;会调用 make 工具&#xff0c; make 就会在当前目录按照文件名就会找 makefile 文件&#xff0c; Makefile 的命名必须是 makefile 或 Makefile &#xff0c; m 大写小写都是可以…