生产环境可部署Kubernetes集群的两种方式
- kubeadm
Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群。 官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/
- 二进制包
从github下载发行版的二进制包,手动部署每个组件,组成Kubernetes集群。 Kubeadm降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可控,推荐使用二进制包部署Kubernetes集群,虽然手动部署麻烦点,期间可以学习很多工作原理,也利于后期维护。
安装要求
- 在开始之前,部署Kubernetes集群机器需要满足以下几个条件:
- 一台或多台机器,操作系统 CentOS7.x-86_x64
- 硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多
- 可以访问外网,需要拉取镜像,如果服务器不能上网,需要提前下载镜像并导入节点
- 禁止swap分区
准备环境
- 软件环境
软件 | 版本 |
操作系统 | CentOS7.8_x64 |
docker | 19.03.9 |
Kubernetes | v1.18.8 |
Etcd | v3.4.9 |
- 服务器整体规划
角色 | IP | 组件 |
k8s-master1 | 10.10.1.37 | kube-apiserver,kube-controller- manager,kube-scheduler,etcd |
k8s-master2 | 10.10.1.38 | kube-apiserver,kube-controller- manager,kube-scheduler |
k8s-node1 | 10.10.1.39 | kubelet,kube-proxy,docker, etcd |
k8s-node2 | 10.10.1.40 | kubelet,kube-proxy,docker,etcd |
- 配置主机名【master和node节点都操作】
[root@iZ2zeet88b9dmz14e258c7Z ~]# hostnamectl set-hostname k8s-master1 [root@localhost ~]# hostnamectl set-hostname k8s-master2 [root@iZ2zeet88b9dmz14e258c5Z ~]# hostnamectl set-hostname k8s-node1 [root@iZ2zeet88b9dmz14e258c8Z ~]# hostnamectl set-hostname k8s-node2
- 关闭防火墙
[root@iZ2zei14p015t8wkktdhn2Z ~]# systemctl stop firewalld [root@iZ2zei14p015t8wkktdhn2Z ~]# systemctl disable firewalld
- 关闭selinux
[root@iZ2zei14p015t8wkktdhn2Z ~]# sed -i 's/enforcing/disabled/' /etc/selinux/config [root@iZ2zei14p015t8wkktdhn2Z ~]# setenforce 0 setenforce: SELinux is disabled
- 关闭swap
[root@iZ2zei14p015t8wkktdhn2Z ~]# swapoff -a [root@k8s-master1 ~]# sed -ri 's/.*swap.*/#&/' /etc/fstab
- 添加主机名与IP对应关系(记得设置主机名)
cat >> /etc/hosts<<EOF 10.10.1.37 k8s-master1 10.10.1.38 k8s-master2 10.10.1.39 k8s-node1 10.10.1.40 k8s-node2 EOF
- 将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 net.ipv4.ip_nonlocal_bind = 1 EOF modprobe br_netfilter sysctl --system
配置所有master到所有节点(包括自身)的ssh免密登录
依此在所有的master节点上做如下操作:
[root@k8s-master1 ~]# ssh-keygen -t rsa [root@k8s-master1 ~]# ssh-copy-id k8s-master2 [root@k8s-master1 ~]# ssh-copy-id k8s-node1 [root@k8s-master1 ~]# ssh-copy-id k8s-node2
时间同步
- 安装ntpdate
yum install chrony ntpdate -y
- 修改配置文件
cp -a /etc/chrony.conf /etc/chrony.conf.bak sed -i "s%^server%#server%g" /etc/chrony.conf
- 添加同步地址
echo "server ntp.aliyun.com iburst" >> /etc/chrony.conf
- 启动
systemctl start chronyd.service systemctl enable chronyd.service systemctl status chronyd.service
- 查看ntp_servers状态
chronyc sources
- 查看ntp详细信息
chronyc tracking
开始搭建
继续阅读
- 我的QQ
- QQ扫一扫
-
- 我的头条
- 头条扫一扫
-
评论