对于初学者而言,配置完整的Kubernetes集群是一个比较繁琐和复杂的过程,需要耗费大量的时间成本。
今天我们来教大家轻松几步,通过新推出的K3s应用镜像,完成以往相对复杂的工作。
1.背景概述
作为目前最主流的容器编排平台,Kubernetes已作为基础设施,承接并管理着众多的应用服务,相对于传统基于VM镜像部署应用,其具有更丰富、完善的服务编排及托管能力。不过,对于仅有少量应用需要部署或者仅需要开发、测试环境的用户而言,搭建、配置完整的Kubernetes集群是一个比较繁琐和复杂的过程,初学者很容易耗费大量的时间、资源,且收益有限。最近Lighthouse推出了K3s应用镜像,为用户提供了开箱即用的Kubernetes环境。作为轻量的Kubernetes发行版,K3s通过了CNCF一致性认证,并针对多个场景进行了高度优化,此外Lighthouse还在应用镜像中集成了Kubernetes-dashboard,方便用户通过浏览器进行集群、应用的管理。本文为大家介绍一下,如何使用LighthouseK3s部署、管理您的应用。
2.K3s简介
K3s是由RancherLabs发布的一款开源、极轻量的Kubernetes发行版。在Kubernetes基础上,删除了一些feature:
Legacyandnon-defaultfeatures
Alphafeatures
In-treecloudproviders
In-treeStorage
Docker()
在功能层面删除了非必要的服务/功能,其中包括kubernetes部分未稳定以及非正式的开发版本功能,进行如此剪裁,不仅可以降低出故障的机率,也可以降低整体kubernetes管控面的资源消耗。以上共5个feature,所以也因此得名K3s。此外,针对资源有限的应用场景,K3s增加了:
Simplifiedinstallation
SQLite3supportinadditiontoetcd
TLSmanagement
AutomaticManifestandHelmChartmanagement
containerd、CoreDNS、Flannel
K3s中包含了我们所熟悉的kubernetes的各个组件,为了能做到"Simplifiedinstallation”,K3S将所有组件都集成在一个二进制包中(MB),此外默认安装Flannel作为CNIplugin,替换docker使用更为轻量级、底层的containerd,以及使用SQLite3替换etcd作为元数据的存储等。
通过上述裁剪以及优化,K3s不仅免去了kubernetes安装环节的复杂、繁琐步骤,为用户提供了开箱即用的部署体验,还可以在资源有限环境下,仍能为用户提供良好运行的kubernetes集群,保持了与kubernetes一致的使用体验。
3.环境准备
3.1准备Lighthouse轻量应用服务器
我们首先在腾讯云Lighthouse轻量应用服务器购买页面,购买一台服务器。如下图所示。
服务器的具体配置如下:
地域:中国香港
镜像:应用镜像K3s
实例套餐:CPU1核内存2GSSD50GB峰值带宽6Mbps每月流量GB
实例名称:输入K3s即可。
点击“立即购买”,付款之后服务器就开始创建了。当服务器状态为“运行中”时,我们就可以使用了。
3.2防火墙配置
默认Kubernetes-dashboard监听在端口,因此,我们需要在防火墙开通端口的访问。在"应用管理"页,Lighthouse也为用户提供了操作指引:
点击"确定“,至此,用户便可访问图中所示访问地址访问Kubernetes-dashboard了。
3.3输入dashboardtoken
Kubernetes-dashboard的登录需要用户提供token,而token需要登录到服务器内部才能获取。点击下图中所示“登录”按钮,一键登录至服务器,点击复制"dashboard-token",在服务器中运行,输出即为所需的登录token,复制并粘贴至上图"Entertoken"输入框里。
点击SignIn按钮,登录成功!
至此用户便可以使用Kubernetes-dashboard部署及管理应用了。
4.部署应用
下面将展示如何在K3s上部署wordpress,访问Kubernetes-dashboard,点击右上角"+"
点击下图所示"+"
将下面的yaml复制至编辑框
apiVersion:v1kind:Servicemetadata:
name:wordpress
labels:
app:wordpressspec:
ports:
-port:80
selector:
app:wordpress
tier:frontend---apiVersion:v1kind:PersistentVolumeClaimmetadata:
name:wp-pv-claim
labels:
app:wordpress
annotations:
volume.beta.kubernetes.io/storage-provisioner:rancher.io/local-pathspec:
accessModes:
-ReadWriteOnce
resources:
requests:
storage:20Gi---apiVersion:apps/v1kind:Deploymentmetadata:
name:wordpress
labels:
app:wordpressspec:
selector:
matchLabels:
app:wordpress
tier:frontend
strategy:
type:Recreate
template:
metadata:
labels:
app:wordpress
tier:frontend
spec:
containers:
-image:wordpress:4.8-apache
name:wordpress
env:
-name:WORDPRESS_DB_HOST
value:wordpress-mysql
-name:WORDPRESS_DB_PASSWORD
valueFrom:
secretKeyRef:
name:mysql-pass
key:password
ports:
-containerPort:80
name:wordpress
volumeMounts:
-name:wordpress-persistent-storage
mountPath:/var/