问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Ubuntu使用K3S一分钟快速搭建K8S集群

创作时间:
作者:
@小白创作中心

Ubuntu使用K3S一分钟快速搭建K8S集群

引用
CSDN
1.
https://blog.csdn.net/qq_33371766/article/details/140415355

本文将介绍如何使用K3S在Ubuntu系统上快速搭建Kubernetes(K8S)集群。K3S是轻量级的Kubernetes发行版,非常适合在资源受限的环境中部署。

Master节点安装脚本

K3s 提供了一个安装脚本,可以方便地在systemd或openrc的系统上将其作为服务安装。这个脚本可以在https://get.k3s.io获得。要使用这种方法安装K3s,只需运行以下命令:

curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

Node节点安装脚本

curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken sh -

指定版本

curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.21.14+k3s1 INSTALL_K3S_EXEC="--docker --kube-apiserver-arg service-node-port-range=1-65535" K3S_NODE_NAME=node1 K3S_URL=https://10.10.1.16:6443 K3S_TOKEN=K10c13f3b79648c93975a7e870a9c9fad678679024bd61a45f5632c5658e97ba941::server:6864f9e9b65e335a60ce46a7a1537003 sh -

上图可以看到启动的集群不是相同的容器类型一个是docker 两个是containerd 所以需要在上面的命令指定 INSTALL_K3S_EXEC

INSTALL_K3S_EXEC="--docker 指定使用docker启动k3s,默认是containerid

设置
K3S_URL
参数会使 K3s 以 worker 模式运行。K3s agent 将在所提供的 URL 上向监听的 K3s 服务器注册。
K3S_TOKEN
使用的值存储在你的服务器节点上的
/var/lib/rancher/k3s/server/node-token
路径下。
这里的myserver就是master的ip,token在master节点查看,命令:
cat /var/lib/rancher/k3s/server/token

在node1和node2节点执行命令:

curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=https://192.168.124.160:6443 K3S_TOKEN=K100a2d36d2970ba3fec18473c24377f3ef8e261899e5f2eb72e61b9fae70070aff::server:9689aeb8fb1a3849211ced8e7bad8fb8 sh -

验证集群,master节点

kubectl get node 可以看到集群搭建成功!

卸载k3s

执行uninstall脚本即可

安装k3s-master (如果不行 换一下k3s_install.sh的链接) node_name根据自己情况修改

#!/bin/bash
# 指定 K3s 版本
export INSTALL_K3S_VERSION=v1.21.14+k3s1
# 自定义启动执行命令
export INSTALL_K3S_EXEC="--docker --kube-apiserver-arg service-node-port-range=1-65535"
# 只安装不启动
export INSTALL_K3S_SKIP_START=true
# https://docs.rancher.cn/docs/k3s/installation/installation-requirements/_index#先决条件
# 为您添加到集群的每个节点设计一个独特的名称
export K3S_NODE_NAME=node6
###
# agent 需加上,其他保持一致
###
# 设置了 K3S_URL,它将默认为“agent”。如果未设置K3S_URL,它将默认为“server”
export K3S_URL=
# 用于将 server 或 agent 加入集群的共享 secret
export K3S_TOKEN=
# 使用阿里云镜像源安装
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
# 启动 K3s 服务
systemctl enable --now k3s
# 查看 K3s 服务状态
systemctl status k3s

安装k3s-agent (如果不行 换一下k3s_install.sh的链接) 里面的node_name、url和token根据自己的实际情况替换

#!/bin/bash
# 指定 K3s 版本
export INSTALL_K3S_VERSION=v1.21.14+k3s1
# 自定义启动执行命令
export INSTALL_K3S_EXEC="--docker --kube-apiserver-arg service-node-port-range=1-65535"
# 只安装不启动
export INSTALL_K3S_SKIP_START=true
# https://docs.rancher.cn/docs/k3s/installation/installation-requirements/_index#先决条件
# 为您添加到集群的每个节点设计一个独特的名称
export K3S_NODE_NAME=node6
###
# agent 需加上,其他保持一致
###
# 设置了 K3S_URL,它将默认为“agent”。如果未设置K3S_URL,它将默认为“server”
export K3S_URL=https://10.10.1.15:6443
# 用于将 server 或 agent 加入集群的共享 secret
export K3S_TOKEN=K102064598c2c1b76f8461c80d36082964e88f1d89a1f137e40011b455cbcd1f208::server:6719bbe029ca2390ba5d32e592de1921
# 使用阿里云镜像源安装
#curl -sfL https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=$K3S_URL K3S_TOKEN=$K3S_TOKEN sh -
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=$K3S_URL K3S_TOKEN=$K3S_TOKEN sh -
# 启动 K3s 服务
#systemctl enable --now k3s-agent
#systemctl start --now k3s-agent
# 查看 K3s 服务状态
#systemctl status k3s-agent

master节点验证集群是否添加成功

如果未添加成功,执行以下命令:

sudo k3s agent --server https://192.168.124.160:6443 --token K10bec8774a000a0a6d77bdc0d2884cbdde74db9daf425ee5bc38e939b1d7c1738e::server:6c27c9f81ce27f0972a50b35aacc169d

使用k8s集群

  1. 创建pod
cat > pod_nginx_rs.yaml <<EOF
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginx
  labels:
![](https://wy-static.wenxiaobai.com/chat-rag-image/15643026088743628314)
    tier: frontend
spec:
  replicas: 3
  selector:
    matchLabels:
      tier: frontend
  template:
    metadata:
      name: nginx
      labels:
        tier: frontend
    spec:
      containers:
- name: nginx
        image: nginx
        ports:
- containerPort: 80
EOF

根据pod_nginx_rs.yml文件创建pod

kubectl apply -f pod_nginx_rs.yaml

#查看所有的pod

kubectl get pods

#查看所有的pod详细信息

kubectl get pods -o wide

#查看所有的pod超级详细信息

kubectl describe pod nginx

  • 通过rs将pod扩容为5个nginx服务
  • #将nginx服务由3个扩容为5个
  • kubectl scale rs nginx --replicas=5

#查看所有的pod

kubectl get pods -o wide

  • 光有ReplicaSet是不行的,ReplicaSet不会提供服务的,需要一个Service。将它应用到集群里面去。
cat > pod_nginx_rs_svc.yaml <<EOF
apiVersion: v1
kind: Service              # 类型是service
metadata:                  
  name: nginx              # 这个service的全局唯一名称
spec:
  type: NodePort
![](https://wy-static.wenxiaobai.com/chat-rag-image/9057942793234845477)
  ports:
- port: 80             # service提供服务的端口号
      nodePort: 30000      # 想要对外的端口
  selector:
    tier: frontend         # 把拥有{tier:labels}或者{app:labels}这个标签的pod应用到这个服务里面
EOF

如果不加nodePort也就是不指定nodeport,默认会随机输出端口,可以通过kubectl get svc查看;
如果需要修改端口范围,如果是按照我的方式部署的,可在:vim /etc/kubernetes/manifests/kube-apiserver.yaml 的第17行进行修改,默认范围是30000-32767。

根据 pod_nginx_rs_svc.yml 文件创建services,需对外访问

kubectl apply -f pod_nginx_rs_svc.yaml

查看service

kubectl get svc
kubectl get services

kubectl get svc 中的 type 。

  • Cluster IP 为服务器内部使用
  • Node Port 为服务器内部外部都可以使用,可以指定端口也可以随机端口。
  • 启动services之后,查看端口

kubectl get svc -o wide

ip+30000 master的ip、node1的 ip、node2的ip都可以

可以看到这里的pod没有全部完成

kubectl describe pod nginx-mr7vh

查看详情

镜像拉取失败了,科学上网才行哦。

kubectl delete pod nginx-mr7vh 删除失败的两个pod,然后科学上网镜像就能拉取下来了

安装 Kuboard v3 - kubernetes | Kuboard

kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3-swr.yaml

kubectl get pods -n kuboard

http://192.168.124.160:30080/kuboard/cluster

scp /etc/rancher/k3s/k3s.yaml ~/.kube/config


© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号