使用K3s搭建Kubernetes集群

使用K3s搭建Kubernetes集群

主要参考你的第一次轻量级K8S体验 —— 记一次Rancher 2.2 + K3S集成部署过程

需要至少2台机器。

当前各软件版本为:

软件名 版本
Docker 18.09.9
K3s v1.17.0+k3s.1
rancher v2.3.3

Docker安装

直接参考官方文档

安装依赖使apt可以使用HTTPS的仓库

apt install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

添加Docker官方的GPG密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

添加Docker稳定版仓库

add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

更新apt索引

apt update

安装Docker

apt-get install -y docker-ce docker-ce-cli containerd.io

配置registry

docker pull registry:2
docker run -d -p 5000:5000 --restart=always --name registry \
    -v /var/data:/var/lib/registry registry:2

修改Docker配置/etc/docker/daemon.json

{
      "insecure-registries" : ["192.168.226.11:5000"]
}

rancher安装

选择一台安装rancher server,这台不安装k3s,好像会有冲突。

docker run -d -v /data/docker/rancher-server/var/lib/rancher/:/var/lib/rancher/ --restart=unless-stopped --name rancher-server -p 80:80 -p 443:443 rancher/rancher:stable

之后访问http://192.168.226.10/(改成自己的ip)进行初始化部署。设定密码和地址后,可选切换语言。

选择添加集群 -> 导入,输入集群名,然后点击创建。保存最后一条指令,记得在kubectl前添加k3s

k3s安装

k3s - Releases下载k3s文件(约50MB的那个),上传至/usr/local/bin/,并执行下面指令

chmod +x /usr/local/bin/k3s

下载pause镜像

docker pull kubernetes/pause:latest
docker tag kubernetes/pause:latest k8s.gcr.io/pause

执行官方安装脚本

curl -sfL https://get.k3s.io | sh -

配置容器引擎使用Docker

vim /etc/systemd/system/multi-user.target.wants/k3s.service

在文件中ExecStart字段最后一个\后添加一行,并填入--docker,类似下面

ExecStart=/usr/local/bin/k3s \
    server \
    --docker

保存配置并重启k3s

systemctl daemon-reload
systemctl restart k3s

执行之前保存的指令,注意不要直接使用下面的样例,主机地址和yaml文件名要使用刚才生成的。

curl --insecure -sfL https://192.168.226.11/v3/import/nb4hcqpzsvggwhcsfgpj5vjss8s2wsqbhv82d72s68hx8cf6gfzhsj.yaml | k3s kubectl apply -f -

稍等一会界面就会出现节点状态。

容器执行测试

参考Kubernetes官方文档

先准备一个镜像

docker pull busybox
docker tag busybox:latest 192.168.226.11:5000/busybox:latest
docker push 192.168.226.11:5000/busybox:latest

假设现在我们从私有仓库拉取一个镜像并执行。

创建job.yaml文件

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: hello
spec:
  schedule: "*/1 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: hello
            image: 192.168.226.11:5000/busybox
            args:
            - /bin/sh
            - -c
            - date; echo Hello from the Kubernetes cluster
          restartPolicy: OnFailure

创建Job

k3s kubectl create -f job.yaml

查看Job状态

kubectl get cronjob hello

查看Job创建的Pod

kubectl get jobs

选择上面的一个已完成的pod的id,例如hello-1578545280。获取这个pod的输出

pods=$(kubectl get pods --selector=job-name=hello-1578545280 --output=jsonpath={.items[*].metadata.name})
kubectl logs $pods

添加节点

新节点同样先安装Docker。安装k3s按如下步骤。

查看主节点的node-token

cat /var/lib/rancher/k3s/server/node-token

在新节点上安装并启动为普通节点,注意ip地址和token改成自己的。

curl -sfL https://get.k3s.io | K3S_URL=https://192.168.226.11:6443 K3S_TOKEN=K105933dce21eca704fb3913c26976e0c13c36878fc0c846a0780915c12fccdd78e::server:1a8e2a73e1247868ccb5b3ce0b3cbc7e sh -

同样需要配置容器引擎使用Docker

vim /etc/systemd/system/multi-user.target.wants/k3s-agent.service 

修改方式和主节点一样,然后重启k3s-agent,在rancher界面即可看到新加入的节点。

Author: SinLapis
Link: http://sinlapis.github.io/2020/01/09/使用K3s搭建Kubernetes集群/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.