Ubuntu使用K3S一分钟快速搭建K8S集群
准备3台服务器。
准备3台服务器
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:
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
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
更多推荐
所有评论(0)