kubernetes集群部署:环境准备及master节点部署(二) kubernetes集群搭建

kubernetes集群部署:环境准备及master节点部署(二)主机名IPv4地址IPv6地址角色安装组件操作系统k8s130-node190192.168.XX.190240a:XX::190masterkubeadm、kubelet、

主机名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

(0)
CSDN's avatarCSDN
上一篇 2024年7月5日 下午4:05
下一篇 2024年7月5日 下午4:22

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注