【Linux】在centos快速搭建K8S1.18集群

news/2024/5/18 23:29:48

使用 kubeadm 创建集群帮助文档

如果您需要以下几点,该工具是很好的选择:kubeadm

  • 一种简单的方法,让你尝试 Kubernetes,可能是第一次。
  • 现有用户自动设置群集并测试其应用程序的一种方式。
  • 其他生态系统和/或安装程序工具中的构建块,具有更大的 范围。

kubeadm 创建k8s1.18集群

  • (一)安装要求
  • (二)准备环境
  • (三)所有节点安装docker/kubeadm/kubelet
    • 1.安装docker
    • 2.添加阿里云YUM软件源
    • 3.kubeadm,kubelet和kubectl
    • 4.克隆k8snode1及k8snode2
    • 5.部署kubeadm master
    • 6.加入kubernets node
    • 7.部署CNI网络插件
    • 8.测试kubernetes集群

(一)安装要求

  • 一台或多台机器,操作系统 CentOS7.x-86_x64

  • 硬件配置:2GB或更多RAM,2个CPU或更多,硬盘40GB或更多
    可以访问外网,可以远程连接,需要拉取镜像,如果服务器不能上网,需要提前下载镜像并导入节点

  • 在快速部署k8s(1.18)集群,采用前期准备操作在k8smaster上面完成,在需要分节点操作后以k8smaster克隆出k8snode1及k8snode2这两个节点。

操作系统IP主机名
CentOS7.x-86_x6410.0.0.50k8s-master
CentOS7.x-86_x6410.0.0.51k8s-node1
CentOS7.x-86_x6410.0.0.52k8s-node2

(二)准备环境

创建一个虚拟机k8smaster进入开启虚拟机:

关闭防火墙 
# systemctl stop firewalld
# systemctl disable firewalld     (关闭防火墙,并设置开机不自启)
关闭SELinux(最好设置永久关闭)
# selinux sed -i 's/enforcing/disabled/' /etc/selinux/config 
临时关闭
# setenforce 0  
关闭swap 
临时
# swapoff -a  
永久
# sed -ri 's/.*swap.*/#&/' /etc/fstab 
  • 根据规划设置主机名:hostnamectl set-hostname (k8smaster)
# hostnamectl set-hostname k8smaster
  • 在master中添加hosts
# cat >> /etc/hosts << EOF
10.0.0.50 k8smaster
10.0.0.51 k8snode1
10.0.0.52 k8snode2
EOF检测:
通过命令:
# ping k8smaster
# ping k8snode1
# ping k8snode2
来测试是否设置好静态名称解析
或者通过指令: 查看cat /etc/hosts  文件里是否有三个指令
  • 将桥接的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

(三)所有节点安装docker/kubeadm/kubelet

1.安装docker

# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo $ yum -y install docker-ce-18.06.1.ce-3.el7 
启动docker
# systemctl enable docker && systemctl start docker 
# docker --version (查看插件版本)
Docker version 18.06.1-ce, build e68fc7a

个人加速器配备,进入阿里云(容器镜像服务 (aliyun.com))镜像加速器选择centos复制加速器地址

在这里插入图片描述

# mkdir -p /etc/docker
# tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://x02mrg1w.mirror.aliyuncs.com"]
}
EOF
# systemctl daemon-reload
# systemctl restart docker

2.添加阿里云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

3.kubeadm,kubelet和kubectl

# yum install -y kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0
# systemctl enable kubelet

4.克隆k8snode1及k8snode2

完成如上操作后就可以克隆出k8snode1及k8snode2这两个节点了!!!

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.部署kubeadm master

在10.0.0.50(master)执行:

# kubeadm init \ --apiserver-advertise-address=10.0.0.50 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version v1.18.0 \ --service-cidr=10.96.0.0/12 \ --pod-network-cidr=10.244.0.0/16

在这里插入图片描述

6.加入kubernets node

在10.0.0.51/52(k8snode1和k8snode2)执行,
向集群添加新节点,执行在kubeadm init输出的kubeadm join命令:

# kubeadm join 10.0.0.50:6443 --token esce21.q6hetwm8si29qxwn

在这里插入图片描述

报错!!!

# echo 1 > /proc/sys/net/ipv4/ip_forward
# kubeadm init
执行完这两个命令后
检测:swap 命令(free -t)
防火墙是否关闭: systemctl status firewalld;
如果没有关闭则输入systemctl stop firewalld;systemctl disable firewalld
输入getenforce  状态为disable(标黄)
sysctl --system

在这里插入图片描述

如果还是执行不成功则使用命令kubeadm reset 清空数据,再进行如上的步骤

默认token有效期为24小时,当过期之后,该token就不可用了。这时就需要重新创建token,操作如下:在master节点操作如下: kubeadm token create --print-join-command

7.部署CNI网络插件

Centos无法访问外网
本质错误是vim /etc/sysconfig/network-scripts/ifcfg-ens33 配置文件中的错误,网关的错误,子网掩码错误则会导致无法ping通内网。

# wget
https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
# kubectl get nodes
NAME	STATUS	ROLES	AGE	VERSION	
k8smaster 	NotReady	master 117m	v1.18.0	

在这里插入图片描述

# kubeadm token create --print-join-command# kubectl apply -fhttps://raw.githubusercontent.com/coreos/fl annel/master/Documentation/kube-flannel.yml namespace/kube-flannel created
clusterrole.rbac.authorization.k8s.io/flannel created
clusterrolebinding.rbac.authorization.k8s.io/flannel created serviceaccount/flannel created
configmap/kube-flannel-cfg created
daemonset.apps/kube-flannel-ds created# kubectl get pods -n kube-system
NAME	READY	STATUS	RESTARTS	AGE	119m	
coredns-7ff77c879f-dfl52	0/1	Pending	
coredns-7ff77c879f-pmqvz	0/1	Pending	119m	
etcd-k8smaster kube-apiserver-k8smaster1/11/1 Runn ing Running120m120m
kube-controller-manager-k8smaster	1/1	Running	120m	
kube-proxy-24kdh	1/1	Running	Running	72s	
kube-proxy-h8p4d	1/1	2m31s	
kube-proxy-w6bfp	1/1	Running	119m	
kube-scheduler-k8smaster	1/1	Running	120m	# curl -fsSL https://addons.kuboard.cn/kuboard/kuboard-static-

在这里插入图片描述

# sh kuboard.sh current ip address is 10.0.0.50 create file /root/kuboard-sa.yaml# kubectl get pods -n kube-system
NAME coredns-7ff77c879f-dfl521/1 READY STATUS Running RESTARTS AGE121m
coredns-7ff77c879f-pmqvz	1/1	Running	121m	
etcd-k8smaster	1/1	Running	121m	
kube-apiserver-k8smaster	1/1	Running	0	121m	
kube-proxy-24kdh kube-controller-manager-k8smaster1/11/1 Running Running121m2m28s
kube-proxy-h8p4d	1/1	Running	Running	3m47s	
kube-proxy-w6bfp	1/1	121m	
kube-scheduler-k8smaster	1/1	Running	121m	# kubectl get nodes
NAME	STATUS	ROLES	AGE	VERSION	
k8smaster	Ready	master	121m	v1.18.0	
k8snode1	Ready	<none>	4m15s	v1.18.0	
k8snode2	Ready	<none>	2m56s	v1.18.0

在这里插入图片描述

查看到各项状态都是run、ready的模式的状态则可以进入:http:\10.0.0.50

用户名: admin
密 码: Kuboard123
新建一个集群

在这里插入图片描述

8.测试kubernetes集群

在Kubernetes集群中创建一个pod,验证是否正常运行:

# kubectl create deployment nginx --image=nginx
# kubectl expose deployment nginx --port=80 --type=NodePort   //检测、验证
# kubectl get pod,svc   //创建pod

在这里插入图片描述

访问网址:http:/10.0.0.51:31696 访问nginx

在这里插入图片描述


http://www.mrgr.cn/p/40042410

相关文章

spark和scala的搭建

Scala--部署安装步骤 (1)上传并解压安装scala安装包 例:tar -zxvf scala--** -C 指定位置 (2)设置环境变量 vim /etc/profile export SCALA_HOME=spark软件包位置 export PATH=$PATH:${SCALA_HOME}/binsource /etc/profile使环境变量生效 (3)验证scala 启动成功spark--部…

网络拓扑—DNS服务搭建

作者:竹等寒 均使用Windows Server 2003进行搭建DNS服务搭建 网络拓扑 为了节省我的U盘空间,没有用路由器,所以搭建的环境只要在同网段即可。//交换机不用考虑 DNS:192.168.1.1 P C:192.168.1.2配置网络 DNSipconfig 查看网卡配置,可以看到配置成功了PCipconfig /all查看…

C++必修:从C到C++的过渡(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C学习 贝蒂的主页&#xff1a;Betty’s blog 1. 缺省参数 1.1. 缺省参数的使用 缺省参数是声明或定义函数时为函数的参数指定…

2023CPCC河南省赛题解+总结

2023CPCC河南省赛题解+总结比赛链接:https://codeforces.com/gym/104354 答题情况:答题情况 开题顺序是:A-F-H-K-E-B-G 题面链接:https://codeforces.com/gym/104354/attachments/download/20061/statements_2.pdf Problem A. 小水獭游河南 签到题,队友写的 题意:给你一…

新手也能学会的甘特图制作教程

## 甘特图是什么?甘特图(Gantt Chart)是一种以图表形式直观展示项目计划的工具,由20世纪初的管理学家亨利甘特(Henry Gantt)发明并命名。它具有以下几个主要特点:1. 水平时间轴甘特图的横轴是一条时间轴,通常按天、周或月来刻度,直观展示了项目从开始到结束的整个时间跨度。2.…

如何部署 wfs 分布式服务

说明&#xff1a; wfs是海量小文件存储系统。wfs1.x不直接支持分布式存储&#xff0c;但为了应对大规模部署和高可用需求&#xff0c;推荐采用如Nginx这样的负载均衡服务&#xff0c;通过合理的资源配置和定位策略&#xff0c;可以在逻辑上模拟出类似分布式的效果。也就是说&am…

4-25 WP整理

AliyunCTF 2024 - 帕鲁情绪管理 nc链接上去过掉proof看到如下交互 sha256(("zqonds929lsi1d19ayrm6xdxogid" + "????").encode()) = 447dedc4395aae3f6344689b6fdeadc71d7759c3d9b5071ce318267ed587ce97 Please input the answer: Do you want to tra…

二维前缀和与差分

前言 延续前面所讲的一维前缀和以及差分&#xff0c;现在来写写二维前缀和与差分 主要这个画图就比前面的一维前缀和与差分复杂一点&#xff0c;不过大体思路是一样的 一维和二维的主要思路在于一维是只针对对一行一列&#xff0c;而二维是针对与一个矩阵的 好吧&#xff0…

嵌入式Linux driver开发实操(十八):Linux音频ALSA开发

应用程序程序员应该使用库API,而不是内核API。alsa库提供了内核API 100%的功能,但增加了可用性方面的主要改进,使应用程序代码更简单、更美观。未来的修复程序或兼容性代码可能会放在库代码中,而不是放在内核驱动程序中。 使用ALSA API和libasound进行简单的声音播放: /*…

麒麟 Kylin V10 一键安装 Oracle 11GR2 单机 ASM(231017)

前言 Oracle 一键安装脚本&#xff0c;演示麒麟 Kylin V10 一键安装 Oracle 11GR2 单机 ASM&#xff08;231017&#xff09;过程&#xff08;全程无需人工干预&#xff09;&#xff1a;&#xff08;脚本包括 ORALCE PSU/OJVM 等补丁自动安装&#xff09; ⭐️ 脚本下载地址&a…

Hbase学习笔记

Hbase是什么 HBase是一个高可靠、高性能、面向列、可伸缩的分布式存储系统。它利用Hadoop HDFS作为其文件存储系统,并提供实时的读写的数据库系统。HBase的设计思想来源于Google的BigTable论文,是Apache的Hadoop项目的子项目。它适合于存储大表数据,并可以达到实时级别。HB…

深度神经网络(DNN)

通过5个条件判定一件事情是否会发生&#xff0c;5个条件对这件事情是否发生的影响力不同&#xff0c;计算每个条件对这件事情发生的影响力多大&#xff0c;写一个深度神经网络&#xff08;DNN&#xff09;模型程序,最后打印5个条件分别的影响力。 示例 在深度神经网络&#xf…

栈(Stack)的原理与代码实现

介绍栈的原理,并分别使用数组和链表实现栈的结构。栈(stack) 原理说明: ​ 学习数据结构的目的是为了更好的处理和存储数据,对于顺序表而言改查比较容易,增删比较麻烦,对于链式表而言,增删比较简单,改查比较麻烦,所以每种数据结构都有不同的特点,用户需要选择合适的…

eBay、亚马逊自养号测评如何避免风控账号关联选择合适网络IP环境

在自养号下单中选择适合的网络环境至关重要。经过多次实践与测试&#xff0c;积累了大量的经验&#xff0c;希望能够与大家分享&#xff0c;帮助大家避开陷阱&#xff0c;顺利前行。 市面上的网络环境种类繁多&#xff0c;从纯IP类的Luminati、Rola&#xff0c;到纯环境类的VM…

linux centos8 系统扩容 VMware Centos---VMware ESXi

linux 系统扩容 VMware Centos---VMware ESXi 用到的命令 df fdisk pvcreate pvdisplay vgdisplay vgextend lvdisplay lvextend resize2fs 01) 使用了一段时间虚拟机后发现磁盘不够用了,需要扩容。在客户端操作扩容出现磁盘已成功扩展。 您必须从客户机操作系…

使用 Redis 实现限流——滑动窗口算法

用 Go 语言实现滑动窗口限流算法,并利用 Redis 作为存储后端,可以按照以下步骤进行设计和编码。滑动窗口限流的核心思想是维护一个固定时间窗口,并在窗口内记录请求次数,当窗口滑动时,旧的请求计数被移除,新的请求计数被添加。这里以 Redis 的有序集合(Sorted Set,简称…

Tomcat调优总结(Tomcat自身优化、Linux内核优化、JVM优化)【转】

Tomcat自身的调优是针对conf/server.xml中的几个参数的调优设置。首先是对这几个参数的含义要有深刻而清楚的理解。以tomcat8.5为例,讲解参数。 同时也得认识到一点,tomcat调优也受制于linux内核。linux内核对tcp连接也有几个参数可以调优。 因此我们可以将tomcat调优分为lin…

提升工作效率必备,桌面待办事项提醒软件

在快节奏的现代社会,提升工作效率成为众多上班族的共同追求。有效的时间管理、合理的工作计划和正确的工具选择,是实现高效工作的三大关键。尤其是选择一款优秀的待办事项管理软件,能够极大地助力我们提升工作效率。 而我在网上找到了一款提升工作效率必备神器软件,它就是2…

S3-FIFO

S3-FIFO 本文作为下一篇缓存文章的预备知识。 背景 基于LRU和FIFO的驱逐 FIFO和LRU都是经典的缓存驱逐算法,在过去几十年中也出现了很多追求更高效率的驱逐算法,如ARC, 2Q, LIRS, TinyLFU。传统观点认为,基于LRU的缓冲未命中率要低于基于FIFO的算法,如CLOCK,这类高级算法通…

python读取yaml配置文件的方法

yaml简介1.yaml [ˈjməl]: Yet Another Markup Language :另一种标记语言。yaml 是专门用来写配置文件的语言,非常简洁和强大,之前用ini也能写配置文件,看了yaml后,发现这个更直观,更方便,有点类似于json格式 2.yaml基本语法规则: 大小写敏感 使用缩进表示层级关系 缩进…