01.Kubernetes 二进制部署前准备

发布时间:2023年12月27日

在真正安装k8s之前,需要做一些必要的准备工作。

1、准备机器

在这里插入图片描述

从上面kubernetes架构图可以看出,k8s集群机器可以分为3类:

  • 1、Etcd集群(一般由3个或5个节点组成。小规模集群可以和K8S集群的主节点混合部署)
  • 2、K8S集群的主节点(Control-plane 也叫控制平面,为了高可用,一般两个或两个以上的主节点)
  • 3、K8S集群工作节点(nodes,官方建议不超过5000)
  • 4、客户端节点(用户和集群进行交互的节点)

具体可以参考官方文档 大规模集群的注意事项

2、配置网络

K8S集群涉及3个网段,要确保3个网段没有重叠
1、集群中节点本身的网段
2、Pod网络CIDR(地址段)
3、Service CIDR(地址段)

为确保这3个网段不重叠,一般会选择3个不同的私有网络地址段

10.0.0.0        -   10.255.255.255  (10/8 prefix)
172.16.0.0      -   172.31.255.255  (172.16/12 prefix)
192.168.0.0     -   192.168.255.255 (192.168/16 prefix)

3、演示环境

操作系统一般选择Ubuntu或最新版的CentOS,我的演示环境的使用过的Rocky9.2(兼容CentOS),具体使用什么系统还有根据个人或企业偏好来选择。
这里我创建了6个虚拟机(建议配置好网络和主机名以后给虚拟机做个快照,方便后期重复实验可以快速恢复环境),各个机器的角色和服务如下:

主机名IP服务角色
rocky01.examp.io192.168.36.151apiserver/scheduler/controller-manager/kubelet/kube-proxy主节点
rocky01.examp.io192.168.36.152apiserver/scheduler/controller-manager/kubelet/kube-proxy主节点
rocky01.examp.io192.168.36.153etcd/kubelet/kube-proxy工作节点
rocky01.examp.io192.168.36.154etcd/kubelet/kube-proxy工作节点
rocky01.examp.io192.168.36.155etcd/kubelet/kube-proxy工作节点
docker.examp.io192.168.36.128kubectl/dnsmasq/ansible客户端

网段选择:

  • 虚拟机网段:192.168.36.0/34
  • Pod网络CIDR:10.244.0.0/16
  • Service CIDR:172.20.0.0/16

dnsmasq 服务

演示环境我没有逐个机器进行配置 hosts 文件,而是部署了dnsmasq 这个简易的dns服务(在公司一般都会有单独的DNS服务,直接使用即可)

dnsmasq 安装也很简单,下面以CentOS为例进行演示

# yum 安装
~]# yum install dnsmasq -y

# 编辑配置文件
~]# vi /etc/dnsmasq.d/server.conf
port=53
listen-address=192.168.36.128
domain=example.io
# 依赖的外部DNS服务
resolv-file=/etc/resolv.dnsmasq.conf
# 不加载默认的 /etc/hosts
no-hosts
# 读取目录中的所有文件,文件更新将自动读取
hostsdir=/etc/dnsmasq.hosts
# addn-hosts=/etc/dnsmasq.hosts
expand-hosts
cache-size=1000
log-queries
log-facility=/var/log/dnsmasq/dnsmasq.log
log-async=100

# 外部使用阿里的dns服务
~]# vi /etc/resolv.dnsmasq.conf 
nameserver 223.5.5.5
nameserver 223.6.6.6

# 配置集群中的各个主机IP和名称
~]# cat /etc/dnsmasq.hosts/rockylinux 
192.168.36.151 rocky01
192.168.36.152 rocky02
192.168.36.153 rocky03
192.168.36.154 rocky04
192.168.36.155 rocky05

# 启动服务
~]# systemctl start dnsmasq

# 集群中其它节点配置该dns服务即可
~]# cat /etc/resolv.conf 
# Generated by NetworkManager
search example.io
nameserver 192.168.36.128

4、下载二进制安装包

在ansible节点上下载所需的二进制包,并解压到对应位置

已上传百度网盘
链接:https://pan.baidu.com/s/1Mq6Wpu4-YE582jGNsF2cBQ 提取码:cshx

sudo wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64 -O /usr/local/bin/cfssl
sudo wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64 -O /usr/local/bin/cfssljson

sudo chmod u+x /usr/local/bin/cfssl
sudo chmod u+x /usr/local/bin/cfssljson

wget https://storage.googleapis.com/kubernetes-release/release/v1.29.0/kubernetes-server-linux-amd64.tar.gz
tar -xzf kubernetes-server-linux-amd64.tar.gz
sudo mv kubernetes/server/bin/* /usr/local/bin/

wget https://github.com/etcd-io/etcd/releases/download/v3.5.11/etcd-v3.5.11-linux-amd64.tar.gz
tar -xzf etcd-v3.5.11-linux-amd64.tar.gz
sudo mv etcd-v3.5.11-linux-amd64/{etcd,etcdctl} /usr/local/bin/

sudo mkdir /opt/pkgs/
wget https://github.com/containerd/containerd/releases/download/v1.7.11/cri-containerd-cni-1.7.11-linux-amd64.tar.gz -O /root/

# 如果使用 calico 需要下载 calicoctl
wget https://github.com/projectcalico/calico/releases/download/v3.26.1/calicoctl-linux-amd64
sudo mv calicoctl-linux-amd64 /usr/local/bin/calicoctl

# 如果是centos 7需要单独下载 Static Linking 的 runc
wget https://github.com/opencontainers/runc/releases/download/v1.1.9/runc.amd64
sudo mv runc.amd64 /usr/local/sbin/runc
sudo chmod u+x /usr/local/sbin/runc
文章来源:https://blog.csdn.net/yxydde/article/details/135219707
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。