二进制部署K8S-v1.18.8高可用版本

IT
IT
IT
335
文章
1
评论
2020年9月5日10:34:57 评论 5,152 2534字阅读8分26秒

生产环境可部署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
Load Balancer(Master) 10.10.1.41 Nginx Keepalived
Load Balancer(Backup) 10.10.1.42 Nginx Keepalived
vip 10.10.1.43 虚拟IP
  • 配置主机名【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扫一扫
  • weinxin
  • 我的头条
  • 头条扫一扫
  • weinxin
IT
  • 本文由 发表于 2020年9月5日10:34:57
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
二进制部署K8S-v1.16版本 二进制

二进制部署K8S-v1.16版本

Kubernetes是什么 Kubernetes是Google在2014年开源的一个容器集群管理系统,Kubernetes简称K8S。 K8S用于容器化应用程序的部署、扩展和管理 K8S提供了容器编排...
二进制部署K8S-v1.16版本 二进制

二进制部署K8S-v1.16版本

Kubernetes是什么 Kubernetes是Google在2014年开源的一个容器集群管理系统,Kubernetes简称K8S。 K8S用于容器化应用程序的部署、扩展和管理 K8S提供了容器编排...