k3s介紹 K3S是一個輕量級的K8S集群,它是Rancher Lab開發的一個新的產品, 目的是在資源有限的設備上面跑K8S。它的最大特點就是小,二進位包只有40MB,只需要512MB的記憶體就能跑起來。K3S目的是在一些資源受限的設備上面把Kubernetes跑起來,主要的應用場景包括Edge,I ...
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-test
k3d stop --name istio-test
k3d start --name istio-test
export KUBECONFIG=$(k3d get-kubeconfig --name istio-test)
alias k=kubectl
k get pod -n kube-system
結果
NAME READY STATUS RESTARTS AGE
local-path-provisioner-58fb86bdfd-w446w 1/1 Running 13 4d9h
metrics-server-6d684c7b5-zxnsc 1/1 Running 6 4d9h
coredns-d798c9dd-jkfz2 1/1 Running 5 4d9h
k3d version
k3d version v1.6.0
k3s version v1.17.2-k3s1
註意:
- 因為k3s內置了一些好用的工具比如HelmChart, ServiceLB, Traefik IngressController等,當時平常主要用的Nginx IngressController比較多,可以自己安裝一個Nginx IngressController,或者在搭建Istio/Kourier,所以次演示案例沒有安裝traefix
- 為啥沒有看到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/node
ansible-playbook site.yml -i inventory/hosts.ini -u ops_root -b -vv
註意:
- 對於機器登錄問題,建議編寫sshconfig文件,放在ansible.cfg裡面
[ssh_connection]
ssh_args=-o ControlMaster=auto -o ControlPersist=30m -F~/.ssh/ops.config
- 編寫inventory/hosts.ini文件,填寫你需要部署的機器和角色
- 編寫配置文件inventory/group_vars/all.yml,定義安裝版本,運行用戶,啟動參數等
---
k3s_version: v1.17.5+k3s1
ansible_user: ops_root
systemd_dir: /etc/systemd/system
master_ip: "{{ hostvars[groups['master'][0]]['ansible_host'] | default(groups['master'][0]) }}"
extra_server_args: --docker --disable traefik
extra_server_args: --docker
- 下載/etc/rancher/k3s/k3s.yaml到本地,修改裡面的apiserver地址為master角色的地址
export KUBECONFIG=$(pwd)/k3s.yaml
alias k=kubectl
k get pod -n kube-system
k3s-install.sh
安裝方法
這種安裝方式是官方提供的,直接演示吧
# master
cat /usr/local/bin/k3s-install.sh| INSTALL_K3S_VERSION=v1.17.4+k3s1 INSTALL_K3S_EXEC="server --docker --disable traefik" sh -s -
# show node-token
cat /var/lib/rancher/k3s/server/node-token
# ip
ip addr 或者 ifconfig
# node
K3S_TOKEN=來自master的node-token
K3S_URL="http://master-ip:6443"
cat /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.sh
docker rm -f $(docker ps -qa)
/usr/local/bin/k3s-uninstall.sh
docker rm -f $(docker ps -qa)
註意:
- 下載/etc/rancher/k3s/k3s.yaml到本地,修改裡面的apiserver地址為master角色的地址
export KUBECONFIG=$(pwd)/k3s.yaml
alias k=kubectl
k get pod -n kube-system
- 節點和master的卸載命令有差別