K3S部署

使用离线部署容器化k3s,docker,harbor。

K3S部署

1.在https://github.com/k3s-io/k3s.git下载离线部署包,包括对应架构的k3s和镜像包k3s-airgap-images-amd64.tar.gz。
img.png
2.获取k3s安装脚本,浏览器访问https://get.k3s.io/,返回内容保存为install.sh
img2.png
3.将k3s、k3s-airgap-images-amd64.tar.gz、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
36
37
38
# 允许转发,找到net.ipv4.ip_forward属性,值改为1(net.ipv4.ip_forward=1)
vi /etc/sysctl.conf
# 使配置生效
sysctl -p

# 如果想要部署主节点
chmod 777 install.sh
chmod 777 k3s
cp k3s /usr/local/bin/k3s
tar -xvf k3s-airgap-images-amd64.tar.gz -C /opt/images
export INSTALL_K3S_SKIP_DOWNLOAD=true
export K3S_IMAGES_DIR=/opt/images
./install

# 如果想要部署从节点
chmod 777 install.sh
chmod 777 k3s
tar -xvf k3s-airgap-images-amd64.tar.gz -C /opt/images
export INSTALL_K3S_SKIP_DOWNLOAD=true
export K3S_IMAGES_DIR=/opt/images
export K3S_URL=https://<主节点>:6443
# 指定主节点 cat /var/lib/rancher/k3s/server/node-token
export K3S_TOKEN=K10172da98fd953b3116d44fc9e7191b5e89bec43398261934e38e15170d8b54768::server:fcff60a5e309474887f82c0f6bb2c123
./install

# 在启动文件指定节点使用的IP,--node-ip=100.76.48.21
root@VM-4-2-ubuntu:/opt# cat /etc/systemd/system/k3s.service
[Unit]
# ...
[Install]
# ...
[Service]
# ...
ExecStart=/usr/local/bin/k3s \
server \
--node-ip=100.76.48.21 \
# 使节点IP配置修改生效
root@VM-4-2-ubuntu:/opt# systemctl daemon-reload

4.需要注意,部署前请确认k3s集群中各服务器的/etc/hostname不能相同,修改/etc/hostname时需要同步修改/etc/hosts
5.部署完成使用systemctl status k3s或systemctl status k3s-agent查看部署情况。

kubernetes-dashboard控制台部署,此步骤非离线

1.安装kubernetes-dashboard

1
2
3
4
5
6
7
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
# 修改NodePort,其他配置不变
kubectl -n kubernetes-dashboard edit svc kubernetes-dashboard
# 访问token获取
kubectl -n kubernetes-dashboard create token my-username
# 获取kubernetes-dashboard浏览器访问端口
kubectl -n kubernetes-dashboard get svc

2.创建kubernetes-dashboard访问用户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#创建访问用户,保存为kubernetes-dashboard-user.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: my-username
namespace: kubernetes-dashboard
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: my-username
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: my-username
namespace: kubernetes-dashboard
1
2
# 访问token获取
kubectl apply -f kubernetes-dashboard-user.yaml

2.获取token

1
2
# 访问token获取
kubectl -n kubernetes-dashboard create token my-username

3.浏览器访问,填入步骤三获取的token,进入kubernetes-dashboard