云原生⚡手把手教你搭建集群环境⚡Linux服务器集群+Docker+Kubernetes 完整集群搭建

Posted 故里º

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云原生⚡手把手教你搭建集群环境⚡Linux服务器集群+Docker+Kubernetes 完整集群搭建相关的知识,希望对你有一定的参考价值。

目录

一、创建Linux集群环境:

1.创建虚拟机:

选择时区:

配置网络:

 设置密码和用户:

系统安装选择:

2.配置虚拟机:

修改虚拟机IP:

在虚拟机中修改配置:

 修改主机名:

二、安装Docker:

1.移除Docker相关内容:

2.安装基本依赖环境:

3.设置镜像仓库,进行下载:

指定版本安装:

4.启动Docker:

判断是否启动成功:

5.配置镜像加速:

三、搭建集群环境:

1.克隆虚拟机:

2.配置克隆的虚拟机: 

修改主机的IP配置文件:

修改主机名称:

四、搭建Kubernetes集群:

1.基础环境准备:

2.安装Kubelet、Kubeadm、Kubectl:

3.启动集群环境:

使用Kubeadm引导启动集群:

初始化主节点:

4.安装网络插件:

5.加入Node节点:

6.部署dashboard可视化界面:


一、创建Linux集群环境:

1.创建虚拟机:

        这里最少创建两台虚拟机,如果电脑资源充足可以创建三台+虚拟机,其中一台作为Matser主机,另外两台+作为节点主机!

        如果不会创建虚拟机可以参考一下我的这篇文章:(记录了详细步骤,有任何问题可以后台私信我)【Linux】VMware安装虚拟机_故里的博客-CSDN博客

        CentOS镜像文件(百度云盘):

链接:https://pan.baidu.com/s/1O7-iu4c500PpdQFr8rlmyQ 
提取码:4gqf 

注意:

        虚拟机的配置,这里要求Master节点的虚拟机运行内存略大一些,否者可能会导致后面启动集群时,出现宕机情况(实操翻车......)

        这里我推荐使用4G+的运行内存,50G磁盘空间,其余配置默认即可!

选择时区:

配置网络:

安装虚拟机时打开网络桥接,需要虚拟机能通过实体机连接外网!

 设置密码和用户:

系统安装选择:

选择带有GUI图形界面安装(可以选择最小安装或者不带图形界面,不影响使用,可能部分命令需要手动进行安装后才能使用!)

目前只需要安装一台虚拟机即可!!!

2.配置虚拟机:

        我这里使用了Xshell远程连接工具,你们可以根据自己的习惯选择自己喜欢的工具,或者直接在虚拟机上进行操作即可!

修改虚拟机IP:

打开虚拟网络编辑器:

更改配置:

在虚拟机中修改配置:

在虚拟机中执行:

#打开Linux中的网络配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33 

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"   #这里改为static静态,虚拟机的IP不会随接入网络改变
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="0659cf86-6478-4517-bd39-40a26a87c389"
DEVICE="ens33"
ONBOOT="yes"

IPADDR=192.168.10.100
GATEWAY=192.168.10.2
DNS1=192.168.10.2

 修改主机名:

#设置主机名
hostnamectl set-hostname k8s-master 

重启虚拟机使配置生效!

#查看Linux主机名
hostname

#查看Linux的IP地址
ip address

二、安装Docker:

 关于Docker的详细安装及相关操作可以参考我的另一篇文章:

【Docker】Docker概述&安装(Linux)_故里的博客-CSDN博客

1.移除Docker相关内容:

        我们是新创建的虚拟机,默认不会自带Docker,需要手动下载安装。如果使用其它虚拟机或者云服务器,已经安装过Docker,可以执行以下命令卸载已经安装的Docker

sudo yum remove docker \\
                  docker-client \\
                  docker-client-latest \\
                  docker-common \\
                  docker-latest \\
                  docker-latest-logrotate \\
                  docker-logrotate \\
                  docker-engine
移除所有docker相关内容:
yum remove docker*

2.安装基本依赖环境:

yum install -y yum-utils

3.设置镜像仓库,进行下载:

#使用阿里云镜像
sudo yum-config-manager \\
--add-repo \\
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.安装Docker的依赖:

注意:docker-ce为社区版,docekr-ee为企业版

sudo yum install -y docker-ce docker-ce-cli containerd.io

#以下是在安装k8s的时候使用
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7  containerd.io-1.4.6

指定版本安装:

yum install docker-ce-版本号 docker-ce-cli-版本号 containerd.io

4.启动Docker:

设置Docker开机自启,并启动Docker:

systemctl enable docker --now

判断是否启动成功:

docker --version

出现版本号,即为安装成功!!!

5.配置镜像加速:

配置阿里云的镜像加速:(这里额外添加了docker的生产环境核心配置cgroup)

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://nn1z9lan.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

镜像地址可以自行上阿里云查看:

"registry-mirrors": ["https://nn1z9lan.mirror.aliyuncs.com"]


三、搭建集群环境:

        通过上面的操作已经完成了一台主机的基本配置,现在我们可以适应VMware的克隆虚拟机的功能,创建另外一台节点虚拟机!

1.克隆虚拟机:

注意:这里选择完整克隆!!!

2.配置克隆的虚拟机: 

        完成克隆后,启动新克隆出来的虚拟机。按照之前配置第一台虚拟机的步骤配置当前被克隆出来的虚拟机:

修改主机的IP配置文件:

#打开Linux中的网络配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"   #这里改为static静态,虚拟机的IP不会随接入网络改变
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="0659cf86-6478-4517-bd39-40a26a87c389"
DEVICE="ens33"
ONBOOT="yes"

IPADDR=192.168.10.110
GATEWAY=192.168.10.2
DNS1=192.168.10.2

修改主机名称:

hostnamectl set-hostname k8s-01

完成设置后,reboot重启即可!!!


四、搭建Kubernetes集群:

1.基础环境准备:

按照命令顺序依次往下执行所有操作:

# 将 SELinux 设置为 permissive 模式(相当于将其禁用)
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

#关闭swap
swapoff -a  
sed -ri 's/.*swap.*/#&/' /etc/fstab

#允许 iptables 检查桥接流量
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

#
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF

#
sudo sysctl --system

2.安装Kubelet、Kubeadm、Kubectl:

依次执行一下命令:

# 
cat <<EOF | sudo tee /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
   http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
exclude=kubelet kubeadm kubectl
EOF

#开始安装Kubernetes相关软件
sudo yum install -y kubelet-1.20.9 kubeadm-1.20.9 kubectl-1.20.9 --disableexcludes=kubernetes

#设置开机自启并启动Kubernetes
sudo systemctl enable --now kubelet

kubelet 现在每隔几秒就会重启,因为它陷入了一个等待 kubeadm 指令的死循环!!!

3.启动集群环境:

使用Kubeadm引导启动集群:

下载各个机器需要的镜像,每一台服务器上执行shell脚本:

sudo tee ./images.sh <<-'EOF'
#!/bin/bash
images=(
kube-apiserver:v1.20.9
kube-proxy:v1.20.9
kube-controller-manager:v1.20.9
kube-scheduler:v1.20.9
coredns:1.7.0
etcd:3.4.13-0
pause:3.2
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/$imageName
done
EOF
   
chmod +x ./images.sh && ./images.sh

初始化主节点:

#所有机器添加master域名映射,以下需要修改为自己的
echo "192.168.10.100  cluster-endpoint" >> /etc/hosts

#使用ping命令,测试:
ping cluster-endpoint

#主节点初始化(只在主节点服务器执行)
kubeadm init \\
--apiserver-advertise-address=192.168.10.100 \\
--control-plane-endpoint=cluster-endpoint \\
--image-repository registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images \\
--kubernetes-version v1.20.9 \\
--service-cidr=10.96.0.0/16 \\
--pod-network-cidr=192.168.0.0/16

#所有网络范围不重叠

初始化完成后:

Your Kubernetes control-plane has initialized successfully!

To start using your cluster, you need to run the following as a regular user:

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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
  https://kubernetes.io/docs/concepts/cluster-administration/addons/

You can now join any number of control-plane nodes by copying certificate authorities
and service account keys on each node and then running the following as root:

  kubeadm join cluster-endpoint:6443 --token xsne11.qlzsl49x2r945mep \\
    --discovery-token-ca-cert-hash sha256:807872b7568857f6406b59f6be52f4e2a87c0e5820e3d7eea12de1eddba39d7c \\
    --control-plane 

Then you can join any number of worker nodes by running the following on each as root:

kubeadm join cluster-endpoint:6443 --token xsne11.qlzsl49x2r945mep \\
    --discovery-token-ca-cert-hash sha256:807872b7568857f6406b59f6be52f4e2a87c0e5820e3d7eea12de1eddba39d7c 

4.安装网络插件:

按照提示要求,执行以下命令:

To start using your cluster, you need to run the following as a regular user:

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

Alternatively, if you are the root user, you can run:

  export KUBECONFIG=/etc/kubernetes/admin.conf

安装网络插件:

curl https://docs.projectcalico.org/manifests/calico.yaml -O

kubectl apply -f calico.yaml

#查看集群所有节点
kubectl get nodes

#根据配置文件,给集群创建资源
kubectl apply -f xxxx.yaml

#查看集群部署了哪些应用?
docker ps   ===   kubectl get pods -A
# 运行中的应用在docker里面叫容器,在k8s里面叫Pod
kubectl get pods -A

5.加入Node节点:

在子节点中执行:

kubeadm join cluster-endpoint:6443 --token xsne11.qlzsl49x2r945mep \\
    --discovery-token-ca-cert-hash sha256:807872b7568857f6406b59f6be52f4e2a87c0e5820e3d7eea12de1eddba39d7c 

新令牌:24小时令牌过期,使用这个命令获取新令牌,让子节点运行即可

kubeadm token create --print-join-command

6.部署dashboard可视化界面:

kubernetes官方提供的可视化界面

https://github.com/kubernetes/dashboard

以上是关于云原生⚡手把手教你搭建集群环境⚡Linux服务器集群+Docker+Kubernetes 完整集群搭建的主要内容,如果未能解决你的问题,请参考以下文章

Linux编程手把手教你搭建Linux编程环境

半小时体验云原生:手把手教你在k8s上部署springboot应用——干货分享,建议收藏

半小时体验云原生:手把手教你在k8s上部署springboot应用——干货分享,建议收藏

云原生 | 13手把手教你搭建ferry开源工单系统

阿里云ECS服务器搭建云上博客WordPress教程(手把手教你图文版)

教程手把手教你如何搭建Hadoop单机伪集群