K8S-Demo集群实践01:准备VMware虚拟机模板
K8S-Demo集群实践:准备VMware虚拟机模板一、安装VMware1、安装VMware软件2、配置虚拟网络二、创建第一台虚拟机【虚拟机模板】1、安装操作系统 CentOS Linux release 7.8.2003 (Core)2、配置IP地址 192.168.66.103、配置阿里云yum源4、升级内核5、设置系统时区、时钟同步三、完善虚拟机模板1、安装依赖包2、设置开机自动加载IPVS
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集群版本信息
组件 | 版本 | 命令 |
---|---|---|
kubernetes | 1.18.5 | kubectl version |
docker-ce | 19.03.11 | docker version 或者 rpm -qa | grep docker |
etcd | 3.4.3 | etcdctl version |
calico | 3.13.3 | calico -v |
coredns | 1.7.0 | coredns -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。
更多推荐
所有评论(0)