VMware搭建集群环境

硬件环境

序号硬件要求
1cpu至少2核
2内存至少3G
3硬盘至少40G

集群节点

主机名IP
master192.168.66.100
node1192.168.66.101

软件环境

软件版本
操作系统CentOS Linux release 7.5.1804 (Core)
Kubernetes1.23
操作系统内核4.x以上

1、VMware安装

2、虚拟机创建

3、网络配置

1. 配置网关

注意点击右下角管理员运行

2. 配置虚拟机ip

vim /etc/sysconfig/network-scripts/ifcfg-ens33
# dncp为动态ip,开关机会发生变化,static为静态ip,永久不变
BOOTPROTO=static
# 修改为开机自启动网卡
ONBOOT=yes

# 添加配置ip
# 另一台配置 IPADDR=192.168.66.101
IPADDR=192.168.66.100
# 子网掩码
NETMASK=255.255.255.0
# 网关
GATEWAY=192.168.66.1
# 配置阿里的 DNS 服务
DNS1=223.5.5.5
DNS2=223.6.6.6

 重启网卡

service network restart

3. 配置 vmware8 网卡

4. 验证是否配置成功

4、配置阿里云yum源

步骤4-7设置可以通过 xshell 工具一键发送命令到所有连接,不用一个一个机器节点去配置,或者 配置好一台虚拟机之后通过VMware的克隆功能创建一台一摸一样的机器(注意修改ip)

# 1.下载安装wget
yum install -y wget
# 2.备份默认的yum
mv /etc/yum.repos.d /etc/yum.repos.d.backup
# 3.设置新的yum目录
mkdir -p /etc/yum.repos.d
# 4.下载阿里yum配置到该目录中,选择对应版本
wget -O /etc/yum.repos.d/CentOS-Base.repo
http://mirrors.aliyun.com/repo/Centos-7.repo
# 5.更新epel源为阿里云epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# 6.重建缓存
yum clean all
yum makecache
# 7.看一下yum仓库有多少包
yum repolist
# 8.更新软件包为最新版本
yum update

5、升级系统内核

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install -y kernel-lt
# 检查启动项
grep initrd16 /boot/grub2/grub.cfg 
grub2-set-default 0
# 重启机器
reboot

# 检查操作

# 查看系统内核
uname -r
uname -a

# 查看cpu
lscpu 

# 查看内存
lscpu 

# 查看硬盘信息
fdisk -l

6、Centos 配置

1. 关闭防火墙(开发环境下关闭用于学习,生产环境不要关闭)

# 关闭防火墙
systemctl stop firewalld
# 设置开机禁用
systemctl disable firewalld

# 关闭 linux 内核安全的权限
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
setenforce 0

2. k8s 系统默认使用的是 iptables,需添加一些 ip 信息的过滤规则 

# 添加网桥过滤和地址转发功能
vi /etc/sysctl.conf

# 添加以下内容
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-arptables = 1
net.ipv4.ip_forward=1
net.ipv4.ip_forward_use_pmtu = 0

#生效命令
sysctl --system
#查看效果
sysctl -a|grep "ip_forward"

3. k8s 集群要确保时间同步保证各节点通信正常

#安装软件
yum -y install ntpdate
#向阿里云服务器同步时间
ntpdate time1.aliyun.com
#删除本地时间并设置时区为上海
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#查看时间
date -R || date

4. 配置 hosts 地址,后续可通过名称访问 ip 地址

vi /etc/hosts
#添加如下内容
192.168.66.100 k8s-master
192.168.66.101 k8s-node1

5. 禁用 swap 分区(k8s 官网推荐)

#临时关闭
swapoff -a

#注释掉下面的设置(永久关闭)
vi /etc/fstab 
/dev/mapper/centos-swap swap

#确认关闭:若swap行都显示 0 则表示关闭成功
free -m

7、Docker 安装

阿里云镜像加速器生成地址

# 检查是否已经安装 yum-utils
yum list | grep yum-utils
# 安装yum工具包和存储驱动
yum install -y yum-utils

# 推荐使用国内的,阿里云docker镜像
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# docker-ce 社区版,docker-ee是企业版
yum install docker-ce docker-ce-cli containerd.io

# 启动 dokcer
systemctl start docker
# 查看 docker 版本
docker -v
docker info
# 设置开机自启动
systemctl enable docker && systemctl start docker

# Centos 和 Docker 对进程资源分配的方式不一致,会导致集群初始化失败,该文件将 Dokcer 改为和Centos一致
# Centos:systemd
# Docker:cgroupfs
# registry-mirrors -- 自己去阿里云生成的自己的镜像加速器的地址替换
echo '{
 "exec-opts": ["native.cgroupdriver=systemd"],
 "registry-mirrors": ["https://b0jf9vxt.mirror.aliyuncs.com"]
}' > /etc/docker/daemon.json
#
systemctl daemon-reload
systemctl restart docker

8、搭建 k8s 集群

1. 准备工作

# K8s镜像切换成国内源
vi /etc/yum.repos.d/kubernetes.repo 

# 粘贴以下内容
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg 
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg

# 更新缓存
yum clean all
yum -y makecache

# 安装kubeadm、kubelet和kubectl
yum install -y kubelet-1.23.0 kubeadm-1.23.0 kubectl-1.23.0
# 设置kubelet开机启动
systemctl enable kubelet    

2. 部署 k8s

master 节点执行以下命令

# kubeadm init -- 初始化 k8s 集群网络命令
# apiserver-advertise-address -- master 节点主机 ip 地址
# image-repository -- 镜像仓库地址
# kubernetes-version -- k8s 版本
# service-cid -- service 服务的虚拟 ip,通过此 ip 从集群外部访问集群内部应用
# pod-network-cidr -- pod 网络地址,及集群内部的虚拟 ip
# ignore-preflight-errors -- 忽略预检错误
kubeadm init \
 --apiserver-advertise-address=192.168.66.100 \
 --image-repository registry.aliyuncs.com/google_containers \
 --kubernetes-version v1.23.0 \
 --service-cidr=10.96.0.0/12 \
 --pod-network-cidr=10.244.0.0/16 \
 --ignore-preflight-errors=all

执行完成后会生成以下类似的文字,复制下来去工作节点执行,将工作节点加入到集群中


# ip 为master节点的 ip 地址
# token 有效期24小时, 过期需重新生成
# 响应打印 This node has joined the cluster 即执行成功
kubeadm join 192.168.66.100:6443 --token lcsn25.xl3q6w71dc2t9c8l --discovery-token-ca-cert-hash sha256:2eefc9c5acf3c331b45198f5e43642fcf3b9b2083dc49fa8659ecc5a5363d886

# 生成 token
kubeadm token create --print-join-command

创建文件

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

master 节点执行以下命令查看节点配置是否成功

kubectl get nodes

若报错 “The connection to the server localhost:8080 was refused - did you specify the right host or port?” ,是因为kubectl命令需要使用kubernetes-admin来运行,需要admin.conf文件(conf文件是通过“ kubeadmin init”命令在主节点/etc/kubernetes 中创建),但是从节点没有conf文件,也没有设置 KUBECONFIG =/root/admin.conf环境变量,所以需要复制conf文件到从节点,并设置环境变量就OK了

# 将主节点(master)中的“/etc/kubernetes/admin.conf”文件拷贝到从节点相同目录下
# 从节点设置环境变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
# 重新生效环境变量
source ~/.bash_profile

3. 部署容器网络

k8s 通过Calico数据中心网络方案实现容器的互联互通,配置文件下载 calico.yaml,将 CALICO_IPV4POOL_CIDR 改成第二步中pod-network-cidr的值,在master执行

kubectl apply -f calico.yaml

该过程会在node节点下载很多和Calico相关的网络镜像并启动容器 

# master 节点执行,显示node状态为ready就好了
kubectl get nodes

 4. 检查 pod 状态(状态不太对,问题待解决)

# k8s默认master节点不分配pod资源,以下命令去除所有污点
kubectl taint nodes --all node-role.kubernetes.io/master-

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值