一、前提条件

  • 由于Kubernetes集群环境情况下,对于设备的硬盘、内存、CPU都有较高一定的需求,本人为了方便学习Kubernetes集群,宿主机配置是:8核+16G+512G的配置,需提前准备三台虚拟机,需可以联通外网的情况下搭建此环境,本人虚拟机配置如下:
    • Node1主节点:2核+3G+20G的配置
    • Node2节点:2核+5G+20G的配置
    • Node3节点:2核心+5G+20G的配置
  • 总体:6核+13G+60G的配置足以搭建起来K8s集群以及kubesphere环境的搭建。

image.png

  • 此搭建K8s和docker版本如下:
    • Kubernetes:v1.20.6
    • Docker:v20.10.22

二、配置静态网卡

  1. 查看虚拟机上的网关IP地址

image.png
image.png

  1. 三台虚拟机网卡配置
#修改网卡配置文件
vi /etc/sysconfig/network-scripts/ifcfg-ens33

#修改网卡配置文件(主节点)
BOOTPROTO=static #将dhcp模式改为static
ONBOOT=yes #将no改为yes
#静态网络配置信息如下
IPADDR=192.168.47.139
NETMASK=255.255.255.0
GATEWAY=192.168.47.2
DNS1=8.8.8.8
DNS2=114.114.114.114

#修改网卡配置文件(节点1)
BOOTPROTO=static #将dhcp模式改为static
ONBOOT=yes #将no改为yes
#静态网络配置信息如下
IPADDR=192.168.47.140
NETMASK=255.255.255.0
GATEWAY=192.168.47.2
DNS1=8.8.8.8
DNS2=114.114.114.114

#修改网卡配置文件(节点2)
BOOTPROTO=static #将dhcp模式改为static
ONBOOT=yes #将no改为yes
#静态网络配置信息如下
IPADDR=192.168.47.141
NETMASK=255.255.255.0
GATEWAY=192.168.47.2
DNS1=8.8.8.8
DNS2=114.114.114.114

#三台节点机器重启网卡
service network restart
  1. 在可以联通外网的情况下,可以不用配置本地Yum源,直接更新Yum源即可
#更新yum源
yum update

#重新建立yum源缓存信息
yum makecache

三、搭建基本环境

3.1、配置host文件

  • 该操作需要三台节点机器操作
#写入主机名解析文件
cat << EOF >/etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.47.139 k8s-node1
192.168.47.140 k8s-node2
192.168.47.141 k8s-node3
EOF

#设置每一个节点的主机名
hostname k8s-node1(主节点)
hostname k8s-node2(节点1)
hostname k8s-node3(节点2)

#查看每一个节点的主机名
hostname

3.2、禁用firewalld防火墙

  • 该操作需要三台节点机器操作
#禁用firewalld
systemctl stop firewalld
systemctl disable firewalld

image.png

3.3、关闭selinux安全策略

  • 使用sestatus发现是开启状态的

image.png

  • 关闭安全策略
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
  • 输入reboot命令重启三台节点虚拟机

image.png

3.4、关闭Swap内存交换

  • 输入free -h命令可以看到默认是有Swap内存交换的

image.png

  • 三台节点机器关闭Swap内存交换
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

image.png

3.5、修改Linux内核参数

  • 将桥接的IPv4流量传递到iptables的链;
  • 以下操作需要三台节点机器操作;
#写入配置信息,会自动创建该k8s.conf文件
cat > /etc/sysctl.d/k8s.conf << EOF 
net.bridge.bridge-nf-call-ip6tables = 1 
net.bridge.bridge-nf-call-iptables = 1 
EOF

#重新生成应用配置文件
sysctl --system

image.png

四、搭建Docker环境

  • 以下所有操作需要三台节点机器全部安装Docker环境
yum remove docker docker-client docker-client-latest docker-common docker-latest 
docker-latest-logrotate docker-logrotate docker-engine
  • 安装Gcc相关环境依赖
1、yum -y install gcc
2、yum -y install gcc-c++
  • yum安装软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
  • 设置stable镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • yum安装docker-ce
yum -y install docker-ce
  • 查看Docker版本
docker version
  • 配置国内镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://cjbhlr8d.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
  • 利用docker info命令查看是否配置加速器

image.png

  • 设置开机自启动Docker
systemctl enable docker

五、搭建kubernetes集群

5.1、添加阿里云Yum源

  • 该操作需要三台节点机器执行
cat > /etc/yum.repos.d/kubernetes.repo << EOF 
[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 
EOF

5.2、安装kubeadm、kubelet、kubectl

你需要在每台机器上安装以下的软件包:

  • kubeadm:用来初始化集群的指令。
  • kubelet:在集群中的每个节点上用来启动 Pod 和容器等。
  • kubectl:用来与集群通信的命令行工具。
#安装K8s组件
yum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6

#设置开机自启动kubelet
systemctl enable kubelet

#开启kubelet
systemctl start kubelet

#查看kubelet日志
journalctl -xefu kubelet

5.3、部署主节点

kubeadm init \
  --apiserver-advertise-address=192.168.47.139 \
  --image-repository registry.aliyuncs.com/google_containers \
  --kubernetes-version v1.20.6 \
  --service-cidr=10.96.0.0/12 \
  --pod-network-cidr=10.244.0.0/16

参数解释:
--apiserver-advertise-address:API服务器将通知它正在监听的IP地址,监听的地址为:"0.0.0.0",即本机所有IP地址。
--image-repository:即为拉取基础镜像仓库镜像地址
--apiserver-bind-port:API服务器绑定到的端口(默认:6443)
--cert-dir:加载证书的相关目录(默认:/etc/kubernetes/pki)
--config:配置文件的路径,警告:配置文件目前属于实验性,还不稳定。
--ignore-preflight-errors:将错误显示为警告的检查列表进行忽略,例如:“IsPrivilegedUser,Swp”,“Value 'all’忽略所有检查中的错误。
--pod-network-cidr:指定pod网络的IP地址范围,如果设置,控制平面将为每个节点自动分配CIDRs。
--service-cidr:为Service VIPs使用不同的IP地址,(默认"10.96.0.0/12”)
image.png
image.png

  • 以上就完成了Kubernetes集群主节点的环境搭建根据提示,第一步创建主节点文件
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

5.4、安装Pod网络插件

  • 可以看出master的状态是未就绪(NotReady),之所以是这种状态是因为还缺少一个附件 flannel 或者 Calico,没有网络各 Pod 是无法通信的。

    在这里插入图片描述

  • 这里使用flannel作为Pod的网络插件

    • https://github.com/flannel-io/flannel:GitHub地址
  • 应用flannel文件地址

#下载flannelYaml文件
wget https://raw.githubusercontent.com/flannel-io/flannel/v0.20.2/Documentation/kube-flannel.yml

#查看下载kube-flannel文件
vi kube-flannel.yml
  • 这块儿一定要跟master主节点当中的pod-network-cidr参数一致这是Pod当中的网络参数

image.png

  • 创建kube-flannel网络插件
kubectl apply -f kube-flannel.yml
  • 等待kube-flannel网络插件为Running状态
kubectl get pods --all-namespaces 
或
kubectl get pods -A

image.png

  • 查看Kubernetes集群状态

image.png

5.5、加入节点

  • kubeadm组件管理集群组件需要将Node2节点和Node3节点加入主节点
  • 以上操作分为在Node2节点和Node3节点上执行
kubeadm join 192.168.47.139:6443 --token vyz3tk.hn5jka5emv5x2158 \
--discovery-token-ca-cert-hash sha256:329a3a41646c4a631aecdf5df4de98406051f2e76ae8c3cd412276f9dfe361ee 
  • 如遇到Token过期情况怎么办?
kubeadm token create --print-join-command
或
kubeadm token create --ttl 0 --print-join-command
  • Node2节点和Node3节点加入Node1主节点

image.png

  • 这部分如果遇到网络情况不要着急,必须等Node2Node3节点上出现flannel组件和子节点上的基础组件

image.png
image.png

  • 至此Kubernetes集群搭建完成

image.png
image.png

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐