先简单介绍下各个名词,k3s
理解为是k8s的简化版只保留核心模块。
k3s
集群怎么搭建呢?一种熟练的会敲命令行,另一群入门的会用可视化界面搭建集群,即AutoK3s
。
k3s
集群运行在什么环境呢?一种是普遍的有多台linux机器(或虚拟机),另一种入门的就是在一台linux机器上,让k3s
集群运行在docker容器里面。
今天我们就在一台虚拟机上用 AutoK3s
可视化界面搭建一套多节点的 k3s
集群,这种集群的类型官方就叫 k3d
,即 k3s in docker
模式。
这篇文章视频 www.bilibili.com/video/BV1g3...
一些参考资料:
干净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端口打开AutoK3s
UI界面配置集群
新建集群
在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镜像那里地址被墙了,要重新换国内镜像地址。