kubernetes-19-通过k0s快速搭建kubernetes集群

k0s 使用教程:如何快速搭建 Kubernetes 集群
k0s官方文档
容器镜像服务 ACR
在这里插入图片描述

1 k0s简介

k0s是一个开源、包罗万象的Kubernetes发行版,配置了构建Kubernetes集群所需的所有功能。由于其简单的设计、灵活的部署选项和适度的系统需求,k0s非常适合Any cloud、Bare metal、Edge and IoT。

k0s大大降低了安装和运行CNCF认证的Kubernetes发行版的复杂性。有了k0s,新集群可以在几分钟内启动,开发者之间的摩擦减少到零。这使得任何在Kubernetes没有特殊技能或专业知识的人都可以轻松开始。

k0s作为一个二进制文件分发,除了主机操作系统内核之外,没有主机操作系统依赖项。它可以与任何Linux一起工作,无需额外的软件包或配置。任何安全漏洞或性能问题都可以直接在k0s发行版中修复,这使得集群保持最新和安全非常简单。

(1)支持四种安装方式
single-node, multi-node, airgap and Docker
(2)支持多种数据存储后端
etcd (default for multi-node clusters),
SQLite (default for single node clusters), 
MySQL, and PostgreSQL
(3)适度的系统要求
1个vCPU及1GB RAM

1.1 k0s关键特点

(1)Certified and 100% upstream Kubernetes.
认证和100%上游Kubernetes。

(2)Multiple installation methods: single-node, multi-node, airgap and Docker.
多种安装方式:单节点、多节点、airgap、Docker。

(3)Automatic lifecycle management with k0sctl: upgrade, backup and restore.
使用k0sctl进行自动生命周期管理:升级、备份和恢复。

(4)Modest system requirements (1 vCPU, 1 GB RAM).
适度的系统要求(1个vCPU、1 GB RAM)。

(5)Available as a single binary with no external runtime dependencies besides the kernel.
作为单个二进制文件提供,除了内核之外,没有外部运行时依赖项。

(6)Flexible deployment options with control plane isolation as default.
灵活的部署选项,默认为控制平面隔离。

(7)Scalable from a single node to large, high-available clusters.
可从单个节点扩展到大型、高可用群集。

(8)Supports custom Container Network Interface (CNI) plugins (Kube-Router is the default, Calico is offered as a preconfigured alternative).
支持自定义容器网络接口(CNI)插件(默认为Kube路由器,Calico作为预配置的替代品提供)。

(9)Supports custom Container Runtime Interface (CRI) plugins(containerd is the default).
支持自定义容器运行时接口(CRI)插件(默认为containerd)。

(10)Supports all Kubernetes storage options with Container Storage Interface (CSI), includes OpenEBS host-local storage provider.
通过容器存储接口(CSI)支持所有Kubernetes存储选项,包括OpenEBS主机本地存储提供程序。

(11)Supports a variety of datastore backends: etcd(default for multi-node clusters), SQLite (default for single node clusters), MySQL, and PostgreSQL.
支持多种数据存储后端:etcd(多节点集群默认)、SQLite(单节点集群默认)、MySQL和PostgreSQL。

(12)Supports x86-64, ARM64 and ARMv7.
支持x86-64、ARM64和ARMv7。

(13)Includes Konnectivity service, CoreDNS and Metrics Server.
包括Konnectivity服务、CoreDNS和Metrics服务器。

1.2 k0s使用的CRE(containerd)

2 单节点安装

使用单个节点创建完整的Kubernetes集群。
快速启动完成后,您将拥有一个完整的Kubernetes集群,其中有一个节点,包括控制器和工作节点。这种设置非常适合于不需要高可用性和多个节点的环境。

CentOS操作系统
(1)主机名
192.168.1.8 myspark
127.0.0.1 localhost注意不可少
(2)防火墙和SELinux
主机的防火墙和SELinux均已关闭
firewall-cmd --state
systemctl disable firewalld
systemctl stop firewalld
(3)系统架构和内核版本
Host operating system:
	Linux (kernel v4.3 or later)
	Windows Server 2019
Architecture:
	x86-64、ARM64、ARMv7

2.1 在线安装

下载并安装
curl -sSLf https://get.k0s.sh | sudo sh

get.k0s.sh获取到的可执行代码安装。

#!/bin/sh 
set -e 

if [ -n "${DEBUG}" ]; then 
set -x 
fi 

_k0s_latest() { 
	curl -sSLf "https://docs.k0sproject.io/stable.txt" 
} 

_detect_binary() { 
	os="$(uname)" 
	case "$os" in 
	Linux) 
		echo "k0s" 
		;; 
	*)
		echo "Unsupported operating system: $os" 1>&2; 
		return 1 
		;; 
	esac 
	unset os 
} 

_detect_arch() { 
	arch="$(uname -m)" 
	case "$arch" in 
	amd64|x86_64) 
		echo "amd64" 
		;; 
	arm64|aarch64) 
		echo "arm64" 
		;; 
	armv7l|armv8l|arm) 
		echo "arm" 
		;; 
	*) 
		echo "Unsupported processor architecture: $arch" 1>&2; 
		return 1 
		;; 
	esac 
	unset arch 
} 

_download_url() { 
	echo "https://github.com/k0sproject/k0s/releases/download/$K0S_VERSION/$k0sBinary-$K0S_VERSION-$k0sArch" 
} 
main() { 
	if [ -z "${K0S_VERSION}" ]; then 
		K0S_VERSION=$(_k0s_latest) 
	fi 
	k0sInstallPath=/usr/local/bin 
	k0sBinary="$(_detect_binary)" 
	k0sArch="$(_detect_arch)" 
	k0sDownloadUrl="$(_download_url)" 
	mkdir -p -- "$k0sInstallPath" 
	echo "Downloading k0s from URL: $k0sDownloadUrl" 
	curl -sSLf "$k0sDownloadUrl" >"$k0sInstallPath/$k0sBinary" 
	chmod 755 -- "$k0sInstallPath/$k0sBinary" 
	echo "k0s is now executable in $k0sInstallPath" 
} 
main

2.2 离线安装

2.2.1 安装启动k0s服务

结合在线安装,下载二进制代码。
一、下载k0s
运行k0s下载脚本下载最新稳定版本的k0s,并使其可从/usr/bin/k0s执行。

(1)下载二进制文件安装
wget https://github.com/k0sproject/k0s/releases/download/v1.23.6+k0s.0/k0s-v1.23.6+k0s.0-amd64
chmod a+x k0s-v1.23.6+k0s.0-amd64
mv k0s-v1.23.6+k0s.0-amd64 /usr/bin/k0s
(2)查看版本
k0s version

二、将k0s作为服务安装
k0s install子命令将k0s作为系统服务安装在运行一个受支持的init系统(Systemd或OpenRC)的本地主机上。您可以为worker、controller或单节点(controller+worker)实例执行安装。

运行以下命令以安装单节点k0s,该节点包括具有默认配置的控制器和辅助功能:

k0s install controller --single
运行完可以查看服务状态为dead。
systemctl status k0scontroller

在这里插入图片描述

三、将k0s作为服务启动

k0s start
运行完可以查看服务状态为running。
systemctl status k0scontroller

节点重启后,k0s服务将自动启动。
在节点准备好部署应用程序之前,通常需要一两分钟。
四、检查服务、日志和k0s状态

k0s status
运行完输出如下结果
Version: v1.23.6+k0s.0
Process ID: 2065
Role: controller
Workloads: true
SingleNode: true

2.2.2 解决科学上网问题

一、使用kubectl访问集群
注意:k0s包括Kubernetes命令行工具kubectl。
使用kubectl部署应用程序或检查节点状态:

k0s kubectl get nodes
k0s kubectl get pods -n kube-system

在这里插入图片描述
状态为Pending查出的原因是default-scheduler 0/1 nodes are available: 1 node(s) had taint {node.kubernetes.io/not-ready: }, that the pod didn’t tolerate.不必理会,等镜像加载好后自动恢复正常。

k0s kubectl describe pod kube-proxy-92gzz -n kube-system
k0s kubectl describe pod kube-router-skc99 -n kube-system
【查出缺少镜像】
k8s.gcr.io/pause:3.5
k8s.gcr.io/kube-proxy:v1.23.6
k8s.gcr.io/coredns/coredns:v1.7.0
k8s.gcr.io/metrics-server/metrics-server:v0.5.2

二、拉取镜像

(1)拉取镜像
sudo docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.5
sudo docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.23.6
sudo docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.7.0
sudo docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.5.2
(2)修改标签
sudo docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.5 k8s.gcr.io/pause:3.5
sudo docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.23.6 k8s.gcr.io/kube-proxy:v1.23.6
sudo docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.7.0 k8s.gcr.io/coredns/coredns:v1.7.0
sudo docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.5.2 k8s.gcr.io/metrics-server/metrics-server:v0.5.2
(3)删除原镜像
sudo docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.5
sudo docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.23.6
sudo docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.7.0
sudo docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.5.2

在这里插入图片描述

当本地Docker镜像仓库中有了k8s.gcr.io/pause:3.5这个镜像之后,Pod却仍然无法获取镜像,这是怎么回事?原来k0s使用的CRE是containerd,我们需要再将Docker镜像仓库里的镜像放到k0s使用的镜像仓库里去:

sudo docker save k8s.gcr.io/pause:3.5 > pause.tar
sudo docker save k8s.gcr.io/kube-proxy:v1.23.6 > kube-proxy.tar
sudo docker save k8s.gcr.io/coredns/coredns:v1.7.0 > coredns.tar
sudo docker save k8s.gcr.io/metrics-server/metrics-server:v0.5.2 > metrics-server.tar

k0s ctr image import pause.tar
k0s ctr image import kube-proxy.tar
k0s ctr image import coredns.tar
k0s ctr image import metrics-server.tar
k0s ctr image list查看镜像

2.3 卸载k0s

(1)停止服务

k0s stop

(2)执行k0s重置命令
k0s reset命令清除已安装的系统服务、数据目录、容器、装载和网络名称空间。

k0s reset

(3)重新启动系统
一些小的k0s片段即使在重置之后仍然存在(例如,iptables)。因此,您应该在运行k0s reset命令后重新启动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮皮冰燃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值