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-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的卸载命令有差别
k3s-安装的更多相关文章
- 如何安装一个高可用K3s集群?
作者介绍 Janakiram MSV是Janakiram & Associates的首席分析师,也是国际信息技术学院的兼职教师.他也是Google Qualified Developer.亚马 ...
- 一文搞定全场景K3s离线安装
作者简介 王海龙,Rancher中国社区技术经理,负责Rancher中国技术社区的维护和运营.拥有6年的云计算领域经验,经历了OpenStack到Kubernetes的技术变革,无论底层操作系统Lin ...
- 手把手教你玩转 Gitea|使用 Helm 在 K3s 上安装 Gitea
前言 在前面的文章中,演示了如何用 Docker 镜像和 Windows 二进制包来安装运行 Gitea.今天是玩转 Gitea 系列的使用 Helm 在 K3s 上安装 Gitea. 关于 Gite ...
- Just 5分钟!使用k3s部署轻量Kubernetes集群快速教程
大小仅有40MB的k3s为想要节省开销进行开发和测试的企业提供了一个很好的选择.本文将用一种极为简洁的方式,教你在5分钟之内使用k3s部署轻量Kubernetes集群. Kubernetes已经改变了 ...
- 基于centos7.6离线部署开k3s
K3S简介: https://k3s.io/ https://github.com/rancher/k3s https://github.com/rancher/k3s/releases / ...
- k3s首季在线培训来袭!本周四晚,线上见!
筹备已久的k3s在线培训终于要和大家见面啦! k3s是一款适用于边缘计算场景以及IoT场景的轻量级Kubernetes发行版,经过CNCF的一致性认证.由业界应用最广泛的Kubernetes管理平台R ...
- K8S ? K3S !
K8S ? K3S ! K3S 踩坑开始 歪比歪比(奇怪的服务器) 服务器选择我熟悉的 Centos K3S内置 Containerd 但是!作为一个服务器使用自然是要用常见的一点的容器 Docker ...
- 仅需60秒,使用k3s创建一个多节点K8S集群!
作者: Dawid Ziolkowski丨Container Solution云原生工程师 最近,我一直在Kubernetes上进行各种测试和部署.因此,我不得不一次又一次创建和销毁Kubernete ...
- 使用Kubernetes、K3s和Traefik2进行本地开发
作者简介 Vyacheslav,拥有运维和项目管理经验的软件工程师 这篇文章将承接我此前搭建的本地Docker开发环境,具体步骤已经放在在以下网址: https://github.com/Vorone ...
- Rancher On K3s 高可用架构部署
Rancher 推荐部署架构 k3s 模式 RKE 和 k8s 模式 备注: 我对 RKE 的理解就是 Ansible + kubeadm 的打包,首先 rke 需要到每一个节点都可以免密 ssh , ...
随机推荐
- Golang——Cron 定时任务
开门见山写一个 package main import ( "fmt" "github.com/robfig/cron" "log" &qu ...
- 移动端rem适配&iOS兼容
移动端rem适配js // 默认375,750设计稿请将375替换为750 (function (doc, win) { // 移动端适配 var docEl = doc.documentElemen ...
- iOS自定义tabBar
在我们的项目中经常会自己自定义tabBar因为苹果自带的真的太丑了!也不满足我们的项目需求. 好 开始行动吧! 先上图看下我们最终实现的效果: 继承UItabBar自定义一个自己的tabBar .h# ...
- Redis为什么是单线程的
一.前言 最近在学习Redis,这篇文章就来简单聊聊一道常考的面试题--Redis为什么是单线程的.废话不多说,直接开始吧. 二.正文 2.1 为什么需要多线程 首先,现在的CPU一般都是由多 ...
- unittest(简介)
一.unittest框架介绍: unittest框架是python中的一个单元测试框架,该模块包括许多的类如 TestCase 类.TestSuite 类.TextTestRunner 类.TestR ...
- 在linux上搭建nacos集群(步骤详细,linux小白也搞得定)
(1)nacos官网:https://github.com/alibaba/nacos/releases/tag/1.2.1下载nacos安装包到window本地(后缀为tar.zip) (2)在li ...
- JS对象与原型
一. JS的对象 1.1 创建对象的几种方式 1.1.1 通过字面量创建对象 在js中,一对{} 其实就是一个对象 var person = { name: "tom", age: ...
- INotifyPropertyChanged接口
INotifyPropertyChanged 接口用于通知客户端,通常执行绑定的客户端,属性值已更改. 例如,考虑 Person 具有一个名为属性对象 FirstName. 若要提供通用的属性更改通知 ...
- node常用插件使用
1.nodemon 用于热更新,随时监控文件的变化 安装npm i -g nodemon 使用nodemon index.js 2.nvm nvm用于nodejs版本管理,我们在开发过程中,不同的项目 ...
- Android中限制输入框最大输入长度
通常情况下只需要在布局文件中加入maxlength这一属性即可 <EditText android:inputType="text" android:singleLine=& ...