k8s 搭建方式有多种,如果你是内网环境,希望占用服务器资源少或是边缘系统(如ARM系统),强烈推荐您使用 k3s进行安装
目录
k3s 简介
- 轻量级 Kubernetes。安装简单,内存只有一半,所有的二进制都不到 100MB
- K3s 是一个完全符合 Kubernetes 的发行版,有以下增强功能。
k3s架构
基本就是k8s的架构 k3s Server节点对应k8sMaster节点, Agent节点对应Worker节点
中文官方文档
https://docs.rancher.cn/docs/k3s/_index/
三台服务器快速搭建k8s集群
服务器环境:
- 3台 阿里云 ECS云主机
- ECS在同一个区域同一个内网下
- 操作系统 Linux Centos8
- 硬件配置 2核8G
- 采用docker作为k3s的容器
安装说明
- 本次集群没有对master节点做高可用,主要是快速体验k8s集群环境
- 本次采用docker作为k3s的容器
k3s默认使用container,两者命令对比表:
id | containerd 命令 | docker 命令 | 备注 |
1 | ctr image ls | docker images | 获取image信息 |
2 | ctr image pull nginx | docker pull nginx | pull 一个nginx的image |
3 | ctr image tag nginx nginx-test | docker tag nginx nginx-test | tag 一个nginx的image |
4 | ctr image push nginx-test | docker push nginx-test | push nginx-test的image |
5 | ctr image pull nginx | docker pull nginx | pull 一个nginx的image |
6 | ctr image import nginx.tar | docker load<nginx.tar.gz | 导入本地镜像ctr不支持压缩 |
7 | ctr run -d --env 111 nginx-test nginx | docker run -d --name=nginx nginx-test | 运行的一个容器 |
8 | ctr task ls | docker ps | 查看运行的容器 |
- docker、containerd的关系
从k8s的角度看,可以选择 containerd 或 docker 作为运行时组件:Containerd 调用链更短,组件更少,更稳定,占用节点资源更少
链接:javascript:void(0)
- 需要开发的端口
K3s Server节点的入站规则:
协议 | 端口 | 源 | 描述 |
TCP | 6443 | K3s agent 节点 | Kubernetes API Server |
UDP | 8472 | K3s server 和 agent 节点 | 仅对 Flannel VXLAN 需要 |
TCP | 10250 | K3s server 和 agent 节点 | Kubelet metrics |
通常情况下,所有出站流量都是允许的。
步骤1 修改主机名,保持唯一
内网地址 | 主机名称 |
172.20.167.19 | k8s-master |
172.20.167.20 | k8s-node1 |
172.20.167.21 | k8s-node2 |
在每一台ECS 下添加hosts信息:
cat >> /etc/hosts << EOF
172.20.167.19 k8s-master
172.20.167.20 k8s-node1
172.20.167.21 k8s-node2
EOF
步骤2 安装docker
如果需要内网离线安装,可采用二进制方式安装:
如果可联网,可以采用官网提供方式安装:
步骤3 安装master节点
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s - server --docker
cat /var/lib/rancher/k3s/server/node-token
步骤4 安装worker节点加入集群
在 master节点主机上查看 /var/lib/rancher/k3s/server/node-token的值即为 K3S_TOKEN 的值
https://k8s-master:6443 连接master主机
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://k8s-master:6443 K3S_TOKEN=xxxxxx INSTALL_K3S_EXEC="--docker" sh -
步骤5 查看集群
在master上通过命令 kubectl get node查看集群节点
[root@k8s-master ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8s-master Ready control-plane,master 14h v1.20.0+k3s2
k8s-node2 Ready <none> 13h v1.20.0+k3s2
k8s-node1 Ready <none> 13h v1.20.0+k3s2
[root@k8s-master ~]#
步骤6 部署 k8s仪表盘 dashboard
下面的文章可以部署成功,简单方便:
https://www.jianshu.com/p/026fd0165535
如果按照k3s官网的介绍的方式,则需要做如下工作:
raw.githubusercontent.com 无法访问,需在 hosts文件中添加ip映射:
199.232.96.133 raw.githubusercontent.com