快速部署k8s

devtools/2024/9/23 5:58:01/

一、前提

 服务器规划:
角色IP地址
master192.168.140.128
node1192.168.140.129
node2192.168.140.131

服务器要求:
  • 建议最小硬件配置: 2核CPU、2G内存、20G硬盘。
  • 服务器可以访问互联网,能够联网下载镜像。
  • 时间进行同步!!!
软件环境;
软件版本
操作系统CentOS 7
Docker26.0.1(CE)
Kubernetes1.28

二、初始化设置

##安装ntp
yum -y install chrony
systemctl enable chronyd --now && chronyc sources##设置主机名称解析
tee -a /etc/hosts << EOF
192.168.140.128    master
192.168.140.129    node1
192.168.140.130    node2
EOF##关闭selinux
sed -i 's/enforcing/disbaled/' /etc/selinux/config   #永久
setenforce 0    #临时##关闭防火墙
systemctl disable firewalld --now##关闭Swap
swapoff -a    #临时
sed -ri 's/.*swap.*/#&/' /etc/fstab  #永久##根据规划设置主机名
hostnamectl set-hostname <hostname>
bash    #生效##确保网络桥接的数据包经过Iptables处理,启用相关内核参数
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
vm.swappiness=0
EOFsysctl --system    #生效##加载br_betfilter模块
cat <<EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
nf_conntrack
EOF##加载ipvs网络转发模块
yum -y install ipset ipvsadmcat <<EOF | tee /etc/modules-load.d/ipvs.conf
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
EOF##重启服务器,使配置生效
reboot

三、安装Docker

安装Docker: 
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repoyum install -y docker-ce
systemctl enable docker && systemctl start docker
测试验证 

配置镜像下载加速器和设置Cgroup驱动(systemd)
cat > /etc/docker/daemon.json << EOF
{"registry-mirrors": ["https://https://8d6xmv42.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"]
}
EOFsystemctl restart docker
docker --version

注意:镜像加速器地址链接每个人的不太,注意甄别。可登录容器镜像服务控制台,在左侧导航栏选择镜像工具 > 镜像加速器,在镜像加速器页面获取加速器地址

安装cri-dockerd (Docker与Kubernetes通信的中间程序)---1.23版本之后需要安装
wget https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.12/cri-dockerd-0.3.12-3.el7.x86_64.rpm
rpm -ivh cri-dockerd-0.3.12-3.el7.x86_64.rpm
指定依赖镜像地址为国内镜像地址:
##修改cri-docker.service
~]# vim /usr/lib/systemd/system/cri-docker.serviceExecStart=/usr/bin/cri-dockerd --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9 --container-runtime-endpoint fd://
systemctl daemon-reload
systemctl enable cri-docker && systemctl start cri-docker

 四、部署Kubernetes集群

添加yum源
cat <<EOF | tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.28/rpm/
enabled=1
gpgcheck=0  
gpgkey=https://mirrors.aliyun.com/kubernetesnew/core/stable/v1.28/rpm/repodata/repomd.xml.key
EOF
 安装kubeadm,kubelet和kubectl
## master节点
yum install -y kubelet kubeadm kubectl
## node节点
yum install -y kubelet kubeadm
## all
systemctl enable kubelet
 配置 cgroup 驱动与docker一致
cp /etc/sysconfig/kubelet{,.bak}cat > /etc/sysconfig/kubelet <<EOF
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
EOFsystemctl enable kubelet --now
初始化master节点
##生成默认配置文件
~]# kubeadm config print init-defaults > k8s_init.yaml
~]# cat /root/k8s_init.yaml
apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:- system:bootstrappers:kubeadm:default-node-tokentoken: abcdef.0123456789abcdefttl: 24h0m0susages:- signing- authentication
kind: InitConfiguration
localAPIEndpoint:advertiseAddress: 192.168.140.128   ##设置为master地址bindPort: 6443
nodeRegistration:criSocket: unix:///var/run/cri-dockerd.sockimagePullPolicy: IfNotPresentname: mastertaints: null
---
apiServer:timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: k8s
controllerManager: {}
dns: {}
etcd:local:dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers #使用国内镜像
kind: ClusterConfiguration
kubernetesVersion: 1.29.0
networking:dnsDomain: k8s.localserviceSubnet: 10.96.0.0/12podSubnet: 10.244.0.0/16   #网络插件flannel
scheduler: {}
kubeadm init --config k8s_init.yaml

初始化完成后,根据提示信息,拷贝kubectl工具认证文件到默认路径

~]# mkdir -p $HOME/.kube
~]# sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
~]# sudo chown $(id -u):$(id -g) $HOME/.kube/config

 如果需要重置

kubeadm reset  --cri-socket unix:///var/run/cri-dockerd.sock

使用kubectl工具查看节点状态

~]# kubectl get nodes

因为网络插件还没有部署,所以节点处于“NotReady”状态

将node节点加入集群(需指定连接docker的中间程序的socket)

## node节点执行
~]# kubeadm join 192.168.140.128:6443 --token bagja3.vvjfveyyms1cywhn --discovery-token-ca-cert-hash sha256:1a93ded43dff7134dc05a3f327c2cd3a82d6102da066b1a28c167e0f7758daf3 --cri-socket=unix:///var/run/cri-dockerd.sock

安装网络插件fannel(master节点)
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
运行完成,等待几分钟,查看node运行状态


http://www.ppmy.cn/devtools/7367.html

相关文章

Spring高手之路17——动态代理的艺术与实践

本文分享自华为云社区《Spring高手之路17——动态代理的艺术与实践》&#xff0c;作者&#xff1a; 砖业洋__。 1. 背景 动态代理是一种强大的设计模式&#xff0c;它允许开发者在运行时创建代理对象&#xff0c;用于拦截对真实对象的方法调用。这种技术在实现面向切面编程&am…

C#:闰年判断

任务描述 编写程序&#xff0c;完成如下功能&#xff1a;从键盘输入任意年份year&#xff0c;判别该年份是否闰年。 为避免出现格式错误&#xff0c;请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 ####输入 从键盘任意输入一个年份 输出 根据是否闰年进行输出…

DRF过滤类

DRF过滤类 目录 DRF过滤类OrderingFilter排序SearchFilter过滤第三方过滤django-filter自定义过滤类使用 OrderingFilter排序 DRF自带的排序类OrderingFilter 必须是继承 GenericAPIView 的视图类才能调用&#xff0c;继承APIView时不能这么配置 # views.py from rest_frame…

网络初识

网络 局域网 一个区域的网 广域网 相对概念&#xff0c;没有绝对的界限&#xff0c;全世界现在最大的广域网&#xff0c;就教做TheInternet&#xff0c;万维网 路由器 交换机和路由器&#xff0c;都是用来组建网络的重要设备 交换机 上网的设备&#xff08;电脑/手…

常用node.js命令有哪些呢?

前言 Node.js 是一种在服务器端运行 JavaScript 的开放源代码、跨平台 JavaScript 运行环境。 1、查看当前安装的 Node.js 版本。 node -v 或 node --version 2、查看当前安装的 npm 版本。 npm -v 或 npm --version 3、初始化一个新的 Node.js 项目&#xff0c;会生成一个 pac…

pyqt和opencv结合01:读取图像、显示

在这里插入图片描述 1 、opencv读取图像用于pyqt显示 # image cv2.imread(file_path)image cv2.cvtColor(image, cv2.COLOR_BGR2RGB)# 将图像转换为 Qt 可接受的格式height, width, channel image.shapebytes_per_line 3 * widthq_image QImage(image.data, width, hei…

MySQL内置函数

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;MySQL &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 本博客主要内容涉及了MySQL中的内置函数 文章目录 MySQL内置函数1.日期…

深入浅出Python机器学习:从零开始的SVM教程/厾罗

导言&#xff1a; 在众多机器学习算法中&#xff0c;支持向量机&#xff08;Support Vector Machine, SVM&#xff09;以其强大的分类能力和理论背景受到了广泛的应用。SVM不仅在学术领域表现出色&#xff0c;而且在工业界也有着极高的声誉。本文将带领大家从零开始&#xff0…