主机名IPv4 地址IPv6 地址角色安装的组件操作系统k8s130-node190192.168.XX.190240a:XX:190masterkubeadm、kubelet、containerdAnolis OS 8.9+4.19.91-28.1.an8.x86_64k8s130-node19 1192.16 8.XX.191240a:XX:191nodekubeadm、kubelet、cri-oAnolis 操作系统8.9 +4.19.91-28.1.an86_64K8S130-Node189192.168.xx.189240A:XX333:189Nodekubeadm、Kubelet、CRI-Dockerdanolis 操作系统8.9+ 4. 19.91-28.1.an8.x86_64
安装前准备
1. 尽量减少虚拟机安装。安装后,您需要更新到最新版本。
~]# y y 更新
2.关闭防火墙
~]# 禁用systemctl 防火墙停止systemctl 防火墙
3.关闭SELinux
~]# sed -i \’s/^SELINUX=.*/SELINUX=disabled/\’ /etc/selinux/config
4. 验证时间同步服务运行正常,时间能够同步成功。
~]# systemctl status chronyd -l –no-pager
5.安装所需软件包
~]# yum -y install ipvsadm ipset conntrack-tools iproute-tc conntrack libseccomp wget tar
6. 启用内核模块
~]# modprobe ip_conntrack
~]# modprobe nf_conntrack
~]# modprobe ip_vs
~]# modprobe ip_vs_rr
~]# modprobe ip_vs_rr
~]# modprobe ip_vs_wrr
~]# modprobe ip_vs_sh
~]# modprobe br_netfilter
~]# modprobe 桥
7. 设置内核参数
~]# cat /etc/sysctl.d/99-sysctl.conf
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv6.conf.all.disable_ipv6=0
net.ipv6.conf.default.disable_ipv6=0
net.ipv6.conf.lo.disable_ipv6=0
net.ipv6.conf.all.forwarding=1
net.ipv4.ip_forward=1
net.ipv4.neigh.default.gc_thresh1=1024
net.ipv4.neigh.default.gc_thresh2=2048
net.ipv4.neigh.default.gc_thresh3=4096
net.netfilter.nf_conntrack_max=2310720
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_fin_timeout=10
net.ipv4.tcp_keepalive_time=180
net.ipv4.tcp_keepalive_intvl=10
net.ipv4.tcp_keepalive_probes=3
net.ipv4.ip_local_port_range=21000 61000
虚拟机交换=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
8、关闭swap(我们建议您在安装虚拟机分区时不要执行swap)。
交换
b. /etc/fstab 中有关交换安装的注释
安装Containerd
Containerd 最初是Docker Engine 的一部分,是Docker 的核心组件,负责创建、操作和管理容器。 2017年,Docker决定将containerd打造成一个独立的开源项目,以供社区更广泛的使用和贡献。 Containerd 的目标是提供一个简单、稳定、高效的容器运行时,可以作为各种容器生态系统的基础,特别是在与Kubernetes 集成方面。
1、配置第三方镜像源(在线安装Containerd需要配置docker-ce镜像源,如果不想或者无法在线安装,可以使用其他方式containerd概述)。
笔记:
a.这两种方法的安装结果还是有很大区别的。
b.下面使用的是阿里巴巴镜像源,docker官方镜像源是qiang。
~]# yum-config-manager –add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
~]# yum repolist|grep docker
docker-ce-stable Docker CE 稳定版本- x86_64
2.安装最新版本的Containerd
~]# yum -y installcontainerd.io –disableexcludes=docker-ce-stable
3. 启动设置
使用systemctl启用containerd
4、设置Containerd
docker-ce的配置文件是/etc/docker/daemon.json,但是Containerd呢?答案:/etc/containerd/config.toml。但是,通过Docker 镜像源在线安装的Containerd 配置文件不可用,必须重新生成。
mv /etc/containerd/config.toml{,_docker}
容器配置默认/etc/containerd/config.toml
4.1、配置sandbox_image
如果您之前使用过dockershim,则只需在kubelet中配置–pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.9 即可。如果您想使用containerd作为kubernetes运行时,请配置pod-infra-container。 – 该镜像未启用(但在kubeadm 启动kubernetes 组件时使用)
sandbox_image=\’registry.k8s.io/pause:3.6\’
—
沙箱镜像=\’192.168.XX.XX/kubeadm/pause:3.9\’
4.2、设置SystemdCgroup 配置私有仓库认证信息
……
[插入]
[插件.\’io.containerd.grpc.v1.cri\’]
沙箱镜像=\’192.168.XX.XX/kubeadm/pause:3.7\’
[插件.\’io.containerd.grpc.v1.cri\’.containerd]
[插件.\’io.containerd.grpc.v1.cri\’.containerd.runtimes]
[插件.\’io.containerd.grpc.v1.cri\’.containerd.runtimes.runc]
[插件.\’io.containerd.grpc.v1.cri\’.containerd.runtimes.runc.options]
SystemdCgroup=true
……
[插件.\’io.containerd.grpc.v1.cri\’.registry.configs]
[插件.\’io.containerd.grpc.v1.cri\’.registry.configs.\’192.168.XX.XX\’.auth]
用户名=\’管理员\’
密码=\’密码\’
[插件.\’io.containerd.grpc.v1.cri\’.registry.headers]
[插件.\’io.containerd.grpc.v1.cri\’.registry.mirrors]
[插件.\’io.containerd.grpc.v1.cri\’.registry.mirrors.\’docker.io\’]
端点=[\’https://registry-1.docker.io\’]
[插件.\’io.containerd.grpc.v1.cri\’.registry.mirrors.\’192.168.XX.XX\’]
端点=[\’http://192.168.XX.XX\’]
4.3、Containerd的客户端命令配置
docker-ce的客户端命令是docker,Containerd的客户端命令是crictl和ctr。通常使用crictl 并且必须进行配置。不然~~哼。
猫/etc/crictl.yaml
运行时端点: unix:///var/run/containerd/containerd.sock
image-endpoint: unix:///var/run/containerd/containerd.sock
超时: 10
调试: 错误
5、启动Containerd
systemctl startcontainerd
安装kubeadm、kubelet、kubectl
1、配置第三方镜像源
猫T 恤/etc/yum.repos.d/kubernetes.repo
[库伯内特]
名称=Kubernetes
Baseurl=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/
有效=1
gpg检查=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.30/rpm/repodata/repomd.xml.key
排除=kubelet kubeadm kubectl cri-tools kubernetes-cni
结束后
2、安装kubelet kubeadm kubectl
yum install -y kubelet kubeadm kubectl –disableexcludes=kubernetes
使用systemctl 启用kubelet
初始化kubernetes master节点
1、生成初始化YAML文件
kubeadm 配置打印init-defaults kubeadm-init.default.yaml
2、设置初始化文件。如下红色内容需要根据需要修改,另外,advertiseAddress只支持IPv4。
apiVersion: kubeadm.k8s.io/v1beta3
引导令牌:
– 组:
-system:bootstrappers:kubeadm:默认节点令牌
token: abcdef.0123456789abcdef
ttl: 24 小时0 分0 秒
使用量:
-签名
-认证
kind: 初始化配置
本地API端点:
广告地址: 192.168.XX.190
绑定端口: 6443
节点注册:
criSocket: unix:///run/containerd/containerd.sock
imagePullPolicy: 如果不存在
名称: k8s130-node190
taints: 空
—
API服务器:
ControlPlane: 超时4 分0 秒
apiVersion: kubeadm.k8s.io/v1beta3
证书Dir: /etc/kubernetes/pki
集群名称: kubernetes
控制器管理器: {}
dns: {}
etcd:
本地:
dataDir: /var/lib/etcd
imageRepository:registry.aliyuncs.com/google_containers
kind:集群配置
kubernetes版本: 1.30.0
网络:
dnsDomain: cluster.local
服务子网: 10.254.0.0/16,2408:822a:730:af01:/112
podSubnet: 172.254.0.0/16,fa00:cafe:42:/56
调度程序: {}
—
apiVersion: kubeproxy.config.k8s.io/v1alpha1
iptables:
假面舞会All: 假
ipvs:
minSyncPeriod: 0s
调度程序: \’rr\’
kind: KubeProxy配置
模式:“ipvs”
3、初始化master节点
kubeadm init –config=kubeadm-init.default.yaml |tee kubeadm-init.log
以下输出表明初始化成功:另外,根据初始化文件中定义的ttl: 24h0m0s,令牌将在24小时后过期,一旦过期,您将无法再使用下面的令牌输出加入kubernetes集群。
安装之后处理
1、验证
~]$ 使用kubectl 获取cs
警告: v1 ComponentStatus 自v1.19 起已被弃用
名称状态消息错误
控制器管理器很好
调度程序健康
etcd-0 正常
~]$ kubectl 获取节点
姓名状态角色年龄版本
k8s130-node190 未就绪控制平面3m44s v1.30.2
运行kubectl get node 会将节点置于NotReady 状态。 — — 网络插件未安装
当您运行kubectl get po 时,pod 中的coredns 会进入待处理状态。 — — 网络插件未安装
安装网络插件-Calico
1、下载Calico启动配置文件
wget https://mirrors.chenby.cn/https://github.com/projectcalico/calico/blob/master/manifests/calico-typha.yaml
2、定制Calico配置文件
2.1、配置启用IP双栈(无需IPv6,则不需要配置)
\’类型\’: \’印花布-ipam\’
—
\’类型\’: \’印花布-ipam\’,
\’assign_ipv4\’: \’真\’,
\’assign_ipv6\’: \’真\’
2.2、配置IP地址段(无需IPv6,则只需配置IPv4即可)
# – name: CALICO_IPV4POOL_CIDR
# value: \’192.168.0.0/16\’
– 名称: FELIX_IPV6SUPPORT
value: \’真\’
—
– 名称: CALICO_IPV4POOL_CIDR
值:\’172.254.0.0/16\’
– 名称: CALICO_IPV6POOL_CIDR
值:\’fa00:cafe:42:/56\’
– name: IP_AUTODETECTION_METHOD
value: \’接口=ens.*\’
– name: IP6_AUTODETECTION_METHOD
value: \’接口=ens.*\’
– 名称: FELIX_IPV6SUPPORT
value: \’真\’
2.3、修改镜像地址(无fan墙能力就得老老实实改)
image: docker.io/calico/cni:master
—
image: 192.168.XX.XX/library/cni:master
image: docker.io/calico/node:master
—
image: 192.168.XX.XX/库/node:master
image: docker.io/calico/kube-controllers:master
—
image: 192.168.XX.XX/library/kube-controllers:master
image: docker.io/calico/typha:master
—
image: 192.168.XX.XX/图书馆/typha:master
2.4、创建Calico
kubectl apply -f calico-typha.yaml
2.5、验证是否成功
Calico Typha 启动了三种类型的Pod:控制器、节点和Typhas。状态变为“Running”,“Ready”变为1/1表示成功。控制器由部署调度创建,节点由daemonset调度创建(确保每个节点启动一个calico节点并使用hostNetwork)。
3、Calico组件说明
3.1.Calico Node
Calico节点是Calico的核心组件,运行在每个集群节点上,负责以下任务:
IPAM(IP地址管理):管理Pod IP地址的分配和回收。 BGP(边界网关协议):使用BGP 与其他Calico 节点交换路由信息,以便网络中的所有Pod 都可以相互通信。应用网络策略:通过iptables 或eBPF 应用网络策略来控制Pod 之间的流量。 Felix:Calico 节点包含Felix 代理,负责与Linux 内核网络堆栈交互、应用网络策略和管理路由。
3.2.Calico Controller
Calico 控制器是一个Kubernetes 控制器,用于管理Calico 和Kubernetes API 之间的交互。其主要职责是:
同步Calico 和Kubernetes 对象:确保Calico 网络策略、IP 池和其他配置与Kubernetes 中定义的对象一致。管理Kubernetes 服务:使用Kubernetes 服务对象,确保服务的IP 地址配置正确并与Calico 网络策略兼容。确保高可用性:通过定期检查和同步确保Calico 配置的一致性和高可用性。
3.3.Calico Typha
Calico Typha 是一个可选组件,主要用于大型Kubernetes 集群,以减少API 服务器的负载并提高性能。职责包括:
数据聚合和分发:从Kubernetes API 服务器检索更新并将这些更新分发到集群中的Calico Node 实例。减少API请求数量:通过集中数据处理和分发,Typha减少了直接与API服务器通信的Calico Node实例的数量,从而减轻了API服务器的负载。提高集群性能:在大型集群上,Typha 通过减少网络流量和提高配置分发效率来提高整体性能。
3.4. 总结
Calico节点是Calico的核心组件,负责管理网络配置和节点上的策略实施。 Calico控制器负责Calico和Kubernetes API之间的交互,保证配置的一致性和高可用性。 Calico Typha 在大型集群中用于聚合和分发数据、减少API 服务器的负载并提高性能。
下一篇:《kubernetes集群部署:node节点部署和CRI-O运行时安装(三)》
以上#kubernetes集群部署:准备环境和部署主节点(二)相关内容来自网络,仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/93187.html