2020-05-23

k3s

k3s


k3s介绍

K3S是一个轻量级的K8S集群,它是Rancher Lab开发的一个新的产品, 目的是在资源有限的设备上面跑K8S。它的最大特点就是小,二进制包只有40MB,只需要512MB的内存就能跑起来。K3S目的是在一些资源受限的设备上面把Kubernetes跑起来,主要的应用场景包括Edge,IoT,CI和ARM等等,至于为什么叫K3S呢,官方就一句话: k3s - 5 less than k8s

官方访问地址:https://k3s.io/

安装方式

k3s的相关衍生安装工具很多在,比如k3d(类似kind), k3s-ansible, k3sup和官方k3s-install.sh等,每个工具都有其特殊用途

k3d

k3d 是一个dind模式安装k3s,创建快速,演示:

k3d create --image registry.cn-hangzhou.aliyuncs.com/k8ops/k3s:v1.17.3-k3s1 --publish 80:80 --server-arg --no-deploy --server-arg traefik --name istio-testk3d stop --name istio-testk3d start --name istio-testexport KUBECONFIG=$(k3d get-kubeconfig --name istio-test)alias k=kubectlk get pod -n kube-system

结果

NAME         READY STATUS RESTARTS AGElocal-path-provisioner-58fb86bdfd-w446w 1/1  Running 13  4d9hmetrics-server-6d684c7b5-zxnsc   1/1  Running 6   4d9hcoredns-d798c9dd-jkfz2     1/1  Running 5   4d9h

k3d version

k3d version v1.6.0k3s version v1.17.2-k3s1

注意:

  1. 因为k3s内置了一些好用的工具比如HelmChart, ServiceLB, Traefik IngressController等,当时平常主要用的Nginx IngressController比较多,可以自己安装一个Nginx IngressController,或者在搭建Istio/Kourier,所以次演示案例没有安装traefix
  2. 为啥没有看到k8s相关的核心服务呢?因为k3s把k8s的微服务架构变成了单体架构,嗯应该是这样。

k3s-ansible

ansible的安装方式一般是对运维人员比较友好,而且控制灵活,https://github.com/seanly/k3s-ansible.git这个库是基于官方提供的库的一个修改,由于ansibled的版本变化比较快,平常没有升级的需求,所以修改主要是去掉无用的模块和添加了对docker的支持,我使用的是ansible==2.5.5, 演示:

# 清理环境ansible-playbook reset.yml -i inventory/hosts.ini -u ops_root -b -vv# 安装master/nodeansible-playbook site.yml -i inventory/hosts.ini -u ops_root -b -vv

注意:

  1. 对于机器登录问题,建议编写sshconfig文件,放在ansible.cfg里面
 [ssh_connection] ssh_args=-o ControlMaster=auto -o ControlPersist=30m -F~/.ssh/ops.config
  1. 编写inventory/hosts.ini文件,填写你需要部署的机器和角色
  2. 编写配置文件inventory/group_vars/all.yml,定义安装版本,运行用户,启动参数等
---k3s_version: v1.17.5+k3s1ansible_user: ops_rootsystemd_dir: /etc/systemd/systemmaster_ip: "{{ hostvars[groups['master'][0]]['ansible_host'] | default(groups['master'][0]) }}"extra_server_args: --docker --disable traefikextra_server_args: --docker
  1. 下载/etc/rancher/k3s/k3s.yaml到本地,修改里面的apiserver地址为master角色的地址
export KUBECONFIG=$(pwd)/k3s.yamlalias k=kubectlk get pod -n kube-system

k3s-install.sh

安装方法

这种安装方式是官方提供的,直接演示吧

# mastercat /usr/local/bin/k3s-install.sh| INSTALL_K3S_VERSION=v1.17.4+k3s1 INSTALL_K3S_EXEC="server --docker --disable traefik" sh -s -# show node-tokencat /var/lib/rancher/k3s/server/node-token# ipip addr 或者 ifconfig
# nodeK3S_TOKEN=来自master的node-tokenK3S_URL=" /usr/local/bin/k3s-install.sh |INSTALL_K3S_VERSION=v1.17.4+k3s1 INSTALL_K3S_EXEC="--docker" K3S_URL="https://{{ server_ip }}:6443" sh -s -

卸载方法

/usr/local/bin/k3s-agent-uninstall.shdocker rm -f $(docker ps -qa)
/usr/local/bin/k3s-uninstall.shdocker rm -f $(docker ps -qa)

注意:

  1. 下载/etc/rancher/k3s/k3s.yaml到本地,修改里面的apiserver地址为master角色的地址
export KUBECONFIG=$(pwd)/k3s.yamlalias k=kubectlk get pod -n kube-system
  1. 节点和master的卸载命令有差别

No comments:

Post a Comment