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

相关推荐
Brilliant Nemo8 分钟前
Vue2项目中使用videojs播放mp4视频
开发语言·前端·javascript
酷爱码33 分钟前
Linux实现临时RAM登录的方法汇总
linux·前端·javascript
LuckyLay36 分钟前
Vue百日学习计划Day16-18天详细计划-Gemini版
前端·vue.js·学习
想要飞翔的pig1 小时前
uniapp+vue3页面滚动加载数据
前端·vue.js·uni-app
HarryHY1 小时前
git提交库常用词
前端
SoraLuna1 小时前
「Mac畅玩AIGC与多模态41」开发篇36 - 用 ArkTS 构建聚合搜索前端页面
前端·macos·aigc
霸王蟹1 小时前
React Fiber 架构深度解析:时间切片与性能优化的核心引擎
前端·笔记·react.js·性能优化·架构·前端框架
benben0441 小时前
Unity3D仿星露谷物语开发44之收集农作物
前端·游戏·unity·游戏引擎
会功夫的李白1 小时前
uniapp自动构建pages.json的vite插件
前端·uni-app·vite
一口一个橘子1 小时前
[ctfshow web入门] web77
前端·web安全·网络安全