🕟

搭建容器化环境 K3s

date
slug
status
tags
summary
type
Property
Mar 25, 2023 12:35 PM
K3s 是一个轻量级的 Kubernetes 发行版,相较于 K8s, K3s 采用了更小、更快、更安全的设计,使用更少的资源,提供了更快、更简单的部署和管理方式。因此,K3s 更适合在资源有限的环境中运行,如边缘计算场景。
 

安装 K3s

可以从 K3s 的官方网站直接下载二进制文件,或者运行以下命令进行安装:
curl -sfL <https://get.k3s.io> | sh -
 

使用国内源安装

但是考虑到国内的网络情况,大多情况我们之间使用国内源安装更方便。
curl –sfL \ https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | \ INSTALL_K3S_MIRROR=cn sh -s - \ --system-default-registry "registry.cn-hangzhou.aliyuncs.com" \ --write-kubeconfig ~/.kube/config \ --write-kubeconfig-mode 666 \ --disable traefik
通过 INSTALL_K3S_MIRROR=cn 环境变量指定 K3s 的二进制文件从国内阿里云对象存储中获取。
最后,通过 --system-default-registry 参数指定 K3s 的系统镜像从阿里云镜像仓库中获取。
如果网络带宽足够,安装 K3s 系统服务只需一分钟。
可通过执行 kubectl get pods -n kube-system 验证。

配置 containerd 的 Mirror

上述步骤只是为了快速安装和启动K3s。启动K3s后,您可以在其上部署自己的业务,例如nginx。默认情况下,这些镜像从DockerHub拉取。如果使用Docker容器运行时,可以配置镜像加速器以加速镜像的拉取。
K3s默认使用containerd容器运行时。通过K3s的参数,可以设置containerd的镜像加速器,设置方式如下:
sudo cat > /etc/rancher/k3s/registries.yaml <<EOF mirrors: docker.io: endpoint: - "http://hub-mirror.c.163.com" - "https://docker.mirrors.ustc.edu.cn" - "https://registry.docker-cn.com" EOF
 
安装完成后,可以通过以下命令启动 K3s:
sudo systemctl start k3s

部署应用程序

接下来,我们可以使用 Kubernetes 的 YAML 文件来部署应用程序。
例如,以下是一个简单的 YAML 文件,用于部署一个 Node.js 应用程序:
apiVersion: apps/v1 kind: Deployment metadata: name: node-app spec: replicas: 1 selector: matchLabels: app: node-app template: metadata: labels: app: node-app spec: containers: - name: node-app image: node:latest ports: - containerPort: 3000
将上述 YAML 文件保存为 node-app.yaml,然后运行以下命令来部署应用程序:
kubectl apply -f node-app.yaml

访问应用程序

当应用程序部署完成后,可以使用以下命令来查看部署状态:
kubectl get pods
如果部署成功,应该会看到一个运行中的 Pod。
接下来,可以使用以下命令来创建一个 Kubernetes 服务,并将其公开到集群外部:
kubectl expose deployment node-app --type=LoadBalancer --port=80 --target-port=3000
当服务创建完成后,可以使用以下命令来获取服务的 IP 地址:
kubectl get services
在浏览器中输入该 IP 地址,即可访问应用程序。