K8S-Demo集群实践01:准备VMware虚拟机模板

  • 这是本案例的第一篇文章,后续计划通过20篇左右的文章,介绍一个接近生产环境的K8S集群的搭建过程
  • 本集群命名为 K8S-Demo,部署在一台笔记本上,主要方便在家在地铁在机场等碎片时间折腾
  • K8S-Demo集群由3台Master+3台Node节点组成,基本实践了高可靠高可用的部署方案
  • 容器镜像仓库、MySQL、Redis等借用之前已经在WIN10笔记本上安装好的
  • 生产环境由于规模更大,管理节点更多,对网络和存储等要求更高,例如每天都有大量的项目版本发布,如何保障容器镜像仓库的高可用高可靠?如何保障所有节点都可以快速拉取容器镜像?这方面的问题欢迎在评论区交流
  • 硬件环境比较简单,就是平时工作用的笔记本,把内存搞大一下就好,建议至少32G的内存
  • Master节点配置为2核或者4核3G,Node节点配置为2核或4核2G
  • 镜像有更多的使用场景和含义,Docker镜像又会忽视其他容器公司的存在,K8S-Demo系列文章尽量使用容器镜像表述

一、安装VMware

1、安装VMware软件

  • 参考 https://www.cnblogs.com/fuzongle/p/12760193.html
  • k8s-demo 使用的安装包 VMware-workstation-full-15.5.2-15785246.exe

2、配置虚拟网络

在这里插入图片描述
在这里插入图片描述

  • 使用NAT模式,网络设置为 192.168.66.0

二、创建第一台虚拟机【虚拟机模板】

1、安装操作系统 CentOS Linux release 7.8.2003 (Core)

  • 这一步会设置root用户密码

2、配置IP地址 192.168.66.10

  • 编辑 /etc/sysconfig/network-scripts ,内容如下
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.66.10
GATEWAY=192.168.66.2
NETMASK=255.255.255.0
DNS1=10.8.0.2
DNS2=192.168.66.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=68b1d42c-83fa-4e41-b262-53dd7b844ae8
DEVICE=ens33
ONBOOT=yes
  • 重启网络服务
[root@localhost ~]# systemctl restart network.service

3、配置阿里云yum源

[root@localhost ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]# yum clean all
[root@localhost ~]# yum makecache
[root@localhost ~]# yum upgrade
[root@localhost ~]# yum update

4、升级内核

  • CentOS 7.x 系统自带的3.10.x内核存在Bugs,导致运行的Docker不稳定,解决方案是升级内核到4.4.X以上
[root@localhost ~]# uname -a
Linux localhost 3.10.0-1160.6.1.el7.x86_64 #1 SMP Tue Nov 17 13:59:11 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# uname -sr
Linux 3.10.0-1160.6.1.el7.x86_64
[root@localhost ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
[root@localhost ~]# yum --enablerepo=elrepo-kernel install -y kernel-lt
[root@localhost ~]# grub2-set-default 0
[root@localhost ~]# sync
[root@localhost ~]# reboot
... ... ... ...
[root@localhost ~]# uname -sr
Linux 4.4.248-1.el7.elrepo.x86_64
  • 安装完成后检查 /boot/grub2/grub.cfg 中对应内核 menuentry 中是否包含 initrd16 配置,如果没有,再安装一次
  • 设置开机从新内核启动
  • 重启机器,检查内核是否成功升级成功

5、设置系统时区、时钟同步

[root@localhost ~]# timedatectl set-timezone Asia/Shanghai
[root@localhost ~]# systemctl enable chronyd
[root@localhost ~]# systemctl start chronyd

三、完善虚拟机模板

1、安装依赖包

[root@localhost ~]# yum install -y epel-release
[root@localhost ~]# yum install -y chrony conntrack ipvsadm ipset jq iptables curl sysstat libseccomp wget socat git

2、设置开机自动加载IPVS模块

  • 编辑 /etc/modules-load.d/kubernetes.conf
[root@localhost ~]# cat >>/etc/modules-load.d/kubernetes.conf<<EOF
ip_vs_dh
ip_vs_ftp
ip_vs
ip_vs_lblc
ip_vs_lblcr
ip_vs_lc
ip_vs_nq
ip_vs_pe_sip
ip_vs_rr
ip_vs_sed
ip_vs_sh
ip_vs_wlc
ip_vs_wrr
nf_conntrack_ipv4
overlay
br_netfilter
EOF
  • 设置开机加载
[root@localhost ~]# systemctl enable systemd-modules-load.service
  • 重启后,检查ipvs模块是否加载
[root@localhost ~]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4

3、关闭防火墙、SWAP分区及SELinux

  • 关闭防火墙,清理防火墙规则,设置默认转发策略
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat
[root@localhost ~]# iptables -P FORWARD ACCEPT
  • 关闭swap分区,否则kubelet会启动失败,也可以设置kubelet启动参数 --fail-swap-on为false关闭swap检查
[root@localhost ~]# swapoff -a
[root@localhost ~]# sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
  • 关闭 SELinux,否则 kubelet 挂载目录时可能报错Permission denied
[root@localhost ~]# setenforce 0
[root@localhost ~]# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config

4、优化内核参数

  • 关闭tcp_tw_recycle,否则与NAT冲突,可能导致服务不通
[root@localhost ~]# cat > /etc/sysctl.d/sysctl.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
net.ipv4.tcp_tw_recycle=0
vm.swappiness=0
vm.overcommit_memory=1
vm.panic_on_oom=0
fs.inotify.max_user_instances=8192
fs.inotify.max_user_watches=1048576
fs.file-max=52706963
fs.nr_open=52706963
net.ipv6.conf.all.disable_ipv6=1
net.netfilter.nf_conntrack_max=2310720
EOF
[root@localhost ~]# sysctl -p /etc/sysctl.d/sysctl.conf

5、关闭无关的服务

[root@localhost ~]# systemctl stop postfix && systemctl disable postfix

四、安装Docker

1、卸载旧版本(如果安装过旧版本的话)

[root@localhost ~]# rpm -qa | grep docker
[root@localhost ~]# yum remove docker docker-common docker-selinux docker-engine
[root@localhost ~]# rm -rf /var/lib/docker

2、安装Docker依赖的软件包

[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
  • yum-util提供yum-config-manager功能
  • 另外两个是devicemapper驱动依赖

3、设置yum源

[root@localhost ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
[root@localhost ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 这里使用的是阿里云镜像

4、安装Docker的稳定版本

  • 更新yum缓存
  • 查看所有仓库中所有docker版本
  • 选择特定版本安装
[root@localhost ~]# yum clean all
[root@localhost ~]# yum makecache fast
[root@localhost ~]# yum list docker-ce --showduplicates | sort -r
[root@localhost ~]# yum install docker-ce-18.09.9-3.el7.x86_64

5、设置开机启动

[root@localhost ~]# systemctl start  docker
[root@localhost ~]# systemctl enable docker

6、验证Docker是否安装成功

[root@localhost ~]# docker version
[root@localhost ~]# docker info
[root@localhost ~]# docker -h

附:K8s-Demo集群版本信息

组件版本命令
kubernetes1.18.5kubectl version
docker-ce19.03.11docker version 或者 rpm -qa | grep docker
etcd3.4.3etcdctl version
calico3.13.3calico -v
coredns1.7.0coredns -version

附:专栏链接

K8S-Demo集群实践00:搭建镜像仓库Harbor+安全扫描
K8S-Demo集群实践01:准备VMware虚拟机模板
K8S-Demo集群实践02:准备VMware虚拟机3台Master+3台Node
K8S-Demo集群实践03:准备集群各组件间HTTPS通讯需要的x509证书
K8S-Demo集群实践04:部署etcd三节点高可用集群
K8S-Demo集群实践05:安装kubectl并配置集群管理员账户
K8S-Demo集群实践06:部署kube-apiserver到master节点(3个无状态实例)
K8S-Demo集群实践07:kube-apiserver高可用方案
K8S-Demo集群实践08:部署高可用kube-controller-manager集群
K8S-Demo集群实践09:部署高可用kube-scheduler集群
K8S-Demo集群实践10:部署ipvs模式的kube-proxy组件
K8S-Demo集群实践11:部署ipvs模式的kube-kubelet组件
K8S-Demo集群实践12:部署Calico网络
K8S-Demo集群实践13:部署集群CoreDNS
K8S-Demo集群实践14:部署集群监控服务Metrics Server
K8S-Demo集群实践15:部署Kubernetes Dashboard
K8S-Demo集群实践16:部署Kube-Prometheus
K8S-Demo集群实践17:部署私有云盘owncloud(10.6版本)
K8S-Demo集群实践18:构建宇宙中第一个基础容器镜像


  • 先用起来,通过操作实践认识k8s,积累多了自然就理解了
  • 把理解的知识分享出来,自造福田,自得福缘
  • 追求简单,容易使人理解
  • 知识的上下文也是知识的一部分,例如版本,时间等
  • Jason@vip.qq.com 2021-1-17。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值