01.Kubernetes 二进制部署前准备
2023-12-27 17:31:28
在真正安装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.io | 192.168.36.151 | apiserver/scheduler/controller-manager/kubelet/kube-proxy | 主节点 |
rocky01.examp.io | 192.168.36.152 | apiserver/scheduler/controller-manager/kubelet/kube-proxy | 主节点 |
rocky01.examp.io | 192.168.36.153 | etcd/kubelet/kube-proxy | 工作节点 |
rocky01.examp.io | 192.168.36.154 | etcd/kubelet/kube-proxy | 工作节点 |
rocky01.examp.io | 192.168.36.155 | etcd/kubelet/kube-proxy | 工作节点 |
docker.examp.io | 192.168.36.128 | kubectl/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节点上下载所需的二进制包,并解压到对应位置
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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!