关联文章列表
安装 Docker
# 安装依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 卸载旧版本的软件信息
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 添加 docker 官方镜像
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 更新缓存
yum makecache
# 安装 docker 【请先规划好你需要安装的 k8s 的版本,根据依赖关系安装对应的版本,比如我下面就指定了版本安装】
# 安装最新版本的命令
yum install -y docker-ce docker-ce-cli containerd.io
# 此处因为我的集群版本需要,我安装成指定版本吧
yum remove -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin
yum install -y docker-ce-19.03.15 docker-ce-cli-19.03.15 containerd.io
# 调整 docker 的配置更新存储的路径
sudo mkdir -p /data/docker
sudo touch /etc/docker/daemon.json
## 在 /etc/docker/daemon.json 中放置如下内容(不要把开始和结束的两行放进去了哦)
###### 内容开始 ########
{
"log-driver": "json-file",
"log-opts": {
"max-size": "50m",
"max-file": "3"
},
"data-root": "/data/docker",
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com",
"https://registry.docker-cn.com"
]
}
###### 内容结束 ########
#立即启动Docker,并设置为开机自动启动
systemctl enable docker --now
# --------------------------------------------------------
# 其他单独命令可以参考如下 ↓↓↓
# --------------------------------------------------------
# 启动 docker 服务
systemctl start docker
# reload 服务
systemctl daemon-reload
# 重启
docker 服务; 碰到一些配置调整后,最好都执行 restart
systemctl restart docker
# 设置 docker 开机启动
systemctl enable docker
# 查看 docker 服务状态
systemctl status docker
# 验证 docker 是否成功安装
docker run hello-world
安装 kubeadm 、kubectl 、kebelet
# 添加Kubernetes的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=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
# 安装kubeadm、kubelet和kubectl【请根据你需要的版本指定安装,此处命令是安装最新的,可以往后看指定版本的命令】
sudo yum install -y kubelet kubeadm kubectl
# 此处我安装指定的版本; 请根据您实际需要的版本进行安装
yum install -y kubelet-1.20.15 kubeadm-1.20.15 kubectl-1.20.15 --disableexcludes=kubernetes
# 处理 kubelete 的日志输出到特定的路径,不然默认会输出到 /var/log/messages
mkdir -p /etc/systemd/system/kubelet.service.d/
mkdir -p /data/logs/kubelet
mkdir -p /data/database/k8s/kubelet
rm -rf /var/lib/kubelet/
ln -snf /data/database/k8s/kubelet /var/lib/kubelet
# 修改"/etc/sysconfig/kubelet"文件的内容
# cgroup-driver 使用systemd驱动
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd --log-dir=/data/logs/kubelet"
systemctl daemon-reload
# 立即启动kubelet,并设置为开机自动启动
systemctl enable kubelet --now
# 如果你是重装 kubelet 的情况,建议你再使用 restart 进行重启
systemctl restart kubelet
# 使用下面命令查看运行状态 【特别注意:这个时候你会看到其实状态一直是 activating ,不断重启,没关系等后面步骤网络搭建好后就正常了】
systemctl status kubelet
安装 HAProxy
前置说明下,上一篇文章有提到准备的服务器情况,其实服务器是双网卡的,其中
192.168.3.x
是内网网段my_middleware-dev_10.12.3.40 => 192.168.3.35 my_middleware-dev_10.12.3.41 => 192.168.3.34 my_middleware-dev_10.12.3.42 => 192.168.3.33
sudo yum install -y epel-release
sudo yum install -y haproxy
# 编辑 HAProxy 配置文件 /etc/haproxy/haproxy.cfg
sudo vim /etc/haproxy/haproxy.cfg
# 在文件中添加以下内容来配置 Kubernetes API 服务器的负载均衡。请根据您的实际情况修改 IP 地址和端口
# 将 LOAD_BALANCER_PORT 替换为您希望用于负载均衡器的端口,通常为 6443。
###### 内容开始 #######
#---------------------------------------------------------------------
# k8s api server 的负载负载
#---------------------------------------------------------------------
defaults kubernetes-defaults
mode tcp
log global
timeout connect 5s
timeout client 30s
timeout server 30s
option tcp-check
frontend kubernetes-frontend
bind *:LOAD_BALANCER_PORT
mode tcp
option tcplog
default_backend kubernetes-backend
backend kubernetes-backend
balance roundrobin
server k8sdev003 192.168.3.33:6443 check inter 10s fall 3 rise 2
server k8sdev002 192.168.3.34:6443 check inter 10s fall 3 rise 2
server k8sdev001 192.168.3.35:6443 check inter 10s fall 3 rise 2
#server master1 10.12.3.40:6443 check inter 10s fall 3 rise 2
#server master2 10.12.3.41:6443 check inter 10s fall 3 rise 2
#server master3 10.12.3.42:6443 check inter 10s fall 3 rise 2
###### 内容结束 #######
# 启用并启动 HAProxy 服务
sudo systemctl enable haproxy
sudo systemctl start haproxy
# 检查 HAProxy 服务状态以确保它正在正常运行
sudo systemctl status haproxy
安装 keepalive 使用 VIP 管理 HAProxy
# 安装 Keepalived
sudo yum install keepalived
# 创建 Keepalived 配置文件。使用文本编辑器打开 /etc/keepalived/keepalived.conf 文件
sudo vim /etc/keepalived/keepalived.conf
# 在文件中添加以下内容来配置 Keepalived。请根据您的实际情况修改 IP 地址、接口名称、优先级等
# 将 ${YOUR_NETWORK_INTERFACE} 替换为您的网络接口名称(如 eth0)
# 将 ${YOUR_SECRET_PASSWORD} 替换为您自定义的密码,用于 Keepalived 节点之间的通信
# 将 ${YOUR_VIRTUAL_IP} 替换为您希望使用的虚拟 IP 地址
# 对于其他节点,您需要使用相同的配置,但将 state 设置为 BACKUP,并为 priority 指定一个较低的值(例如,100),以确保主节点具有更高的优先级。
# killall -0 haproxy 是一个命令,用于检查是否有名为 haproxy 的进程在运行
### 内容开始 ###
vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface ${YOUR_NETWORK_INTERFACE}
virtual_router_id 51
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass ${YOUR_SECRET_PASSWORD}
}
virtual_ipaddress {
${YOUR_VIRTUAL_IP}
}
track_script {
chk_haproxy
}
}
### 内容结束
# 启用并启动 Keepalived 服务
sudo systemctl enable keepalived
sudo systemctl start keepalived
# 检查 Keepalived 服务状态以确保它正在正常运行
sudo systemctl status keepalived
🔑 此处给出我其中一台机器的配置内容以供参考:我的虚IP是
192.168.3.242
,该 IP 会在后面搭建集群起到关键作用!
global_defs {
router_id LVS_DEVEL
}
vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 2
weight -20
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 58
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass ethenoscar
}
virtual_ipaddress {
192.168.3.242/24
}
track_script {
chk_haproxy
}
}
异常的应急重置手段
💊 搭建过程中如果碰到一些组件异常的问题,请注意可以通过如下应急手段来卸载对应的软件后重新来
# 卸载所有相关的软件先
sudo yum remove -y kubeadm-1.20.15-0 kubelet-1.20.15-0 kubectl-1.20.15-0 --disableexcludes=kubernetes docker-ce-19.03.15 docker-ce-cli-19.03.15 containerd.io
rm -rf rm /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
rm -rf /data/docker/*
rm -rf /etc/yum.repos.d/kubernetes.repo
rm -rf /etc/yum.repos.d/docker-ce.repo
yum makecache