【k8s-1.34.2安装部署】一.系统初始化及k8s集群规划

文章目录

  • 简介
  • [一. 集群环境规划](#一. 集群环境规划)
    • [1.1. 系统及软件版本介绍](#1.1. 系统及软件版本介绍)
    • [1.2. 域名、IP、网段规划](#1.2. 域名、IP、网段规划)
  • [二. 服务器系统初始化](#二. 服务器系统初始化)

简介

k8s1.34.2的安装总体没什么变化,主要在于结合最新版本的containerd、gateway Api、istio、cilium进行安装,新版本的一些软件和旧的存在一些区别。本章节主要是通过搭建最新版的k8s集群,并搭建gateway Api来进行一些xkube开发环境的调试和部署,现将整个k8s1.34.2的安装过程进行记录。

一. 集群环境规划

1.1. 系统及软件版本介绍

etcd节点,主机名可以根据自己的规则定义,后边的cluster.local可以采用域名

角色 ip 主机名
etcd01 192.168.10.185 etcd01-dx-k8s1.cluster.local
etcd02 192.168.10.186 etcd02-dx-k8s1.cluster.local
etcd03 192.168.10.187 etcd03-dx-k8s1.cluster.local

k8s节点

角色 ip 主机名
master 192.168.10.185 master185-dx-k8s1.cluster.local
worker 192.168.10.186 node186-dx-k8s1.cluster.local
worker 192.168.10.187 node187-dx-k8s1.cluster.local
worker 192.168.10.188 node188-dx-k8s1.cluster.local

系统及内核版本

系统 版本 Col3
Ubuntu 24.04.3
内核 6.8.0-71-generic

需要的软件及下载地址

软件 版本 下载地址 说明 必需
k8s 1.34.2 https://dl.k8s.io/v1.34.2/kubernetes-server-linux-amd64.tar.gz git地址:https://github.com/kubernetes/kubernetes/releases点击CHANGELOG 获取下载地址
etcd 3.6.6 https://github.com/etcd-io/etcd/releases k8s的数据库
helm 4.0.0 https://github.com/helm/helm/releases 用于安装cilium
cfssl 1.6.5 https://github.com/cloudflare/cfssl/releases 用于生成证书
containerd 2.2.0 https://github.com/containerd/containerd/releases 容器运行时
runc 1.3.3 https://github.com/opencontainers/runc/releases 安装containerd时需要
cilium-cli v0.18.8 https://github.com/cilium/cilium-cli/releases cilium客户端软件,用于查询cilium安装或查询状态
cni-plugins-linux 1.8.0 https://github.com/containernetworking/plugins/releases 安装containerd时需要
coredns 1.13.1 https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/dns/coredns k8s内的dns软件,下载coredns.yaml.base
metallb 0.15.2 https://raw.githubusercontent.com/metallb/metallb/v0.15.3/config/manifests/metallb-native.yaml 负载均衡,具体安装及最新版本可参考:https://metallb.universe.tf/installation/
metric-server 0.8.0 https://github.com/kubernetes-sigs/metrics-server/releases pod/node的内存及cpu使用采集
xkube 3.9 https://gitee.com/eeenet/xkube 多集群k8s管理平台,比k8s dashboard更强大的管理软件,支持app管理k8s
istio 1.28.0 https://github.com/istio/istio/releases gateway Api的控制权
gateway-api v1.4.0 https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.4.1/experimental-install.yaml gateway网关

注:非必须的,如果用不着可以不用安装

1.2. 域名、IP、网段规划

产品 规划 说明 必需
k8s集群名称 dx-k8s1 k8s的集群名称尽量用字母、数字、横线定义,可以根据机房、用途来定义:eg:dx-k8s1
service网段 10.96.0.0/16 定义service的网段,尽量分配一个没有被其他集群使用过的网段,在kube-apiserver,kube-controller-manager,cilium都会用到,配置参数:--service-cluster-ip-range
pod网段 10.244.0.0/16 定义pod分派IP的网段,配置参数:--cluster-cidr
dns ip 10.96.0.10 定义coredns的service IP
etcd主机名 etcd01-dx-k8s1.cluster.local etcd02-dx-k8s1.cluster.local etcd03-dx-k8s1.cluster.local 通常etcd的集群用3台机来做,如果是三台机就定义三个主机名,主机名中的cluster.local可以更换成一个正式的顶级域名,并且在etcd的服务器/etc/hosts中做上和IP的映射关系,做映射是为了提高解析速度和避免dns故障影响,例如: 192.168.10.185 etcd01-dx-k8s1.cluster.local 192.168.10.186 etcd02-dx-k8s1.cluster.local 192.168.10.187 etcd03-dx-k8s1.cluster.local 定义主机名的好处就是在有出现机器故障需要替换时,不需要修改配置里的IP,但是需要修改/etc/hosts映射。
apiserver域名 apiserver-dx-k8s1.cluster.local 给apiserver定义一个域名,cluster.local可以改成域名例如:xxx.com,如果未做内部dns解析的话,则需要做/etc/hosts映射,例如: 192.168.10.185 apiserver-dx-k8s1.cluster.local
节点主机名 master185-dx-k8s1.cluster.local node186-dx-k8s1.cluster.local node187-dx-k8s1.cluster.local 给节点配置好主机名,是在注册到k8s时可以通过主机名清晰的知道是哪台机
etcd vip 如果etcd配置配置负载均衡的话,可以规划一个内网的vip
etcd 域名 etcd-dx-k8s1.cluster.local 有条件可以分配一个etcd的域名然后解析到etcd的vip
apiserver vip 如果api-server有配置负载均衡的话,可以分派一个内网的vip,然后将api-server域名解析到此IP

注:非必须表示,如果没有分配主机名或域名,就需要直接用IP,在后续的配置中也需要修改成IP

软件安装路径规划:

名称 路径 备注
kubernetes /opt/kubernetes/{conf,bin,ssl,logs} 安装在master和node上
etcd /opt/etcd/{conf,bin,ssl,logs} 安装在master上,或者独立的etcd集群
containerd /etc/containerd/config.toml /usr/local/bin 安装在master和node上
runc /usr/local/sbin/ 安装在master和node上
cni-plugin-linux /opt/cni/bin 安装在master和node上
helm /usr/local/bin/ 可以安装在其中一台master上、或能联通master的机器
cilium /usr/local/bin/ 可以安装在其中一台master上、或能联通master的机器
cfssl cfssl-certinfo cfssljson /usr/local/bin/ 可以安装在其中一台master上、或能联通master的机器
kubectl /usr/local/bin/ 可以安装在其中一台master上、或能联通master的机器

二. 服务器系统初始化

1.基础安装说明:

sudo apt-get install wget vim net-tools jq telnet lvm2 git tar curl nfs-kernel-server chrony ipvsadm ipset sysstat conntrack -y

2.禁用防火墙

复制代码
ufw disable
sudo ufw status

2.关闭swap

复制代码
swapoff -a 
sed -ri 's/.*swap.*/#&/' /etc/fstab

3.设置时间同步,检查时区、设置成24小时制

复制代码
timedatectl status
timedatectl set-timezone Asia/Shanghai

4.配置一些需要的内核模块

bash 复制代码
一.
cat >> /etc/modules-load.d/ipvs.conf <<EOF
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
ip_tables
ip_set
xt_set
ipt_set
ipt_rpfilter
ipt_REJECT
ipip
EOF

二.
systemctl restart systemd-modules-load.service

三.
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

四.
  lsmod | grep -e ip_vs -e nf_conntrack 
  
  结果如下:
    ip_vs_sh 16384 0
    ip_vs_wrr 16384 0
    ip_vs_rr 16384 0
    ip_vs 155648 6 ip_vs_rr,ip_vs_sh,ip_vs_wrr
    nf_conntrack 139264 1 ip_vs
    nf_defrag_ipv6 24576 2 nf_conntrack,ip_vs
    nf_defrag_ipv4 16384 1 nf_conntrack
    libcrc32c 16384 4 nf_conntrack,btrfs,raid456,ip_vs
  1. 内核参数优化
复制代码
cat <<EOF >> /etc/sysctl.conf
net.ipv4.tcp_max_tw_buckets = 262144
net.ipv4.tcp_max_syn_backlog = 20480
net.core.somaxconn = 102400
net.core.netdev_max_backlog = 32768
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.lo.disable_ipv6 = 0
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv6.conf.all.forwarding = 1
vm.max_map_count = 262144
EOF

6.文件句柄调优

复制代码
cat >> /etc/security/limits.conf <<EOF
* soft nofile 655350
* hard nofile 655350
* soft nproc 20480
* hard nproc 20480
EOF

sed -i 's#\#DefaultLimitNOFILE=.*#DefaultLimitNOFILE=1024000#' /etc/systemd/system.conf
sed -i 's#\#DefaultLimitNPROC=#DefaultLimitNPROC=1024000#' /etc/systemd/system.conf
sed -i 's#\#DefaultLimitCORE=#DefaultLimitCORE=infinity#' /etc/systemd/system.conf

7.修改master和node的主机名,并设置hosts,针对apiserver的域名和etcd的域名,有需要可以做上域名解析

1.maste和node机器都需要修改主机名,命令参考如下:

复制代码
hostnamectl set-hostname new_hostname

2.编辑/etc/hosts,在每个etcd节点都加上,在部署apiserver的节点都加上:

192.168.10.185 etcd01-dx-k8s1.cluster.local

192.168.10.186 etcd02-dx-k8s1.cluster.local

192.168.10.187 etcd03-dx-k8s1.cluster.local

3.编辑/etc/hosts,在执行kubectl的节点都加上加上apiserver域名hosts:

192.168.10.185 apiserver-dx-k8s1.cluster.local

4.编辑/etc/hosts,在执行etcdctl的节点上加上etcd域名hosts,在部署api-server的节点都加上:

192.168.10.185 etcd-dx-k8s1.cluster.local

相关推荐
路边草随风3 小时前
java实现发布flink k8s application模式作业
java·大数据·flink·kubernetes
姚不倒12 小时前
负载均衡的概念、策略以及两个核心组件 Nginx 和 Kube-proxy 的对比。
运维·nginx·云原生·kubernetes
地瓜伯伯12 小时前
Nginx终极配置指南:负载均衡、限流、反向代理、IP白名单、SSL、云原生、DNS解析、缓存加速全都有
spring boot·nginx·spring·spring cloud·微服务·云原生·负载均衡
颜颜yan_16 小时前
在openEuler上搞个云原生AI模型商店:像点外卖一样部署模型
人工智能·云原生
阿里云云原生18 小时前
线下活动速递丨AI 原生应用开源开发者沙龙·杭州站
云原生
阿里云云原生18 小时前
MCP 网关实战:基于 Higress + Nacos 的零代码工具扩展方案
云原生·mcp
阿里云云原生19 小时前
UModel 查询:驯服“可观测性混乱”,阿里云的图模型建模利器!
云原生
水滴与鱼19 小时前
DOCKER制作ROS运行的镜像文件
运维·docker·容器