kubeadm部署k8s v1.30

k8s 1.30主要新功能

  • kubelet 重启后稳健的 VolumeManager 重建(SIG Storage)

  • 防止在卷还原过程中未经授权的卷模式转换(SIG Storage)

  • Pod 调度可用性(SIG Scheduling)

  • PodTopologySpread 中的最小域数(SIG Scheduling)

  • k/k 中的 Go 工作区(SIG Architecture))

  • 节点日志查询(Windows SIG Scheduling)

  • CRD 验证棘轮(SIG API Machinery)

  • 上下文日志记录(SIG Instrumentation)

  • 使 Kubernetes 了解负载均衡行为(SIG Network)

Kubernetes v1.30 的升级、弃用和移除

升级至稳定版 以下是升级至稳定版(也称为正式发布版)的所有功能列表。有关包括新功能和从 alpha 到 beta 的升级的完整更新列表,请查阅发布说明。

此版本包含了共 17 个功能的升级至稳定版:

  • 基于容器资源的 Pod 自动伸缩:https://kep.k8s.io/1610
  • 删除云控制器管理器(KCCM)中的临时节点谓词:https://kep.k8s.io/3458
  • k/k 采用 Go 的 workspace 架构:https://kep.k8s.io/4402
  • 减少基于 Secret 的 ServiceAccount 令牌:https://kep.k8s.io/2799
  • 用于准入控制的 CEL:https://kep.k8s.io/3488
  • 基于 CEL 的准入控制的匹配条件:https://kep.k8s.io/3716
  • Pod 调度准备就绪:https://kep.k8s.io/3521
  • PodTopologySpread 中的最小域:https://kep.k8s.io/3022
  • 阻止在卷恢复期间发生未授权的卷模式转换:https://kep.k8s.io/3141
  • API Server 链路追踪:https://kep.k8s.io/647
  • 云上双栈 - – node - ip 的处理:https://kep.k8s.io/3705
  • AppArmor 支持:https://kep.k8s.io/24
  • kubelet 重启后稳定重建 VolumeManager:https://kep.k8s.io/3756
  • kubectl 交互式删除:https://kep.k8s.io/3895
  • 指标基准配置:https://kep.k8s.io/2305
  • 为 Pod 添加 status.hostIPs 字段:https://kep.k8s.io/2681
  • 聚合资源 API 发现:https://kep.k8s.io/3352

弃用和移除:

  • 自 v1.27 版本起,已移除对 SecurityContextDeny 准入插件的支持,并标记为弃用。(SIG Auth、SIG Security 和 SIG Testing)
  • 随着 SecurityContextDeny 准入插件的移除,建议使用自 v1.25 版本起可用的 Pod Security Admission 插件。

一、环境准备

1.1、服务器信息

IP地址角色CPU/内存主机名操作系统
192.168.110.8master4c/4GmasterCentOS 7.6
192.168.110.9node14c/4Gnode1CentOS 7.6

1.2、ip和主机名解析

$ cat /etc/hosts192.168.110.8 master
192.168.110.9 node1

1.3、关闭防火墙和selinux

$ systemctl stop firewalld && systemctl disable firewalld$ setenforce 0$ sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

1.4、禁用swap分区

$ swapoff -a && sed -i 's/.*swap.*/#&/' /etc/fstab 

1.5、修改内核参数并加载

#开启ipv4转发

$ cat >> /etc/sysctl.d/k8s.conf << EOF
vm.swappiness=0
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF$ modprobe br_netfilter &&  modprobe overlay && sysctl -p /etc/sysctl.d/k8s.conf	

注:其中1.2 - 1.5在所有节点进行操作

二、安装docker

k8s在 v1.24及以上版本由于弃用dockershim后,无法直接使用docker,需要安装cri-docker,推荐直接使用containerd,这里由于个人习惯问题,部署docker+cri-docker配合使用

2.1、安装docker

$ yum install -y yum-utils device-mapper-persistent-data lvm2$ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo$ yum install -y docker-ce$ systemctl start docker && systemctl enable docker

2.2、配置daemon.json

#主要设置驱动为systemd,systemd在资源紧张的情况下比cgroups更加稳定

$ cat /etc/docker/daemon.json
{"exec-opts": ["native.cgroupdriver=systemd"],"registry-mirrors": ["http://hub-mirror.c.163.com/","https://docker.mirrors.ustc.edu.cn/","https://fz5yth0r.mirror.aliyuncs.com","https://registry.docker-cn.com"],"data-root":"/var/lib/docker","storage-driver": "overlay2","log-driver": "json-file","log-opts": {"max-size": "100m","max-file": "3"}
}

2.3、安装cri-docker

$ curl -LO https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.13/cri-dockerd-0.3.13-3.el7.x86_64.rpm$ rpm -ivh cri-dockerd-0.3.13-3.el7.x86_64.rpm#验证版本
$ cri-dockerd --version#启动服务
$ systemctl start cri-docker && systemctl enable cri-docker

三、部署、配置k8s

3.1、配置yum源

$ cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF#更新yum缓存
$ yum clean all  && yum makecache

3.2、安装kubectl等组件

$ yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
$ systemctl enable --now kubelet

3.3、整合kubelet和cri-docker

#修改/usr/lib/systemd/system/cri-docker.service文件的ExecStart字段
ExecStart=/usr/bin/cri-dockerd --container-runtime-endpoint fd:// --network-plugin=cni --cni-bin-dir=/opt/cni/bin --cni-cache-dir=/var/lib/cni/cache --cni-conf-dir=/etc/cni/net.d#重启cri-dockerd服务
$ systemctl daemon-reload && systemctl restart cri-docker#配置kubelet服务, 修改/etc/sysconfig/kubelet文件的KUBELET_KUBEADM_ARGS字段
KUBELET_KUBEADM_ARGS="--container-runtime-endpoint=/run/cri-dockerd.sock"

3.4、预拉取镜像

$ kubeadm config images pull  --cri-socket unix:///var/run/cri-dockerd.sock --image-repository registry.aliyuncs.com/google_containers

3.5、kubeadm初始化集群

$ kubeadm init \
--apiserver-advertise-address=192.168.110.8 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.30.0 \
--service-cidr=10.96.0.0/12 \
--pod-network-cidr=10.244.0.0/16 \
--token-ttl=0 \
--upload-certs \
--cri-socket unix:///var/run/cri-dockerd.sock#输出如下
====================================================================
Your Kubernetes control-plane has initialized successfully!To start using your cluster, you need to run the following as a regular user:mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/configAlternatively, if you are the root user, you can run:export KUBECONFIG=/etc/kubernetes/admin.confYou should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:https://kubernetes.io/docs/concepts/cluster-administration/addons/Then you can join any number of worker nodes by running the following on each as root:kubeadm join 192.168.110.8:6443 --token t9zogk.j7sak404br83rdqq \--discovery-token-ca-cert-hash sha256:db17d1cb5bbb30e7ad2e7876b89365053d017c765f9b081e5a1e16249db13eb7

提示registry.k8s.io/pause:3.9镜像未找到

解决方案:

$ docker pull registry.aliyuncs.com/google_containers/pause:3.9$ docker tag registry.aliyuncs.com/google_containers/pause:3.9 registry.k8s.io/pause:3.9

3.4、安装网络插件

$ kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

3.5、负载节点加入集群

$ kubeadm join 192.168.110.8:6443 --token t9zogk.j7sak404br83rdqq         --discovery-token-ca-cert-hash sha256:db17d1cb5bbb30e7ad2e7876b89365053d017c765f9b081e5a1e16249db13eb7 --cri-socket unix:///var/run/cri-dockerd.sock#验证集群:
[root@master ~]# kubectl  get no
NAME     STATUS   ROLES           AGE    VERSION
master   Ready    control-plane   17m    v1.30.0
node1    Ready    <none>          2m2s   v1.30.0

四、部署dashboard

由于新版本dashboard都使用helm进行安装,先需要安装helm

4.1、helm安装

$ wget -c https://get.helm.sh/helm-v3.14.4-linux-amd64.tar.gz
$ tar zxvf helm-v3.14.4-linux-amd64.tar.gz
$ cp linux-amd64/helm /usr/local/bin/

4.2、部署dashboard

$ helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/
$ helm upgrade --install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --create-namespace --namespace kubernetes-dashboard

4.3、修改svc为nodeport

$ kubectl edit svc -n kubernetes-dashboard kubernetes-dashboard-kong-proxy#字段  type: NodePort

4.4、获取token

$ kubectl -n kubernetes-dashboard create token dashboard-admin

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

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

相关文章

VitePress变成可视化了

VitePressSimple 非技术人员搭建博客的门槛又降低了&#xff0c;这个开源项目把VitePress变成可视化了。 要搭建博客、教程网站&#xff0c;VitePress是门槛最低的方案之一&#xff0c;唯一和技术有关的就是会用到编辑器来操作。 现在好了&#xff0c;VitePressSimple直接把Vit…

Java 枚举的使用与反射应用

文章目录 一、定义方式1.1 简单定义1.2 带参数定义 二、反射应用1. 反射获取枚举常量2. 反射获取枚举属性3. 动态调用枚举方法4. 动态设置枚举属性5. 判断枚举类型6. 反射获取枚举信息 单例模式&#xff1a;枚举类型是一种有限实例的类&#xff0c;枚举常量在定义时就被限定为一…

解决在云服务器上无法使用QQ邮箱发送邮件的问题

最近在做测试demo的时候发现&#xff0c;在本地可以使用qq邮箱的服务来进行邮件的发送&#xff0c;但是把项目部署到云服务器上就没办法发送邮件&#xff0c;并且报错是连接超时&#xff1a; 向xxxxxqq.com用户发送绑定邮箱验证码异常&#xff1a;Mail server connection fail…

leetcode234-Palindrome Linked List

题目 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表 。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true 分析 可以用快慢指针的方式找到链表的…

自用代码生成器代码

代码生成器 pom.xml文件中 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.ap…

【软件测试】自动化测试 Selenium 篇(一)

一、什么是自动化测试 1、自动化测试介绍 自动化测试指软件测试的自动化&#xff0c;在预设状态下运行应用程序或者系统&#xff0c;预设条件包括正常和异常&#xff0c;最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。 自动化就相当于将人工测试手段进行转换…

【激活函数--下】非线性函数与ReLU函数

文章目录 一、非线性函数在神经网络中的重要性二、ReLU函数介绍及其实现2.1 ReLU函数概述2.2 ReLU函数的Python实现及可视化 一、非线性函数在神经网络中的重要性 在神经网络中&#xff0c;激活函数的选择对于网络的性能和能力至关重要。阶跃函数和Sigmoid函数除了是激活函数的…

数据可视化-课堂记录

week02 # 数据可视化的发展历史 作用 格式塔原则 # 数据可视化的流程# 数据分析 指标体系建设 确定一个行业指标体系实现报表&#xff08;power bi python matplotlib seaborn pyecharts echarts&#xff09; # 数据分析面试 技术&#xff1a;sqlexcelpythonpowerbispss …

JS 实现冒泡排序

冒泡排序原理&#xff1a; 升序冒泡&#xff1a;两次循环&#xff0c;相邻元素两两比较&#xff0c;如果前面的大于后面的&#xff0c;就交互位置&#xff1b; 降序冒泡&#xff1a;两次循环&#xff0c;相邻元素两两比较&#xff0c;如果前面的小于后面的&#xff0c;就交互…

stable-diffusion-webui配置

源码地址 https://github.com/AUTOMATIC1111/stable-diffusion-webui.git报错Fresh install fail to load AttributeError: NoneType object has no attribute _id pydantic降级 pip uninstall pydantic pip install pydantic1.10.11记得要把clip-vit-large-patch14放在opena…

业务逻辑攻击是什么,如何有效进行防护

想象一下&#xff1a;您的开发团队刚推出了一款令人惊叹的全新应用程序&#xff0c;它具有顶级的API安全性&#xff0c;通过客户端保护对其进行了强化&#xff0c;甚至还设置了针对机器人攻击的防御措施。你感到这款产品很有安全保障&#xff0c;自己的团队出色地完成了工作。 …

解决Java Web应用中下载文件无法打开的问题

在Java Web应用中&#xff0c;文件下载是一个常见的功能。但有时候&#xff0c;即使代码看起来正确&#xff0c;下载的文件却无法正确打开。 问题描述 假设我们有以下代码用于下载文件&#xff1a; response.addHeader("Content-Disposition", "attachment;fi…

服务器通的远程桌面连接不上,关于服务器通畅但远程桌面连接不上问题的专业分析

在日常的企业IT管理中&#xff0c;服务器远程桌面连接是一个重要的操作功能。然而&#xff0c;有时会出现服务器网络通畅&#xff0c;但远程桌面无法连接的情况。 问题分析 1. 防火墙或安全组设置问题&#xff1a;服务器的防火墙或安全组可能阻止了远程桌面连接的端口&#xf…

adobe安装“Error:SyntaxError:JSON Parse error:Unexpec

mac电脑安装Adobe时&#xff0c;会提示错误“Error:SyntaxError:JSON Parse error:Unexpected EOF”&#xff0c;这是怎么回事儿的&#xff0c;不管您是安装AI、PS、PR还是LR&#xff0c;如果也遇到相同的问题&#xff0c;可以参考一下方法解决&#xff1a; 「adobe安装提示错误…

Java RMI反序列化总结篇-01

1.java rmi反序列化 RMI 允许一个应用程序访问另外一个服务器或虚拟机上的对象&#xff0c;方法和服务&#xff0c;它使远程方法调用就像在本地调用一样简单。它为用户屏蔽了底层的网络传输细节&#xff0c;使用的时候只需适当处理异常即可。所以 RMI 是非常容易使用的&#x…

Kubernetes集群安装

Kubernetes集群安装 环境准备 192.168.1.53 k8s-master 192.168.1.52 k8s-node-1 192.168.1.51 k8s-node-2 设置三台机器的主机名&#xff1a; Master上执行&#xff1a; [rootlocalhost ~]# hostnamectl --static set-hostname k8s-masterNode1上执行&#xff1a; [ro…

vue3+vite项目部署服务器,选择非根目录访问

背景 vue3vite项目&#xff0c;需要部署服务器。 但是根目录已经部署了另外一个项目A了&#xff0c;这个时候要在部署另外一个项目B。 问题 比如你的地址是http://test.com 之前直接输入http://test.com即可访问A项目 如果B项目也这么干的话就冲突了 访问A&#xff1a;http…

哪款骨传导耳机最值得入手?精选5款顶尖配置的骨传导耳机,闭眼入也不踩雷!

作为一名有着多年工作经验的数码博主&#xff0c;我见证了无数因盲目追求新颖而引发的听力问题。在此&#xff0c;我必须郑重提醒大家&#xff0c;虽然市面上充斥着众多声称能提供卓越音质和佩戴舒适度的骨传导耳机品牌&#xff0c;但它们之间存在大量劣质产品&#xff0c;这类…

centos7安装zabbix-server

zabbixan-server安装 环境安装zabbix安装zabbix配置apachezabbix-UI前端配置修改zabbix为中文语言 环境 准备&#xff1a; centos7系统、mysql数据库/MariaDB数据库 mysql数据库可参照&#xff1a;https://blog.csdn.net/weixin_61367575/article/details/138774428?spm1001.…

算法-卡尔曼滤波之卡尔曼滤波的第二个方程:预测方程(状态外推方程)

在上一节中&#xff0c;使用了静态模型&#xff0c;我们推导出了卡尔曼滤波的状态更新方程&#xff0c;但是在实际情况下&#xff0c;系统都是动态&#xff0c;预测阶段&#xff0c;前后时刻的状态是改变的&#xff0c;此时我们引入预测方程&#xff0c;也叫状态外推方程&#…