k8s集群安装

目录

部署步骤概览

1、基础环境部署

2、docker环境部署

3、配置k8s集群

4、集群初始化

5、安装dashboard软件


写在前面:本文安装单点master多node的k8s集群,主要用于k8s学习或k8s环境测试;部署的是1.23版本,在1.24版本起,K8S底层使用的是containerd容器;之后还会不定期更新k8s的相关内容!

部署步骤概览

1、基础环境部署

1、安装两台新的centos7虚拟机(我这里演示一台做master,一台做node,还可以多家几台node,对node的操作不多哦!)
2、配置静态IP地址
3、刷新网络服务
4、设置主机名,区分虚拟机

(以上是一些简单的环境部署,以前的文章有提过,这里就不多赘述啦)

下面的操作是matser和node同步,所以可以在shell里面这样设置,就可以同时操作:

5、配置hosts文件,通过主机名互相访问:

6、关闭selinux和防火墙

[root@k8s-master ~]# vim /etc/selinux/config
将selinux=enforcing改成selinux=disabled

[root@k8s-master ~]# service firewalld stop
Redirecting to /bin/systemctl stop firewalld.service
[root@k8s-master ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

7、关闭交换分区

原因:交换分区是当内存不够时,会使用swap分区,但是swap分区的性能不高,所以k8s默认不允许使用;

临时关闭:[root@k8s-master ~]# swapoff -a
永久关闭:[root@k8s-master ~]# vim /etc/fstab注释最后一行

8、调整内核参数,输入以下命令:

overlay用于支持overlay文件系统,提供容器所需的文件系统隔离;
br_netfilter用于Linux桥接网络和IP数据包过滤,实现K8S的网络通信;

确保相关数据包被正确的转发,确保容器之间的流量能够正确的被主机转发;

9、更新和配置软件源:

添加阿里云yum源:[root@k8s-master ~]# wget -O /etc/yum.repos.d/Centos-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
生成yum元数据缓存:[root@k8s-master ~]# yum clean all && yum makecache
配置阿里云docker yum仓库源:[root@k8s-master ~]# yum install -y yum-utils
[root@k8s-master ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

10、配置ipvs功能(实现负载均衡):

[root@k8s-master ~]# yum install -y ipset ipvsadm

加载对应模块:

11、配置时间同步:

[root@k8s-master ~]# systemctl start chronyd && systemctl enable chronyd
[root@k8s-master ~]# timedatectl set-timezone Asia/Shanghai
查看时间相关设置:[root@k8s-master ~]# timedatectl

基础环境部署就完成了!

2、docker环境部署

1、下载并启动docker:

[root@k8s-master ~]# yum install -y docker-ce-20.10.24-3.el7 docker-ce-cli-20.10.24-3.el7 containerd.io
启动docker:[root@k8s-master ~]# systemctl start docker
设置开机启动:[root@k8s-master ~]# systemctl enable docker
验证:[root@k8s-master ~]# systemctl status docker

2、配置docker,然后重启docker:

3、重启虚拟机,验证是否装好:

[root@k8s-node1 docker]# reboot
[root@k8s-node1 ~]# docker ps
#这里使用docker ps看docker是否启动成功

docker的环境就准备好了!

3、配置k8s集群

1、配置K8S组件源:

构建本地yum缓存:[root@k8s-master ~]# yum makecache

2、安装K8S:

[root@k8s-master ~]# yum install -y kubeadm-1.23.17-0 kubelet-1.23.17-0 kubectl-1.23.17.0
[root@k8s-master ~]# cat <<EOF > /etc/sysconfig/kubelet 
> KUBELET_CGROUP_ARGS="--cgroup-driver=systemd"
> KUBE_PROXY_MODE="ipvs"
> EOF
[root@k8s-master ~]# systemctl enable --now kubelet

第三步也完成了!

4、集群初始化

最开始不是所有会话一起操作的吗?现在开始主要是在master的操作:

1、mster集群初始化(只在maste上做):

[root@k8s-master ~]# kubeadm init \
> --kubernetes-version=v1.23.17 \
> --pod-network-cidr=10.224.0.0/16 \
> --service-cidr=10.96.0.0/12 --apiserver-advertise-address=192.168.10.150 \
> --image-repository=registry.aliyuncs.com/google_containers

#上面图片里copy下来一条条运行的!!!
[root@k8s-master ~]# mkdir -p $HOME/.kube
[root@k8s-master ~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
[root@k8s-master ~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

2、将node加入master集群:

上面复制的那个,复制到node节点上,有几个节点就复制到所有node上;我这里只开了一台做node,所以只加了一个进去。

在master上查看node:

在master上给node打标签:[root@k8s-master ~]# kubectl label node k8s-node1 node-role.kubernetes.io/worker=worker

3、安装Calico网络插件:

[root@k8s-master ~]# wget https://docs.projectcalico.org/archive/v3.25/manifests/calico.yaml
[root@k8s-master ~]# kubectl apply -f calico.yaml
等待status都变成ready:[root@k8s-master ~]# kubectl get node

4、K8S配置ipvs:

[root@k8s-master ~]# kubectl edit configmap kube-proxy -n kube-system

按a修改:

删掉所有kube-proxy使之重启:
[root@k8s-master ~]# kubectl delete pods -n kube-system -l k8s-app=kube-proxy

5、验证集群搭建成功:

验证,出现如下效果即可:

第四步也结束了!现在集群已经搭建好了,下面的操作可做可不做,给大家介绍一个dashboard的软件,有可视化的效果。

5、安装dashboard软件

安装软件Dahboard(只在master上执行)

[root@k8s-master ~]# wget https://mirror.ghproxy.com/https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
[root@k8s-master ~]# vim recommended.yaml

启动:[root@k8s-master ~]# kubectl apply -f recommended.yaml
查看:[root@k8s-master ~]# kubectl get pods,svc -n kubernetes-dashboard

要等到运行出来了在做下一步!!!

[root@k8s-master ~]# vim dashboard-access-token.yaml

在文件里编辑以下内容:

[root@k8s-master ~]# cat dashboard-access-token.yaml 
#Creating a Service Account  
apiVersion: v1  
kind: ServiceAccount  
metadata:  
  name: admin-user  
  namespace: kubernetes-dashboard  
---  
# Creating a ClusterRoleBinding  
apiVersion: rbac.authorization.k8s.io/v1  
kind: ClusterRoleBinding  
metadata:  
  name: admin-user  
roleRef:  
  apiGroup: rbac.authorization.k8s.io  
  kind: ClusterRole  
  name: cluster-admin  
subjects:  
- kind: ServiceAccount    
  name: admin-user  
  namespace: kubernetes-dashboard  
---  
# Getting a long-lived Bearer Token for ServiceAccount  
apiVersion: v1  
kind: Secret  
metadata:  
  name: admin-user
  namespace: kubernetes-dashboard  
  annotations:  
    kubernetes.io/service-account.name: "admin-user"  
type: kubernetes.io/service-account-token
[root@k8s-master ~]# kubectl apply -f dashboard-access-token.yaml
访问dashboard:[root@k8s-master ~]# kubectl get svc -n kubernetes-dashboard

去windows里访问网址:

获取tocken登录:[root@k8s-master ~]# kubectl get secret admin-user -n kubernetes-dashboard -o jsonpath={".data.token"}|base64 -d

运行效果:

此次分享到这里就结束了,如果有问题欢迎后台留言或评论区留言!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android 官网Ota介绍

构建 OTA 软件包 | Android 开源项目 | Android Open Source Project

【RabbitMQ】可靠性策略(幂等,消息持久化)

MQ可靠性策略 发送者的可靠性问题生产者的重连生产者确认 MQ的可靠性数据持久化Lazy Queue 消费者的可靠性问题消费者确认机制消息失败处理 业务幂等性简答问题 发送者的可靠性问题 生产者的重连 可能存在由于网络波动&#xff0c;出现的客户端连接MQ失败&#xff0c;我们可以…

无人机+无人车:自组网协同技术及应用前景详解

无人车&#xff0c;也被称为自动驾驶汽车、电脑驾驶汽车或轮式移动机器人&#xff0c;是一种通过电脑系统实现无人驾驶的智能汽车。这种汽车依靠人工智能、视觉计算、雷达、监控装置和全球定位系统协同合作&#xff0c;使得电脑可以在没有任何人类主动操作的情况下&#xff0c;…

SpringBoot 基础简介

目录 1. SpringBoot 概述 1.1. 为什么会有springboot 1.1.1. 传统Spring 的两个缺点 1.1.2. Springboot 功能 2. SpringBoot 快速搭建 2.1. 创建Maven项目​编辑​编辑​编辑 2.2. 导入SpringBoot起步依赖 2.3. 定义controller 2.4. 添加引导类 2.5. 启动访问 3. Sprin…

香港理工大学内地事务总监陆海天教授确认出席“边缘智能2024 - AI开发者峰会”并发表主题演讲

隨著AI技術的日新月異&#xff0c;我們正步入一個邊緣計算智能化與分布式AI相互融合的新紀元。這一變革不僅推動了分布式智能創新應用的飛速發展&#xff0c;還使得邊緣智能——這一結合邊緣計算和智能技術的新興領域&#xff0c;逐漸成為引領AI發展的重要力量。通過其分布式和…

在家连学校的服务器

在家连接学校的服务器。 Step1: 首先下载一个vscode的插件 Visual Studio Code - Code Editing. Redefined 我的服务区是ubuntu20.04&#xff0c;x64的&#xff0c;所以下载这个。 Step2: 下载到本地之后&#xff0c;想办法将这个文件拷贝到你的服务器上。 Step3: 解压该包…

零基础该如何自学linux运维?

零基础该如何自学linux运维&#xff1f;以下是建议帮助你入门Linux运维的一些建议。 一、自学建议&#xff1a; 理解基础概念&#xff1a;首先&#xff0c;你需要对Linux操作系统的基本概念有所了解&#xff0c;包括文件系统、用户权限、进程管理等。安装Linux系统&#xff1…

AI-数学-高中-47导数与几何意义

原作者视频&#xff1a;【导数】【考点精华】7导数与几何意义考点解析&#xff08;基础&#xff09;_哔哩哔哩_bilibili 该点处切点的斜率 该点处导函数的值 示例1&#xff1a; 导数问题解决最常用方法&#xff1a;参数分离&#xff0c;在左边函数有解的值域范围内。 示例2&…

Jackson-jr 对比 Jackson

关于Jackson-jr 对比 Jackson 的内容&#xff0c;有人在做了一张下面的图。 简单点来说就 Jackson-jr 是Jackson 的轻量级应用&#xff0c;因为我们在很多时候都用不到 Jackson 的很多复杂功能。 对很多应用来说&#xff0c;我们可能只需要使用简单的 JSON 读写即可。 如我们…

微服务总览

微服务保护 微服务总览 微服务总览 接入层&#xff1a;反向代理功能&#xff0c;可以将用户域名访问的地址以负载均衡的方式代理到网关地址&#xff0c;并且并发能力非常高&#xff0c;并且会采用主备nginx的方式防止nginx寄了&#xff0c;备份nginx监控主nginx状态&#xff0c…

CMakeLists.txt 文件内容分析

一. 简介 前一篇文章学习了针对只有一个 .c源文件&#xff0c;cmake工具是如何使用编译的&#xff0c;文章如下&#xff1a; cmake的使用方法:单个源文件的编译-CSDN博客 本文对 所编写的 CMakeLists.txt文件的内容进行分析。从而了解如何编写一个 CMakeLists.txt文件。 二…

ElasticSearch01(ES简介,安装ES,操作索引,操作文档,RestAPI)【全详解】

目录 一、ES简介 1. 数据库查询的问题 2. ES简介 1 ElasticSearch简介 2 ElasticSearch发展 3. 倒排索引【面试】 1 正向索引 2 倒排索引 4. ES和MySql 5. 小结 二、安装ES 1. 方式1:使用docker安装 1 准备工作 2 创建ElasticSearch容器 3 给ElasticSearch配置i…

百度网盘里的文件怎么打印?

在日常生活和工作中&#xff0c;我们经常需要打印各种文件&#xff0c;包括学习资料、工作报告、合同文件等。有时候&#xff0c;这些文件保存在百度网盘等云存储服务中&#xff0c;我们该如何方便地打印出来呢&#xff1f;今天&#xff0c;就为大家介绍一种便捷的方法——通过…

一对一WebRTC视频通话系列(二)——websocket和join信令实现

本系列博客主要记录WebRtc实现过程中的一些重点&#xff0c;代码全部进行了注释&#xff0c;便于理解WebRTC整体实现。 一对一WebRTC视频通话系列往期博客&#xff1a; 一对一WebRTC视频通话系列&#xff08;一&#xff09;—— 创建页面并显示摄像头画面 websocket和join信令…

深入浅出学习Pytorch—Pytorch简介与2024年最新安装(GPU)

深入浅出学习Pytorch—Pytorch简介 学习原因&#xff1a;Pytorch日益增长的发展速度与深度学习时代的迫切需要 Pytorch模型训练 pytorch实现模型训练包括以下的几个方面&#xff08;学习路线&#xff09; 数据&#xff1a;数据预处理与数据增强模型&#xff1a;如何构建模型模…

全栈开发之路——前端篇(4)watch监视、数据绑定和计算属性

全栈开发一条龙——前端篇 第一篇&#xff1a;框架确定、ide设置与项目创建 第二篇&#xff1a;介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇&#xff1a;setup语法&#xff0c;设置响应式数据。 辅助文档&#xff1a;HTML标签大全&#xff08;实时更新&#xff…

【JVM】从硬件层面和应用层面的有序性和可见性,到Java的volatile和synchronized

Java的关键字volatile保证了有序性和可见性&#xff0c;这里我试着从底层开始讲一下有序性和可见性。 一&#xff0c;一致性 数据如果同时被两个cpu读取了&#xff0c;如何保证数据的一致性&#xff1f;或者换句话说&#xff0c;cpu1改了数据&#xff0c;cpu2的数据就成了无效…

esp32-cam 1. 出厂固件编译与测试

0. 环境 - ubuntu18 - esp32-cam - usb转ttl ch340 硬件连接 esp32-camch340板子U0RTXDU0TRXDGNDGND5V5V 1. 安装依赖 sudo apt-get install vim sudo apt install git sudo apt-get install git wget flex bison gperf python python-pip python-setuptools python-serial p…

【Linux】awk命令学习

最近用的比较多&#xff0c;学习总结一下。 文档地址&#xff1a;https://www.gnu.org/software/gawk/manual/gawk.html 一、awk介绍二、语句结构1.条件控制语句1&#xff09;if2&#xff09;for3&#xff09;while4&#xff09;break&continue&next&exit 2.比较运…

20240503解决Ubuntu20.04和WIN10双系统下WIN10的时间异常的问题

20240503解决Ubuntu20.04和WIN10双系统下WIN10的时间异常的问题 2024/5/3 9:33 缘起&#xff1a;因为工作需要&#xff0c;编译服务器上都会安装Ubuntu20.04。 但是因为WINDOWS强悍的生态系统&#xff0c;偶尔还是有必须要用WINDOWS的时候&#xff0c;于是也安装了WIN10。 双系…