k8s快速入门

50 阅读2分钟

前言

Kubernetes是一个开源的容器编排引擎,可以用来管理容器化的应用,包括容器的自动化的部署、扩容、缩容、升级、回滚等等,它是Google在2014年开源的一个项目,它的前身是Google内部的Borg系统。

什么是 k3s ?

k3s 是一个轻量级的Kubernetes发行版,它是 Rancher Labs 推出的一个开源项目,
旨在简化Kubernetes的安装和维护,同时它还是CNCF认证的Kubernetes发行版。

准备工作

  • 三台 Linux 虚拟机 (2C2G)

步骤:

## 安装k3s (这里是 master节点)

## k3s会默认以主机的 hostName 作为节点名称, 如果想自定义名称, 要先修改 hostName,具体教程自己搜

## 如果你是科学环境,网络畅通
curl -sfL https://get.k3s.io | sh -

## 如果你在坐牢
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

## 安装完之后, 你的 master节点就搭建好了
sudo kubectl get nodes

## 获取 master 节点的TOKEN,复制下来
cat /var/lib/rancher/k3s/server/node-token

## 下一步在另外两台虚拟机也安装 k3s 并加入到 master 节点
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | \
INSTALL_K3S_MIRROR=cn \
K3S_URL="https://<MASTER节点IP>:6443" \
K3S_TOKEN="<MASTER节点TOKEN>" \
sh -

## 恭喜, 此时你的小型 k8s 集群已经搭建好了,下一步在是在集群中运行deployment 、replicaSet 、pod 和 service

k8s 简单的资源调度层级

image.png

这里提供一个简单的 nginx 部署示例

## 使用以下命令可以运行一个 pod 和 svc 在集群上并指定命名空间为 nginx, k3s 会自动将请求负载均衡到各个节点
kubectl apply -t file.yaml -n nginx
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: nginx
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: docker.m.daocloud.io/library/nginx:latest
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: nginx
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30080
  type: NodePort  # 或 ClusterIP,按需调整

如果你在坐牢,请认真阅读下面的话

k8s在拉起一个 pod 时, 需要先构建一个沙箱容器: rancher/mirrored-pause:3.6, 这里你把它理解为运行环境即可, 由于国内 docker 被禁, 极大可能拉取失败.
有两种方法解决这个问题: 
1. 更换 k8s 的镜像源, 比较复杂, 自己去搜
2. 手动 import : 使用 docker 拉取这个镜像, 再使用 docker save 指令打包成一个 tar 包,拷贝到节点手动 import. 需要注意的是, 每个节点都要手动 import
## 手动 import 指令
sudo /usr/local/bin/k3s ctr -n k8s.io images import /root/images.tar

参考链接 : geekhour.net/2023/12/23/…