2022
我们一起努力

腾讯云部署服务器,云容器服务kubernetes版的功能

对于初学者而言,配置完整的 Kubernetes 集群是一个比较繁琐和复杂的过程,需要耗费大量的时间成本。

今天我们来教大家轻松几步,通过新推出的K3s应用镜像,完成以往相对复杂的工作。

1. 背景概述

作为目前最主流的容器编排平台,Kubernetes 已作为基础设施,承接并管理着众多的应用服务,相对于传统基于 VM 镜像部署应用,其具有更丰富、完善的服务编排及托管能力。不过,对于仅有少量应用需要部署或者仅需要开发、测试环境的用户而言,搭建、配置完整的 Kubernetes 集群是一个比较繁琐和复杂的过程,初学者很容易耗费大量的时间、资源,且收益有限。最近 Lighthouse 推出了 K3s 应用镜像,为用户提供了开箱即用的 Kubernetes 环境。作为轻量的 Kubernetes 发行版,K3s 通过了 CNCF 一致性认证,并针对多个场景进行了高度优化,此外 Lighthouse 还在应用镜像中集成了 Kubernetes-dashboard,方便用户通过浏览器进行集群、应用的管理。本文为大家介绍一下,如何使用 Lighthouse K3s 部署、管理您的应用。

2. K3s 简介

K3s 是由 Rancher Labs 发布的一款开源、极轻量的 Kubernetes 发行版。在 Kubernetes 基础上,删除了一些 feature:

  • Legacy and non-default features
  • Alpha features
  • In-tree cloud providers
  • In-tree Storage
  • Docker ()

在功能层面删除了非必要的服务/功能,其中包括 kubernetes 部分未稳定以及非正式的开发版本功能,进行如此剪裁,不仅可以降低出故障的机率,也可以降低整体 kubernetes 管控面的资源消耗。以上共 5 个 feature,所以也因此得名 K3s。此外,针对资源有限的应用场景,K3s 增加了:

  • Simplified installation
  • SQLite3 support in addition to etcd
  • TLS management
  • Automatic Manifest and Helm Chart management
  • containerd、CoreDNS、Flannel

K3s 中包含了我们所熟悉的 kubernetes 的各个组件,为了能做到 "Simplified installation”, K3S 将所有组件都集成在一个二进制包中(<100MB),此外默认安装 Flannel 作为 CNI plugin,替换 docker 使用更为轻量级、底层的 containerd,以及使用 SQLite3 替换 etcd 作为元数据的存储等。

通过上述裁剪以及优化,K3s 不仅免去了 kubernetes 安装环节的复杂、繁琐步骤,为用户提供了开箱即用的部署体验,还可以在资源有限环境下,仍能为用户提供良好运行的 kubernetes 集群,保持了与 kubernetes 一致的使用体验。

3. 环境准备

3.1 准备 Lighthouse 轻量应用服务器

我们首先在腾讯云Lighthouse轻量应用服务器购买页面,购买一台服务器。如下图所示。

服务器的具体配置如下:

  • 地域:中国香港
  • 镜像:应用镜像 K3s
  • 实例套餐:CPU 1核 内存2G SSD 50GB 峰值带宽 6Mbps 每月流量 500GB
  • 实例名称:输入 K3s 即可。

点击“立即购买”,付款之后服务器就开始创建了。当服务器状态为“运行中”时,我们就可以使用了。

3.2 防火墙配置

默认 Kubernetes-dashboard 监听在 9090 端口,因此,我们需要在防火墙开通 9090 端口的访问。在"应用管理"页,Lighthouse 也为用户提供了操作指引:

点击"确定“,至此,用户便可访问图中所示访问地址访问 Kubernetes-dashboard 了。

3.3 输入 dashboard token

Kubernetes-dashboard 的登录需要用户提供 token,而 token 需要登录到服务器内部才能获取。点击下图中所示“登录”按钮,一键登录至服务器,点击复制 " dashboard-token",在服务器中运行,输出即为所需的登录 token,复制并粘贴至上图 "Enter token" 输入框里。

点击 Sign In 按钮,登录成功!

至此用户便可以使用 Kubernetes-dashboard 部署及管理应用了。

4. 部署应用

下面将展示如何在 K3s 上部署 wordpress,访问 Kubernetes-dashboard,点击右上角 "+"

  1. 点击下图所示 "+"

将下面的 yaml 复制至编辑框

apiVersion: v1kind: Servicemetadata:

name: wordpress

labels:

app: wordpressspec:

ports:

port: 80

selector:

app: wordpress

tier: frontendapiVersion: v1kind: PersistentVolumeClaimmetadata:

name: wppvclaim

labels:

app: wordpress

annotations:

volume.beta.kubernetes.io/storageprovisioner: rancher.io/localpathspec:

accessModes:

ReadWriteOnce

resources:

requests:

storage: 20GiapiVersion: 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.8apache

name: wordpress

env:

name: WORDPRESS_DB_HOST

value: wordpressmysql

name: WORDPRESS_DB_PASSWORD

valueFrom:

secretKeyRef:

name: mysqlpass

key: password

ports:

containerPort: 80

name: wordpress

volumeMounts:

name: wordpresspersistentstorage

mountPath: /var/www/html

volumes:

name: wordpresspersistentstorage

persistentVolumeClaim:

claimName: wppvclaim

apiVersion: v1kind: Servicemetadata:

name: wordpressmysql

labels:

app: wordpressspec:

ports:

port: 3306

selector:

app: wordpress

tier: mysql

clusterIP: NoneapiVersion: v1kind: PersistentVolumeClaimmetadata:

name: mysqlpvclaim

labels:

app: wordpressspec:

accessModes:

ReadWriteOnce

resources:

requests:

storage: 20GiapiVersion: apps/v1kind: Deploymentmetadata:

name: wordpressmysql

labels:

app: wordpressspec:

selector:

matchLabels:

app: wordpress

tier: mysql

strategy:

type: Recreate

template:

metadata:

labels:

app: wordpress

tier: mysql

spec:

containers:

image: mysql:5.6

name: mysql

env:

name: MYSQL_ROOT_PASSWORD

valueFrom:

secretKeyRef:

name: mysqlpass

key: password

livenessProbe:

tcpSocket:

port: 3306

ports:

containerPort: 3306

name: mysql

volumeMounts:

name: mysqlpersistentstorage

mountPath: /var/lib/mysql

volumes:

name: mysqlpersistentstorage

persistentVolumeClaim:

claimName: mysqlpvclaim

apiVersion: v1kind: Secretmetadata:

name: mysqlpassdata:

password: MWYyZDFlMmU2N2Rm

apiVersion: networking.k8s.io/v1beta1kind: Ingressmetadata:

name: ingress

annotations:

kubernetes.io/ingress.class: "traefik"spec:

rules:

http:

paths:

path: /

backend:

serviceName: wordpress

servicePort: 80

复制

在这个示例中:

  • 我们创建了 mysql、wordpress 两个 Deployment,还创建了对应的 Service,mysql 所需要的 password 通过 secret 提供,在部署前,用户可以修改 Secret 填入自定义的 password。
  • 得益于 K3s 默认提供的 local-path-provisioner,用户可以创建 PVC(默认 storageclass 已被指定为 local-path),local-path-provisioner 会动态创建对应的 PV。需要注意的是在 PVC 的 annotations 中需要加入 volume.beta.kubernetes.io/storage-provisioner: rancher.io/local-path。
  • K3s 应用镜像中默认安装了网关 Traefik,方便用户将服务暴露出去,更详细的配置可以参见 traefik docs

点击 Upload 开始部署,等待部署完成

2. 访问 http://${实例公网 IP}/ 进入 wordpress 管理界面

3. 当我们需要更新应用时,可以直接在面板上直接编辑对应的 Deployment

修改 resources 配置,点击 "Update" 按钮,Kubernetes 将会更新/升级 Deployment,需要补充的是

  • Kubernetes 升级的策略取决于 Deployment 指定的 strategy,上述 Deployment 指定的 strategy 为 recreate,所以 Kubernetes 会先关闭旧版本,再去启动新版本,用户可以根据需求自行指定 strategy,详情参考 Deployment update strategy
  • 配置 resources 保证 limits == requests,Kubernetes 将会设置对应 Pod 的 Qos Class 为 Guaranteed,这样对于关键服务,尤其是在机器资源紧张时,可以保证其服务质量,详情可以参加 Qos Class

更新成功!

5. 总结

本文展示了 Lighthouse K3s 应用镜像的使用方法,并通过 wordpress 的应用部署示例,展示了如何使用 Kubernetes-dashboard 部署、管理应用。如果您想要一个快速且简单的 Kubernetes 环境,用来学习 Kubernetes,或者用来开发、测试、部署应用,Lighthouse 应用服务器(K3s 应用镜像)都将会非常适合您!快来试一下吧!

本文参考来源/lynnhou

赞(0)
文章名称:《腾讯云部署服务器,云容器服务kubernetes版的功能》
文章链接:https://www.fzvps.com/99777.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

评论 抢沙发

评论前必须登录!