【云原生】kubeadm快速搭建K8s集群Kubernetes1.19.0

目录

一、 Kubernetes 的概述

二、服务器配置

2.1 服务器部署规划

2.2服务器初始化配置

三、安装Docker/kubeadm/kubelet【所有节点】

3.1 安装Docker

3.2 添加阿里云YUM软件源

3.3 安装kubeadm,kubelet和kubectl

四、部署Kubernetes Master

五、部署Kubernetes Node

六、部署容器网络(CNI)

七、测试kubernetes集群


一、 Kubernetes 的概述


Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。 Kubernetes 拥有一个庞大且快速增长的生态,其服务、支持和工具的使用范围相当广泛。

Kubernetes 这个名字源于希腊语,意为“舵手”或“飞行员”。k8s 这个缩写是因为 k 和 s 之间有八个字符的关系。 Google 在 2014 年开源了 Kubernetes 项目。 Kubernetes 建立在Google 大规模运行生产工作负载十几年经验的基础上, 结合了社区中最优秀的想法和实践。

中文官网:Kubernetes 架构

二、服务器配置


2.1 服务器部署规划

角色

IP

配置

组件

k8s-master1

192.168.2.130

4c/8G/100G

apiServer , controller, schedule, etcd

k8s-node1

192.168.2.131

4c/6G/100G

kubelet , kube-proxy, docker ,etcd

k8s-node2

192.168.2.132

4c/6G/100G

kubelet , kube-proxy, docker ,etcd

2.2服务器初始化配置

# 所有节点都要配置#关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld#关闭selinux:
sed -i 's/enforcing/disabled/' /etc/selinux/config  # 永久
setenforce 0  # 临时# 关闭swap:
swapoff -a  # 临时
vim /etc/fstab  # 永久禁用,打开/etc/fstab注释掉swap那一行。设置主机名:
hostnamectl set-hostname <hostname>#在master添加hosts:
cat >> /etc/hosts << EOF
192.168.2.130 k8s-master1
192.168.2.131 k8s-node1
192.168.2.132 k8s-node2
EOF# 免密
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub k8s-node1
ssh-copy-id -i .ssh/id_rsa.pub k8s-node2# 将桥接的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  cn.pool.ntp.org1)crontab -e* */1 * * * /usr/sbin/ntpdate   cn.pool.ntp.org2)重启crond服务:
service crond restart# 基础命令 
yum install  bash-completion  lrzsz  tree  vim  wget  net-tools zip unzip -y

三、安装Docker/kubeadm/kubelet【所有节点】


3.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
systemctl enable docker && systemctl start docker

配置镜像下载加速器:

mkdir  -p /etc/docker/
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors":["https://rsbud4vc.mirror.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn","https://dockerhub.azk8s.cn","http://hub-mirror.c.163.com","http://qtid6917.mirror.aliyuncs.com"] 
}
EOFsystemctl restart docker
docker info

3.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.3 安装kubeadm,kubelet和kubectl

yum install -y kubelet-1.19.0 kubeadm-1.19.0 kubectl-1.19.0
systemctl enable kubelet

四、部署Kubernetes Master


在192.168.2.130(Master)执行。

kubeadm init \--apiserver-advertise-address=192.168.2.130 \--image-repository registry.aliyuncs.com/google_containers \--kubernetes-version v1.19.0 \--pod-network-cidr=10.244.0.0/16 \--ignore-preflight-errors=all
  • --apiserver-advertise-address 集群通告地址
  • --image-repository 由于默认拉取镜像地址k8s.gcr.io国内无法访问,这里指定阿里云镜像仓库地址
  • --kubernetes-version K8s版本,与上面安装的一致
  • --service-cidr 集群内部虚拟网络,Pod统一访问入口
  • --pod-network-cidr Pod网络,,与下面部署的CNI网络组件yaml中保持一致

或者使用配置文件引导:

vi kubeadm.conf
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: v1.19.0
imageRepository: registry.aliyuncs.com/google_containers 
networking:podSubnet: 10.244.0.0/16 serviceSubnet: 10.96.0.0/12 kubeadm init --config kubeadm.conf --ignore-preflight-errors=all  

拷贝kubectl使用的连接k8s认证文件到默认路径:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
## 执行添加节点
kubectl get nodes
NAME         STATUS   ROLES    AGE   VERSION
k8s-master   Ready    master   2m   v1.19.0

五、部署Kubernetes Node


在192.168.2.131/132(Node)执行。

向集群添加新节点,执行在kubeadm init输出的kubeadm join命令:

kubeadm join 192.168.2.130:6443 --token y5of4a.b9g9atwa6mzprag0 \--discovery-token-ca-cert-hash sha256:4538525e80edd27056cdb6b2e1d75373cf91ef1ff21b8bd7437551d64b9ed281 

六、部署容器网络(CNI)


Calico是一个纯三层的数据中心网络方案,Calico支持广泛的平台,包括Kubernetes、OpenStack等。

Calico 在每一个计算节点利用 Linux Kernel 实现了一个高效的虚拟路由器( vRouter) 来负责数据转发,而每个 vRouter 通过 BGP 协议负责把自己上运行的 workload 的路由信息向整个 Calico 网络内传播。

此外,Calico 项目还实现了 Kubernetes 网络策略,提供ACL功能。

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

下载完后还需要修改里面定义Pod网络(CALICO_IPV4POOL_CIDR),与前面kubeadm init指定的一样

修改完后应用清单:

kubectl apply -f calico.yaml
kubectl get pods -n kube-system

节点查看

七、测试kubernetes集群


  • 验证Pod工作
  • 验证Pod网络通信
  • 验证DNS解析

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

kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
kubectl get pod,svc

访问地址:http://NodeIP:Port

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

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

相关文章

网络入侵检测系统之Suricata(十四)--匹配流程

其实规则的匹配流程和加载流程是强相关的&#xff0c;你如何组织规则那么就会采用该种数据结构去匹配&#xff0c;例如你用radix tree组织海量ip规则&#xff0c;那么匹配的时候也是采用bit test确定前缀节点&#xff0c;然后逐一左右子树查询&#xff0c;Suricata也是如此&…

Vue 3 中的 ref 和 reactive 有什么区别?

Vue 3 中的 ref 和 reactive 有什么区别&#xff1f; Vue 3 引入了 Composition API&#xff0c;作为对传统 Options API 的补充。在 Composition API 中&#xff0c;ref 和 reactive 是两个核心的函数&#xff0c;用于创建响应式数据。虽然它们的目标都是使数据变得响应式&am…

程序员选择职业赛道2024

程序员如何选择职业赛道&#xff1f; 程序员的职业赛道就像是一座迷宫&#xff0c;有前端的美丽花园&#xff0c;后端的黑暗洞穴&#xff0c;还有数据科学的神秘密室。你准备好探索这个充满挑战和机遇的迷宫了吗&#xff1f;快来了解如何选择职业赛道吧&#xff01; 方向一&a…

基于Spring Boot的图书个性化推荐系统 ,计算机毕业设计(带源码+论文)

源码获取地址&#xff1a; 码呢-一个专注于技术分享的博客平台一个专注于技术分享的博客平台,大家以共同学习,乐于分享,拥抱开源的价值观进行学习交流http://www.xmbiao.cn/resource-details/1765769136268455938

Doris实战——特步集团零售数据仓库项目实践

目录 一、背景 二、总体架构 三、ETL实践 3.1 批量数据的导入 3.2 实时数据接入 3.3 数据加工 3.4 BI 查询 四、实时需求响应 五、其他经验 5.1 Doris BE内存溢出 5.2 SQL任务超时 5.3 删除语句不支持表达式 5.4 Drop 表闪回 六、未来展望 原文大佬的这篇Doris数…

探索macOS上的最佳MySQL客户端工具

在数据库管理和开发的世界里&#xff0c;选择一个高效、功能全面的客户端工具对于提升工作效率至关重要。尤其对于使用 macOS 的开发者来说&#xff0c;一个好的 MySQL 客户端不仅可以简化数据库操作&#xff0c;还能提供强大的数据分析和管理功能。本文将介绍几款适用于 macOS…

离散数学——(3)联结词及对应的真值指派,最小全功能联结词集,对偶式,范式,范式存在定理,小项

目录 1.联结词及对应的真值指派 2.最小全功能联结词集 3.对偶式 4.范式 1.析取范式 5.范式存在定理 6.小项 1.联结词及对应的真值指派 2.最小全功能联结词集 3.对偶式 4.范式 1.析取范式 5.范式存在定理 6.小项

hfish蜜罐搭建与使用

本次是对自己在学习蓝队过程中的一次对安全设备 hfish蜜罐的搭建和使用考核记录,距离之前已 经过去很久了,对之前在考核过程中的操作进行回顾和总结. 蜜罐在这里我进行免费分享 hfish-3.1.4-windows-amd64.zip官方版下载丨最新版下载丨绿色版下载丨APP下载-123云…

Visual Studio如何进行类文件的管理(类文件的分离)

大家好&#xff1a; 衷心希望各位点赞。 您的问题请留在评论区&#xff0c;我会及时回答。 一、问题背景 实际开发中&#xff0c;类的声明放在头文件中&#xff0c;给程序员看类的成员和方法。比如&#xff1a;Dog.h&#xff08;类的声明文件&#xff09; 类的成员函数的具体…

风机基础防冲刷措施有那些?

在文章如果在海底插一根桩或者棍子&#xff0c;它的冲刷范围和深度如何&#xff1f;里&#xff0c;局部冲刷比如在海底插一根桩&#xff0c;会经历纵向切蚀、横向扩展和稳定状态三个过程&#xff0c;历时大约20h&#xff0c;之后最大冲刷深度基本不变&#xff0c;冲刷达到稳定状…

【Javascript】数组的方法清单

数组的类型相关 方法描述备注Array.isArray()判断是否为数组toString()将数组转换为字符串不会改变原数组join()将数组转换为字符串&#xff0c;返回结果为转换后的字符串不会改变原数组字符串的方法&#xff1a;split()将字符串按照指定的分隔符&#xff0c;组装为数组不会改…

继承,切片,隐藏

定义&#xff1a; 子类&#xff08;派生类&#xff09;继承了父类&#xff08;基类&#xff09;的成员函数和成员变量&#xff08;类层次的复用&#xff09; 赋值 子类可以赋值给父类。父类不可以直接复制给子类 &#xff08;不像不同内置类型的赋值要转化为临时变量&#xf…

MySQL产生死锁的根本原因及解决方法

概念 死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等的进程称为死锁进程 一、 什么是死锁 死锁是指两个或两个以上的进程在执行过程中,因争夺…

U盘上文件夹突然空了?掌握3个方法,轻松找回数据!

“我的u盘插上之后&#xff0c;不知道为什么就空了&#xff0c;里面所有的文件都没有了&#xff0c;有什么方法可以找回u盘里丢失的文件吗&#xff1f;” 在日常使用U盘的过程中&#xff0c;我们有时会遇到一个令人头疼的问题&#xff0c;U盘上的文件夹突然空了。这究竟是怎么回…

Windows系统安装MongoDB并结合内网穿透实现公网访问本地数据库

文章目录 前言1. 安装数据库2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射2.3 测试随机公网地址远程连接 3. 配置固定TCP端口地址3.1 保留一个固定的公网TCP端口地址3.2 配置固定公网TCP端口地址3.3 测试固定地址公网远程访问 前言 MongoDB是一个基于分布式文件存储的数…

DHCP部署与安全

在当今快速发展的网络世界中&#xff0c;动态主机配置协议&#xff08;DHCP&#xff09;扮演着至关重要的角色。这项技术不仅简化了网络管理&#xff0c;还提高了网络资源的利用率。本文旨在深入探讨DHCP的工作原理、优势以及如何有效部署和保护DHCP服务器。 一、DHCP作用 自…

Flutter的线程模型

在Flutter框架中&#xff0c;Embedder层负责把Flutter嵌入到各个平台上去&#xff0c;其所做的主要工作包括线程设置、渲染Surface设置&#xff0c;以及插件等。因此&#xff0c; Embedder负责线程的创建和管理&#xff0c;并且提供Task Runner给Engine使用。Engine则是负责提供…

Mysql深入学习 基础篇 Ss.05多表查询语法及案例

世界总是在推着我走&#xff0c;我自己一个人也能站稳 —— 24.3.7 一、多表关系 1.概述 项目开发中&#xff0c;在进行数据库表结构设计时&#xff0c;会根据业务需求及业务模块之间的关系&#xff0c;分析并设计表结构&#xff0c;由于业务之间相互关联&#xff0c;所以各个…

Croissant:Google新推出的一个为机器学习准备的数据集元数据格式

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

优雅应对商业谈判中的软件质疑

在软件开发的道路上&#xff0c;商业谈判是不可避免的一环。然而&#xff0c;当他人指出软件UI设计或功能存在问题时&#xff0c;如何优雅而有效地应对成为了关键。以下是一些建议&#xff0c;帮助你在类似情况中妥善处理&#xff0c;维护好你的软件开发声誉。 1. 保持冷静与专…