Kubernetes:离线部署集群

离线部署 Kubernetes 集群指南

第一步:安装 Docker

一、Docker 离线安装

1. 下载离线包

2. 安装 Docker

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 复制docker-20.10.9.tgz到/usr/bin下
# 解压
tar xvf docker-20.10.9.tgz
ls -l docker
cp docker/* /usr/bin
rm -rf docker docker-20.10.9.tgz

# 配置docker服务
cat > /etc/systemd/system/docker.service <<EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP \$MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target
EOF

# 赋执行权限
chmod +x /etc/systemd/system/docker.service
systemctl daemon-reload

3. Docker 命令

1
2
3
4
5
6
7
8
9
10
11
# 开机启动
systemctl enable docker.service

# 启动docker
systemctl start docker

# 查看docker状态
systemctl status docker

# 重启docker服务
systemctl restart docker

二、Docker-compose 离线安装

1. 下载离线包

2. 安装 Docker-compose

1
2
3
4
5
# 改名为docker-compose并复制到/usr/local/bin/下
cp -f ./docker-compose-linux-x86_64 /usr/local/bin/docker-compose

# 赋执行权限
chmod +x /usr/local/bin/docker-compose

四、Docker 与 Docker-compose 整理

一键安装脚本 (install.sh)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/bin/sh
echo 'docker开始安装...'
echo '解压tar包...'
tar -xvf ./docker-20.10.9.tgz
echo '将docker目录移到/usr/bin目录下...'
cp -f ./docker/* /usr/bin
rm -rf docker
echo '将docker.service 移到/etc/systemd/system/ 目录...'
cp -f ./docker.service /etc/systemd/system
echo '添加文件权限...'
chmod +x /etc/systemd/system/docker.service

echo '重新加载配置文件...'
systemctl daemon-reload
echo '启动docker...'
systemctl start docker
echo '设置开机自启...'
systemctl enable docker.service

if ! docker -v; then
echo "docker 安装失败..."
exit -1
fi
echo 'docker安装成功...'

echo '安装docker-compose...'
cp -f ./docker-compose-linux-x86_64 /usr/local/bin/docker-compose
echo '添加文件执行权限...'
chmod +x /usr/local/bin/docker-compose

if ! docker-compose -v; then
echo "docker-compose 安装失败..."
exit -1
fi
echo 'docker-compose 安装成功...'

一键卸载脚本 (uninstall.sh)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/sh
echo "停止所有容器服务"
docker stop $(docker ps -a -q)
echo "删除所有容器"
docker rm $(docker ps -a -q)
echo "删除docker所有镜像"
docker rmi -f $(docker images -q)
echo "停止docker服务"
systemctl stop docker
echo "删除docker.service..."
rm -rf /etc/systemd/system/docker.service
echo "删除docker文件..."
rm -rf /usr/bin/docker*
echo "重新加载配置文件"
systemctl daemon-reload
echo "卸载成功..."

echo "删除docker-compose"
rm -rf /usr/local/bin/docker-compose
echo "卸载成功"

第二步:安装 Kubernetes

一、安装环境说明

主机 IP地址 角色
master 192.168.192.140 Master
node1 192.168.192.141 Node
node2 192.168.192.142 Node

二、下载安装包

三、上传安装包到所有节点

1
scp k8sOfflineSetup.tar.gz root@192.168.1.30:/root

四、解压安装包

1
2
mkdir /root/k8sOfflineSetup
tar -xzvf k8sOfflineSetup.tar.gz -C /root/k8sOfflineSetup

五、Master节点设置参数

1
2
3
4
5
6
7
8
9
10
11
# master节点的主机名
export HOSTNAME=master

# k8s apiserver的主机地址
export APISERVER_NAME=apiserver.k8s.com

# 集群中master节点的ip地址
export MASTER_IP=192.168.192.140

# Pod使用的网段
export POD_SUBNET=10.11.10.0/16

六、授权脚本执行权限

1
chmod +x /root/k8sOfflineSetup/scripts/*

七、执行Master节点安装

1
2
3
4
cd /root/k8sOfflineSetup
./setup_master.sh
# 或者
sh setup_master.sh

八、验证安装

1
kubectl get nodes

九、创建加入集群的token

1
kubeadm token create --print-join-command

记录输出结果(token和cert),这两个参数在2小时内有效。

十、Node节点安装(以node1为例)

1. 设置Node节点参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# node1节点的主机名
export HOSTNAME=node1

# k8s apiserver的主机地址
export APISERVER_NAME=apiserver.k8s.com

# 集群中master节点的ip地址
export MASTER_IP=192.168.192.140

# 加入master的token
export TOKEN=uejhnn.d24zdxunim9dnm4c

# 加入master的证书
export CERT=sha256:a8352417fba987353f1764c069f5d8ba647064b315d63bfca8a0ce05a625f246

2. 授权脚本执行权限

1
chmod +x /root/k8sOfflineSetup/scripts/*

3. 执行Node节点安装

1
2
cd /root/k8sOfflineSetup
sh setup_worker.sh

十五、验证集群状态

在Master节点上执行:

1
kubectl get nodes

访问Kubernetes Dashboard

  1. 在浏览器输入:http://任意节点IP:32567/
  2. 获取token:
1
kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d

该文中的 Image-5 为 Joplin 内部图片资源(:/57335a86292b44238572214abbe772bb),当前仓库未同步该资源,暂不展示。