目录
一、创建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可视化界面:
这里最少创建两台虚拟机,如果电脑资源充足可以创建三台+虚拟机,其中一台作为Matser主机,另外两台+作为节点主机!
如果不会创建虚拟机可以参考一下我的这篇文章:(记录了详细步骤,有任何问题可以后台私信我)【Linux】VMware安装虚拟机_故里的博客-CSDN博客
CentOS镜像文件(百度云盘):
链接:https://pan.baidu.com/s/1O7-iu4c500PpdQFr8rlmyQ
提取码:4gqf
注意:
虚拟机的配置,这里要求Master节点的虚拟机运行内存略大一些,否者可能会导致后面启动集群时,出现宕机情况(实操翻车......)
这里我推荐使用4G+的运行内存,50G磁盘空间,其余配置默认即可!
安装虚拟机时打开网络桥接,需要虚拟机能通过实体机连接外网!
选择带有GUI图形界面安装(可以选择最小安装或者不带图形界面,不影响使用,可能部分命令需要手动进行安装后才能使用!)
目前只需要安装一台虚拟机即可!!!
我这里使用了Xshell远程连接工具,你们可以根据自己的习惯选择自己喜欢的工具,或者直接在虚拟机上进行操作即可!
打开虚拟网络编辑器:
更改配置:
在虚拟机中执行:
#打开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概述&安装(Linux)_故里的博客-CSDN博客
我们是新创建的虚拟机,默认不会自带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*
yum install -y yum-utils
#使用阿里云镜像
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
设置Docker开机自启,并启动Docker:
systemctl enable docker --now
docker --version
出现版本号,即为安装成功!!!
配置阿里云的镜像加速:(这里额外添加了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的克隆虚拟机的功能,创建另外一台节点虚拟机!
注意:这里选择完整克隆!!!
完成克隆后,启动新克隆出来的虚拟机。按照之前配置第一台虚拟机的步骤配置当前被克隆出来的虚拟机:
#打开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重启即可!!!
按照命令顺序依次往下执行所有操作:
# 将 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 <
依次执行一下命令:
#
cat <
kubelet 现在每隔几秒就会重启,因为它陷入了一个等待 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
按照提示要求,执行以下命令:
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
在子节点中执行:
kubeadm join cluster-endpoint:6443 --token xsne11.qlzsl49x2r945mep \
--discovery-token-ca-cert-hash sha256:807872b7568857f6406b59f6be52f4e2a87c0e5820e3d7eea12de1eddba39d7c
新令牌:24小时令牌过期,使用这个命令获取新令牌,让子节点运行即可
kubeadm token create --print-join-command
kubernetes官方提供的可视化界面
https://github.com/kubernetes/dashboard