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

相关推荐
ss2731 分钟前
2025新年源码免费送
java·前端·javascript·spring boot·后端·html
赵小左18 分钟前
浅谈前端vue的自动导入插件unplugin-vue-components
前端·javascript·vue.js
黑客呀32 分钟前
网络安全-web渗透环境搭建-BWAPP(基础篇)
前端·安全·web安全
PorkCanteen35 分钟前
window.print()预览时表格显示不全
前端·vue.js·elementui
江一铭36 分钟前
使用python脚本爬取前端页面上的表格导出为Excel
前端·python·excel
前端啊龙39 分钟前
eslint.config.js和.eslintrc.js有什么区别
开发语言·前端·javascript
无法长大40 分钟前
el-upload on-preview 扩大预览事件点击范围
前端·javascript·css·vue.js·elementui·vue
花姐夫Jun2 小时前
el-date-picker日期时间选择器的选择时间限制到分钟级别
前端·javascript·vue.js
FL16238631292 小时前
chrome浏览器的更新提示弹窗无法更新Chrome解决方法
前端·chrome
大哥喝阔落2 小时前
添加到 PATH 环境变量中
前端·chrome