k3s入门--踩坑解决AutoK3s运行K3d集群

先简单介绍下各个名词,k3s理解为是k8s的简化版只保留核心模块。

k3s集群怎么搭建呢?一种熟练的会敲命令行,另一群入门的会用可视化界面搭建集群,即AutoK3s

k3s集群运行在什么环境呢?一种是普遍的有多台linux机器(或虚拟机),另一种入门的就是在一台linux机器上,让k3s集群运行在docker容器里面。

今天我们就在一台虚拟机上用 AutoK3s 可视化界面搭建一套多节点的 k3s 集群,这种集群的类型官方就叫 k3d,即 k3s in docker 模式。

这篇文章视频 www.bilibili.com/video/BV1g3...

一些参考资料:

rancher官网

【K3s踩坑记录】1-集群搭建

使用K3s快速搭建集群

国内镜像地址

干净centos服务器安装docker

swift 复制代码
# 设置yum国内源
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
          -e 's|^#baseurl=http://mirror.centos.org|baseurl=http://mirrors.aliyun.com|g' \
          -i.bak \
          /etc/yum.repos.d/CentOS-*.repo

# 同步
yum makecache

#关闭防火墙
systemctl stop firewalld 
systemctl disable firewalld

#关闭selinx
setenforce 0
sed -i s#SELINUX=enforcing#SELINUX=disabled#g /etc/sysconfig/selinux
 
#安装 docker 依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2

#配置 docker-ce 国内 yum 源(阿里云)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#安装 docker-ce
yum install -y docker-ce docker-ce-cli containerd.io
systemctl enable docker
systemctl start docker

#修改daemon
mkdir -p /etc/docker
  echo -e "{
  \"registry-mirrors\": [
    \"https://dockerpull.org\",
    \"https://s1qalke8.mirror.aliyuncs.com\",
    \"https://registry.docker-cn.com\",
    \"http://hub-mirror.c.163.com\",
    \"https://docker.mirrors.ustc.edu.cn\"
  ],
  \"insecure-registries\":[],
  \"log-driver\": \"json-file\",
  \"log-opts\": {
    \"max-size\": \"100m\",
    \"max-file\": \"3\",
    \"labels\": \"production_status\",
    \"env\": \"os,customer\"
  }
}" > /etc/docker/daemon.json

# 重启docker
systemctl daemon-reload
systemctl restart docker

运行AutoK3s并支持k3d

arduino 复制代码
docker run -itd --restart=unless-stopped --net host -v /var/run/docker.sock:/var/run/docker.sock cnrancher/autok3s:v0.6.0

现在可以访问8080端口打开AutoK3sUI界面配置集群

新建集群

在Cluster界面,点Create新建,选k3d,点开Advance

设置Ports

注意端口范围必须 30000-32767,其中30181和30180可以用同一个端口,也可不同

java 复制代码
30181:30180@loadbalancer

更多格式参考

java 复制代码
30182:30180@agent:0
30180:30180@loadbalancer

设置Registry

lua 复制代码
mirrors:
  docker.io:
    endpoint:
      - "https://docker.linkedbus.com"
      - "https://dockerpull.org"
      - "https://docker.xuanyuan.me"
      - "https://registry.cn-hangzhou.aliyuncs.com/"
      - "https://registry.dockermirror.com"
  quay.io:
    endpoint:
      - "https://quay.tencentcloudcr.com/"
  registry.k8s.io:
    endpoint:
      - "https://registry.aliyuncs.com/v2/google_containers"
  gcr.io:
    endpoint:
      - "https://gcr.m.daocloud.io/"
  k8s.gcr.io:
    endpoint:
      - "https://registry.aliyuncs.com/google_containers"
  ghcr.io:
    endpoint:
      - "https://ghcr.m.daocloud.io/"

成功运行后,看虚拟机多了三个docker容易,分别是我们新建的 master,worker和loadbalancer,如果刚才master和worker写多,也会相应多容器,后面我们部署的应用就会在这些master和worker里面运行。

填坑修复agent执行kubectl命令报错

在两个节点中去执行 kubuctl 命令,发现只有 server节点有效,agent节点报错

需要拷贝server节点的配置文件到agent节点中,并修改里面url地址

sql 复制代码
kubectl describe pod

server 节点执行命令正常

agent 节点执行命令报错 The connection to the server localhost:8080 was refused - did you specify the right host or port?

现在要把server节点的 kubeconfig.yaml 拷贝到 agent 节点 k3s.yaml 文件

查看 server 的 containerid 是 b88f5391ac22

查看 agent 的 containerid 是 1e190b196813

bash 复制代码
docker cp b88f5391ac22:/output/kubeconfig.yaml k3s.yaml

docker inspect b88f5391ac22

看到其中ip地址

修改 k3s.yaml 地址

复制代码
vi k3s.yaml
bash 复制代码
# 在agent中新建目录
docker exec 1e190b196813 mkdir /.kube

# 复制到agent中
docker cp k3s.yaml 1e190b196813:/.kube/config

# 重启agent节点
docker restart 1e190b196813

现在一切正常了,agent中也可执行kubectl命令

在集群中部署nginx应用

打开Explorer

点Explorer进入管理,路由出错,点 Back to Home

在 Deployments 中 Create 新建应用

我使用我腾讯云上镜像

bash 复制代码
ccr.ccs.tencentyun.com/rootegg/nginx:1.27.2

注意要填前面loaderbalance的30180端口,这样我们就可以用30181来访问nginx了

可以到前面cluster页面查看部署日志

sql 复制代码
kubectl describe pod

显示 active 就成功了,如果这里一直显示 Deployment does not have minimum availability. 刚才那句,就说明刚才registry设置docker.io镜像那里地址被墙了,要重新换国内镜像地址。

成功访问nginx

相关推荐
小小小小宇9 分钟前
前端XSS和CSRF以及CSP
前端
UFIT12 分钟前
NoSQL之redis哨兵
java·前端·算法
超级土豆粉19 分钟前
CSS3 的特性
前端·css·css3
星辰引路-Lefan20 分钟前
深入理解React Hooks的原理与实践
前端·javascript·react.js
wyn2000112831 分钟前
JavaWeb的一些基础技术
前端
Hygge-star1 小时前
Flask音频处理:构建高效的Web音频应用指南
前端·flask·音视频·pygame·csdn开发云
江城开朗的豌豆1 小时前
JavaScript篇:回调地狱退散!6年老前端教你写出优雅异步代码
前端·javascript·面试
飞鸟malred1 小时前
vite+tailwind封装组件库
前端·react.js·npm
Angindem1 小时前
从零搭建uniapp项目
前端·vue.js·uni-app
java干货1 小时前
深度解析:Spring Boot 配置加载顺序、优先级与 bootstrap 上下文
前端·spring boot·bootstrap