k8s-03-1-安装准备

目前生产部署 Kubernetes 集群主要有两种方式:
(1)kubeadm (推荐)
Kubeadm 是一个 K8s 部署工具,提供 kubeadm init 和 kubeadm join,用于快速部署 Kubernetes 集群。官方地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm/
(2)二进制包
从 github 下载发行版的二进制包,手动部署每个组件,组成 Kubernetes 集群。Kubeadm 降低部署门槛,但屏蔽了很多细节,遇到问题很难排查。如果想更容易可控,推荐使用二进制包部署 Kubernetes 集群,虽然手动部署麻烦点,期间可以学习很多工作原理,也利于后期维护。
(3)Minikube
Minikube 是一个易于在本地运行 Kubernetes 的工具,可在你的笔记本电脑上的虚拟机内轻松创建单机版 Kubernetes 集群。便于尝试 Kubernetes 或使用 Kubernetes 日常开发。

安装前准备

在这里插入图片描述
主机规划(centos7 2GB 或更多 RAM,2 个 CPU 或更多 CPU,硬盘 30GB 或更多)
在这里插入图片描述

组件说明

kube-apiserver

  • 使用节点本地Nginx 4层透明代理实现高可用 (也可以使用haproxy,只是起到代理apiserver的作用)
  • 关闭非安全端口8080和匿名访问
  • 使用安全端口6443接受https请求
  • 严格的认知和授权策略 (x509、token、rbac)
  • 开启bootstrap token认证,支持kubelet TLS bootstrapping;
  • 使用https访问kubelet、etcd

kube-controller-manager

  • 3节点高可用 (在k8s中,有些组件需要选举,所以使用奇数为集群高可用方案)
  • 关闭非安全端口,使用10252接受https请求
  • 使用kubeconfig访问apiserver的安全扣
  • 使用approve kubelet证书签名请求(CSR),证书过期后自动轮转
  • 各controller使用自己的ServiceAccount访问apiserver

kube-scheduler

  • 3节点高可用;
  • 使用kubeconfig访问apiserver安全端口

kubelet

  • 使用kubeadm动态创建bootstrap token
  • 使用TLS bootstrap机制自动生成client和server证书,过期后自动轮转
  • 在kubeletConfiguration类型的JSON文件配置主要参数
  • 关闭只读端口,在安全端口10250接受https请求,对请求进行认真和授权,拒绝匿名访问和非授权访问
  • 使用kubeconfig访问apiserver的安全端口

kube-proxy

  • 使用kubeconfig访问apiserver的安全端口
  • 在KubeProxyConfiguration类型JSON文件配置为主要参数
  • 使用ipvs代理模式

集群插件

  • DNS 使用功能、性能更好的coredns
  • 网络 使用Flanneld 作为集群网络插件

系统初始化

1.关闭防火墙

systemctl stop firewalld && systemctl disable firewalld

2 关闭 selinux:

iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat&& iptables -P FORWARD ACCEPT
# 临时 && 永久
setenforce 0 && sed -i 's/enforcing/disabled/' /etc/selinux/config 

3 关闭 swap:(k8s不建议使用交换分区,影响性能,如果开启了swap分区,kubelet会启动失败(可以通过设置参数——-fail-swap-on设置为false))

 # 临时 &&  永久
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab 

4 设置主机名:

 hostnamectl set-hostname <hostname>

5添加主机解析 (如果有DNS解析可以不能配置)

cat >> /etc/hosts << EOF
192.168.44.131 k8s.harbor
192.168.44.130 k8s.master.com
192.168.44.132 k8s.node1.com
192.168.44.133 k8s.node2.com
EOF

6 将桥接的 IPv4 流量传递到 iptables 的链:

#cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
 sysctl --system # 生效

7 时间同步(集群需要保证时间一致):

#将当前的 UTC 时间写入硬件时钟
timedatectl set-timezone Asia/Shanghai && timedatectl set-local-rtc 0
 #重启依赖于系统时间的服务
systemctl restart rsyslog && systemctl restart crond
# 同步时间
yum install ntpdate -y && ntpdate cn.pool.ntp.org

8 设置免密登录(跨服务器操作方便,用于同一下发资源文件)

yum install -y expect
#分发公钥 我这里密码是123456  大家按照自己主机的密码进行修改就可以
ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa
for i in k8s.harbor k8s.master.com k8s.node1.com k8s.node2.com;do
expect -c "
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@$i
        expect {
                \"*yes/no*\" {send \"yes\r\"; exp_continue}
                \"*password*\" {send \"123456\r\"; exp_continue}
                \"*Password*\" {send \"123456\r\";}
        } "
done 

安装依赖

um install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git

升级内核

1.Docker overlay2需要使用kernel 4.x版本,所以我们需要升级内核
2.CentOS 7.x 系统自带的 3.10.x 内核存在一些 Bugs,导致运行的 Docker、Kubernetes 不稳定,例如: rpm -Uvh
http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
# 安装完成后检查 /boot/grub2/grub.cfg 中对应内核 menuentry 中是否包含 initrd16 配置,如果没有,再安装
一次!
yum --enablerepo=elrepo-kernel install -y kernel-lt
# 设置开机从新内核启动
grub2-set-default 'CentOS Linux (4.4.189-1.el7.elrepo.x86_64) 7 (Core)'

修改内核启动顺序,默认启动的顺序应该为1,升级以后内核是往前面插入,为0(如果每次启动时需要手动选择哪个内核,该步骤可以省略)

grub2-set-default  0 && grub2-mkconfig -o /etc/grub2.cfg

使用下面命令看看确认下是否启动默认内核指向上面安装的内核

grubby --default-kernel
#这里的输出结果应该为我们升级后的内核信息

重启加载新内核 (升级完内核顺便update一下)

 reboot
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值