k8s-kubeadm安装1.25.5

news2024/11/18 7:33:43

准备环境:

想体验下新的版本

主机名IP资源
k8s-master192.168.1.1912u2G内存20G磁盘
k8s-node192.168.1.1922u2G内存20G磁盘

1 修改主机名,配置hosts文件

# 修改主机名
hostnamectl set-hostname k8s-master
hostnamectl set-hostname k8s-node
# 修改hosts文件
cat >> /etc/hosts << EOF
192.168.1.191 k8s-master
192.168.1.192 k8s-node
EOF

2  关闭防火墙、selinux和交换空间

# 关闭卸载防火墙
systemctl stop firewalld
systemctl disable firewalld

# 关闭selinux
# 临时关闭
setenforce 0
# 永久禁用
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

# 关闭swap交换空间
# 临时关闭;关闭swap主要是为了性能考虑
swapoff -a
# 可以通过这个命令查看swap是否关闭了
free
# 永久关闭
sed -ri 's/.*swap.*/#&/' /etc/fstab

3 时间同步

yum install ntpdate -y && ntpdate time.windows.com

 4 开启路由转发

1、加载 br_netfilter模块
modprobe br_netfilter
2、内核参数写到文件中
cat > /etc/sysctl.d/docker.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
3、加载参数
sysctl -p /etc/sysctl.d/docker.conf

5 开启ipvs

# 集群小可以不开启ipvs

vi /etc/sysconfig/modules/ipvs.modules
 
#!/bin/bash
ipvs_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>&1
 if [ 0 -eq 0 ]; then
 /sbin/modprobe ${kernel_module}
 fi
done
 
 
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs

6 安装containerd

# k8s 1.25已经启用docker

# 先安装一些常见的依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2 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

# 增加yum源地址
yum-config-manager --add-repo  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装 containerd
yum install containerd -y

# 启动 containerd
systemctl start  containerd && systemctl enable containerd

# 创建 containerd 配置文件
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
# 修改容器镜像地址
grep sandbox_image  /etc/containerd/config.toml
sed -i "s#registry.k8s.io/pause#registry.aliyuncs.com/google_containers/pause#g" /etc/containerd/config.toml
grep sandbox_image  /etc/containerd/config.toml
# 修改containerd systemdCgroup 
grep SystemdCgroup  /etc/containerd/config.toml
sed -i 's#SystemdCgroup = false#SystemdCgroup = true#g' /etc/containerd/config.toml
# 重启containerd
systemctl restart containerd

7 安装k8s组件

# 配置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
# 安装 disableexcludes=kubernetes:禁掉除了这个kubernetes之外的别的仓库,不指定会安装最新版本的
# 指定版本号kubectl-1.25.2
yum install -y kubelet kubeadm kubectl disableexcludes=kubernetes
# 设置开机启动 --now:立刻启动服务
systemctl enable --now kubelet


# k8s 设置容器进行时
crictl config runtime-endpoint /run/containerd/containerd.sock

前1-7步骤master和node节点都需要执行一遍

8 初始化集群

方法一

# 通过命令初始化集群配置
kubeadm init \
--apiserver-advertise-address=192.168.1.191 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.25.2 \
--service-cidr=10.96.0.0/16 \
--pod-network-cidr=10.244.0.0/16 \

方法二

# 可以通过yaml 文件初始化集群
# 获取yaml文件
kubeadm config print init-defaults > init.default.yaml
# 修改yaml文件
vim init.default.yaml

apiVersion: kubeadm.k8s.io/v1beta3
bootstrapTokens:
- groups:
  - system:bootstrappers:kubeadm:default-node-token
  token: abcdef.0123456789abcdef
  ttl: 24h0m0s
  usages:
  - signing
  - authentication
kind: InitConfiguration
localAPIEndpoint:
  // 指定k8smaster使用那个网口通讯,不指定默认使用有网关的接口
  advertiseAddress: 192.168.1.191 
  bindPort: 6443
nodeRegistration:
  # 设置用containerd做容器进行时
  criSocket: /run/containerd/containerd.sock
  imagePullPolicy: IfNotPresent
  // master主机名
  name: k8s-master 
  taints: null
---
apiServer:
  timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta3
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns: {}
etcd:
  local:
    dataDir: /var/lib/etcd
// 镜像下载地址,改为阿里源
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
// k8s版本
kubernetesVersion: 1.25.2
networking:
  dnsDomain: cluster.local
  // 指定pod地址范围
  podSubnet: 10.244.0.0/16
  // 指定service地址范围
  serviceSubnet: 10.96.0.0/16

scheduler: {}
// 开始ipvs, 如果使用IPtables可以不开启
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: ipvs
// 设置k8scgroup 为systemd
---
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
cgroupDriver: systemd

# 通过yaml文件初始化集群
kubeadm init --config=init.default.yaml

 9 master 添加证书,扩容一个node节点

 

# master 节点安装完毕后,复制授权证书到home文件夹中
  mkdir -p $HOME/.kube
  sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
  sudo chown $(id -u):$(id -g) $HOME/.kube/config
# 在node 节点执行kubeadm join加入集群
kubeadm join 192.168.1.191:6443 --token abcdef.0123456789abcdef \
	--discovery-token-ca-cert-hash sha256:8f52f81b611acd4b44512e48245ea33a58d4ab75e5d1d036aa33f38a45d08cd3 

# 使用命令查看集群节点
kubectl get nodes

# 获得新的token
kubeadm token create --print-join-command

# 通过标签给新加入的节点设置个角色
kubectl label node k8s-node node-role.kubernetes.io/work=work

 设置标签后

10 安装网络插件 calico

kubectl apply -f "https://docs.projectcalico.org/manifests/calico.yaml"

11 测试集群是否能正常使用

# 创建pod
kubectl create deployment my-web --image=nginx
# 创建service
kubectl expose deployment my-web --port=80 --target-port=80 --type=NodePort

# 运行个pod测试是否可以ping通百度
kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- sh

 问题:

刚开始配置集群时一直报错后来百度后才知道原来k8s已经弃用了docker

[etcd] Creating static Pod manifest for local etcd in "/etc/kubernetes/manifests"
[wait-control-plane] Waiting for the kubelet to boot up the control plane as static Pods from directory "/etc/kubernetes/manifests". This can take up to 4m0s
[kubelet-check] Initial timeout of 40s passed.

Unfortunately, an error has occurred:
	timed out waiting for the condition

This error is likely caused by:
	- The kubelet is not running
	- The kubelet is unhealthy due to a misconfiguration of the node in some way (required cgroups disabled)

If you are on a systemd-powered system, you can try to troubleshoot the error with the following commands:
	- 'systemctl status kubelet'
	- 'journalctl -xeu kubelet'

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

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

相关文章

CMMI2.0配置管理工作及访谈学习笔记(续)

1. 配置管理岗位职责 范围&#xff1a;组织级和项目级配置管理管理对象为过程和产品&#xff0c;产品为识别出的配置项建立配置库&#xff1a;为项目建立开发库&#xff08;管理库&#xff09;、基线库&#xff0c;建立配置库结构并分配权限&#xff08;命名规范&#xff09;基…

猿如意中的【DBeaver】工具详情介绍

猿如意中的【DBeaver】工具详情介绍一、工具名称二、下载安装渠道2.1 什么是猿如意&#xff1f;2.2 如何下载猿如意&#xff1f;2.3 如何在猿如意中下载开发工具&#xff1f;三、工具介绍四、DBeaver功能介绍五、软件截图六、DBeaver安装过程6.1 在猿如意中下载DBeaver6.2 选择…

道路裂缝坑洼图像开源数据集汇总

CrackForest数据集 数据集下载链接&#xff1a;http://suo.nz/2wdNdX CrackForest数据集是一个带注释的道路裂缝图像数据库&#xff0c;可以大致反映城市路面状况。 道路裂缝坑洼图像数据集 数据集下载链接&#xff1a;http://suo.nz/3eEDlj 这个数据集是一个极具挑战性的集…

67、INGeo:利用占用网格先验加速/减少迭代次数

简介 论文地址&#xff1a;INGeo: Accelerating Instant Neural Scene Reconstruction with Noisy Geometry Priors 首先我们知道Instant-ngp利用最先进的射线推进技术&#xff08;指数步进、空白跳过、样本压缩&#xff09;实现密集网格自剪枝的采样策略&#xff0c;这种采样…

代码随想录训练营第48天|LeetCode 198.打家劫舍、213.打家劫舍II、 337.打家劫舍III

参考 代码随想录 题目一&#xff1a;LeetCode 198.打家劫舍 确定dp数组下标及其含义 dp[i]&#xff1a;考虑下标i&#xff08;包括i&#xff09;以内的房屋&#xff0c;可以偷窃的最大金额为dp[i]。确定递推公式 如果当前的第i个房间不偷&#xff0c;那么dp[i] dp[i-1].如…

干货收藏 |关键词优化攻略!(附11款关键词检索工具)

关键字搜索是买家查找产品的方式&#xff0c;一个高质量的关键词可以帮助卖家快速增加曝光率。简而言之&#xff0c;利用好关键词机理&#xff0c;能让我们的产品产生更有利的排名因素。 那如何找到合适的关键字&#xff0c;设置关键字时应该注意什么&#xff1f; 今天从产品的…

libcrypto-1_1.dll丢失,要怎么处理?

一般出现这个libcrypto-1_1.dll丢失的问题&#xff0c;我看绝大部分都是出在刺客信条这边的人&#xff0c;很多人吐槽 在运行刺客信条3游戏的时候遇到提示缺少libcef.dll文件的问题。其实遇到这问题还是比较好解决的。 libcrypto-1_1.dll丢失的处理方法 第一种&#xff0c;首…

云存储--1

背景 这一板块主要是讲诉云计算中的存储板块。 那么云存储主要分为三大类&#xff1a;块存储、文件存储、对象存储。 那么&#xff0c;这一章我们来了解一下什么是块存储&#xff0c;以及块存储在云计算当中的使用场景。 1、 什么是块存储&#xff1f; 我们来思考一个场景&a…

Spring Boot集成MyBatis

1.整合Durid数据源 1、引入Jar包 2.application.yml配置 3.读取配置类DruidConfig 总结&#xff1a;其实没有必要一个个手动去配置&#xff0c; druid 启动starter druid 自动配置类 2.整合MyBatis 2.1生成MyBatis代码: pom.xml generatorConfig.xml 运行插件—…

java计算机毕业设计ssm余庆金阳驾校管理系统75wh9(附源码、数据库)

java计算机毕业设计ssm余庆金阳驾校管理系统75wh9&#xff08;附源码、数据库&#xff09; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#…

看完这篇,轻松编写Markdown

攻城狮为什么要会Markdown Markdown是什么 Markdown是一种轻量级标记语言&#xff0c;创始人为约翰格鲁伯&#xff08;John Gruber&#xff09;。它允许人们使用易读易写的纯文本格式编写文档&#xff0c;然后转换成有效的 XHTML&#xff08;或者HTML&#xff09;文档。这种语…

【网络攻防】Linux提权(待更)

Linux提权 文章目录Linux提权1.利用suid提权&#xff08;1&#xff09;如何设置suid&#xff08;2&#xff09;如何找到设置了suid的程序&#xff08;3&#xff09; suid提权2.利用环境变量提权&#xff08;1&#xff09;创建拥有 suid 权限的程序&#xff08;2&#xff09;劫持…

vue innerHTML 绑定单击事件不生效

在使用 vue时候对 innerHTML进行绑定单击事件&#xff0c;绑定后事件不生效 原代码 div.innerHTML "<el-button sizemini typetext clickhandleUpdate1("JSON.stringify(warnCntItem)") stylecolor: #f56c6c> "warnCntItem.warnCnt"</el-b…

【云计算与大数据技术】分布式协同系统Chubby锁、ZooKeeper在HDFS中的使用讲解(图文解释 超详细)

阿里云Kuafa RPC系统 夸父(Kuafu)是飞天平台内核中负责网络通信的模块&#xff0c;它提供了一 个 RPC 的接口 , 简化编写基于网络的分布式应用 夸父的设计目标是提供高可用(724小时)、大吞吐量(Gigabyte)、高效率、易用(简明 API、多种协议和编程接口)的 RPC服务 Hadoop IPC…

【软件测试】资深测试的建议。初入测试行的小伙伴,准备起航吧......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 大部分初级的岗位&a…

Java面试题总结-抽象类和接口的区别

抽象类是用来捕捉子类的通用特性的。接口是抽象方法的集合。 从设计层面来说&#xff0c;抽象类是对类的抽象&#xff0c;是一种模板设计&#xff0c;接口是行为的抽象&#xff0c;是一种行为的规范。 想要了解抽象类和接口的区别&#xff0c;我们首先要想清楚抽象类和接口的相…

Word控件Spire.Doc 【超链接】教程(3):在C#中查找word文档中的超链接

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

服务端监控工具:Nmon使用方法

目录&#xff1a;导读 一、认识nmon 二、检查安装环境 三、nmon下载安装 四、运行nmon 五、采集数据 总结 写在最后 一、认识nmon 1、简介 nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具&#xff0c;它能在系统运行过程中实时地捕捉系统资源的使用情…

再学C语言1:开发环境

重新把C语言梳理一遍&#xff0c;学习在VSCode中进行C语言编程。 因此第一步是把环境配置起来。 步骤一&#xff1a;下载、安装VSCode 官网下载即可&#xff0c;地址&#xff1a;https://code.visualstudio.com/Visual Studio Code is a code editor redefined and optimize…

Docker:docker安装nginx

目录 一、容器之间相互通信 1、两个容器在同一网段 2、两个容器在不同网段 二、安装Nginx 1.nginx是什么 2. 安装nginx 三、部署前端项目 2.nginx.conf讲解 一、容器之间相互通信 1、两个容器在同一网段 查看docker中已安装的所有网络 docker network ls 查看自定义网络myn…