Yuizhi Blog

The palest ink is better than the best memory(烂键盘)

0%

K3S 轻量级 Kubernetes

k3s 是一个轻量级 Kubernetes,二进制的安装包才不到40MB,运行内存只需要500MB,相比k8s确实小了很多,k3s是一款完全通过CNCF认证的Kubernetes发行版,编写YAML来对完整版的Kubernetes进行操作,并且它们也将适用于k3s集群,可以使用外部数据源,现在支持的是:PostgreSQL(v10.7,v11.5) Mysql(v5.7) etcd(v3.3.15)

upload successful

先准备5台linux 服务器

创建5台linux 虚拟机,vagrant或者vmware(不建议使用vagrant部署k3s) vagrant教程可以去看看这个https://mrbird.cc/Create-Virtual-Machine-By-Vagrant.html 。给5台服务器都安装上docker

名称 IP 配置
mysql nginx 192.168.xx.xx 2C4G
server1 192.168.xx.xx 1C2G
server2 192.168.xx.xx 1C2G
agent1 192.168.xx.xx 1C2G
agent2 192.168.xx.xx 1C2G

安装依赖包

1
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

设置阿里云镜像源

1
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装 Docker-CE

1
sudo yum install docker-ce

启动docker

1
2
3
4
# 开机自启
sudo systemctl enable docker
# 启动docker服务
sudo systemctl start docker

这里顺便记录个安装Docker Compose(不是必要的)

1
2
3
4
5
6
7
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

将可执行权限应用于二进制文件:
sudo chmod +x /usr/local/bin/docker-compose

创建软链:
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

upload successful

安装完docker 就来安装Mysql,在第一台服务上

1
docker run --name mysql5.7 --net host --restart=always -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7 --lower_case_table_names=1  #创建数据库

安装Nginx

打开地址 https://nginx.org/en/linux_packages.html
拉下去可以看到

upload successful

按照这个提示在11 服务器上安装nginx
执行vim /etc/yum.repos.d/nginx.repo 没有则创建一个然后把内容复制过去就行

1
touch nginx.repo

upload successful

生效这个配置

1
sudo yum-config-manager --enable nginx-mainline

执行yum 安装

1
sudo yum install nginx

到nginx 默认配置文件下添加一个server节点的负载均衡(自己有多少个节点就配置多少个节点,后面配置agent节点需要这个nginx的负载均衡)

1
2
3
4
5
6
7
8
9
10
11
stream {
upstream k3sList {
server 192.168.33.12:6443;
server 192.168.33.13:6443;
}

server {
listen 6443;
proxy_pass k3sList;
}
}

安装k3s

安装k3s的server,两个server节点都要安装

  1. 定义k3s的版本
    1
    export INSTALL_K3S_VERSION=v1.19.2-k3s1
  2. 指定k3s的mysql 数据库
    1
    export INSTALL_K3S_EXEC="--datastore-endpoint=mysql://root:root@tcp(192.168.33.11:3306)/k3s --docker --kube-apiserver-arg service-node-port-range=1-65000 --no-deploy traefik --write-kubeconfig  ~/.kube/config --write-kubeconfig-mode 666"
  3. 安装k3s server
    1
    curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
    这个脚本安装会提示你少了包,按照提示复制下来执行,完成后再执行上面安装(官方包问题,之后有可能会修复)
    在两个server节点安装完成,使用命令查询是否安装成功

upload successful

这个时候我们在192.168.33.11这台服务器上安装的mysql下的k3s数据库中应该有会一张表

upload successful

安装k3s的agent ,2个agent节点都要安装

  1. 获取 server节点的token(在server节点下运作这个就行)

    1
    cat /var/lib/rancher/k3s/server/node-token
  2. 指定k3s的版本(和server版本相同即可)

    1
    export INSTALL_K3S_VERSION=v1.19.2-k3s1
  3. 设置k3s的server token(这里是从server节点获取的token)

    1
    export K3S_TOKEN=K10183e4d3befd50ed5edc20f9b5e42b58901dc1a7198f16dbacff2f289071e8a29::server:60855d12d8cf5e0107815a499c1e2526
  4. 设置k3s的server URL(这里是11服务器是因为使用了nginx负载均衡了2个server)

    1
    export K3S_URL=https://192.168.33.11:6443
  5. 杂七杂八的设置

    1
    export INSTALL_K3S_EXEC="--docker --kube-apiserver-arg service-node-port-range=1-65000 --no-deploy traefik --write-kubeconfig ~/.kube/config --write-kubeconfig-mode 666"
  6. k3s agent

    1
    curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
  7. 安装k3s agent(这是官方安装示例)

    1
    curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://192.168.33.11:6443(注意替换成自己的地址,这里配置成11服务的地址是因为我们在11服务器上用nginx做的负载均衡) K3S_TOKEN=这里是从server节点获取的token sh -

RancherUI安装

1
docker run -d -v /data/docker/rancher-server/var/lib/rancher/:/var/lib/rancher/ --restart=unless-stopped --name rancher-server -p 9443:443 rancher/rancher:stable

上面完成后,打开 192.168.33.11:9443 就可以看见RancherUI
进去后点击 添加集群 ->导入 -> 创建完成选择跳过证书的命令(最后一个) -> 把你复制的在任何一个server节点运行 -> 部署项目(后面再说)
ByeBye🙃

参考链接
https://www.jianshu.com/p/2dae7b13ce2f
https://mp.weixin.qq.com/s/PcwasUz49zzHHaNwMOfaVQ
https://rancher.com/
https://docs.rancher.cn/docs/k3s/quick-start/_index