查看: 71|回复: 0

[云和虚拟化] k3s安装部署流程

[复制链接]

0

主题

0

回帖

0

积分

积极分子

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2008-8-9
发表于 2026-1-7 14:55:36 | 显示全部楼层 |阅读模式

k3s国内下载地址

curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

配置镜像源

tee /etc/rancher/k3s/registries.yaml <<'EOF'
mirrors:
  "docker.io":
    endpoint:
      - "https://docker.m.daocloud.io"
      - "https://docker.mirrors.ustc.edu.cn"
      - "https://hub-mirror.c.163.com"
      - "https://mirror.baidubce.com"
      - "https://docker.nju.edu.cn"
      - "https://mirrors.tuna.tsinghua.edu.cn"
      - "https://registry-1.docker.io"
EOF

部署仪表盘

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

配置仪表盘角色

dashboard.admin-user-role.yml

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: admin-user
    namespace: kubernetes-dashboard

dashboard.admin-user.yml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kubernetes-dashboard

部署用户角色配置

kubectl create -f dashboard.admin-user.yml -f dashboard.admin-user-role.yml

获取仪表盘 token

kubectl -n kubernetes-dashboard create token admin-user

端口转发

–address 0.0.0.0 可以远程访问

kubectl port-forward -n kubernetes-dashboard --address 0.0.0.0 svc/kubernetes-dashboard 8443:443

以NodePort的方式进行暴露

直接端口转发命令需要一直保持命令行运行状态,如果需要后台需要使用 NodePort 来对外暴露服务。

apiVersion: v1
kind: Service
metadata:
  name: dashboard-nodeport
  namespace: kubernetes-dashboard
spec:
  type: NodePort
  selector:
     k8s-app: kubernetes-dashboard
  ports:
    - name: dashboard-https
      port: 443 #应用端口
      targetPort: 8443 #pod端口
      nodePort: 30443 # 转发端口

访问https://192.168.204.137:30443/地址,根据自己服务器实际情况来。

安装nerdctl + buildkitd 构建容器镜像

nerdctl地址:https://github.com/containerd/nerdctl/releases/download/v1.5.0/nerdctl-1.5.0-linux-amd64.tar.gz

buildkitd地址:https://github.com/moby/buildkit/releases/download/v0.12.1/buildkit-v0.12.1.linux-amd64.tar.gz

1. 安装buildkitd

解压缩包

tar xf buildkit-v0.12.1.linux-amd64.tar.gz

复制两个文件夹到bin目录下

cp bin/buildkitd bin/buildctl /usr/local/bin/

创建service文件

[Unit]
Description=BuildKit
Documentation=https://github.com/moby/buildkit
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/local/bin/buildkitd --oci-worker=false --containerd-worker=true
User=root
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

启动buildkitd服务

systemctl daemon-reload
systemctl enable buildkitd --now
# systemctl enable buildkitd --now
# 相当于systemctl enable buildkitd 和 systemctl start buildkitd

2. 安装nerdctl

解压缩

tar xf nerdctl-1.5.0-linux-amd64.tar.gz 

复制到bin目录下

mv nerdctl /usr/local/bin/

由于直接使用的k3s的容器,所以没有/run/containerd/containerd.sock,使用nerdctl会报错

创建符号链接

ln -sf /run/k3s/containerd/containerd.sock /run/containerd/containerd.sock

# 验证链接
ls -la /run/containerd/containerd.sock

3. 注意事项

nerdctl拉取的镜像默认在default命名空间,这样子k3s查询不到,部署会有问题。

方案1:拉取的时候指定命名空间k8s.io

nerdctl -n k8s.io pull docker.1ms.run/library/nginx:alpine3.22

方案2:修改环境变量

echo 'export CONTAINERD_NAMESPACE=k8s.io' >> ~/.bashrc
source ~/.bashrc

方案3:修改nerdctl配置文件(推荐)

mkdir -p /etc/nerdctl
echo 'namespace = "k8s.io"' | tee /etc/nerdctl/nerdctl.toml

验证nerdctl命名空间

nerdctl info

验证,使用nerdctl拉取镜像,如果在crictl查询出来就是成功了

nerdctl pull docker.1ms.run/library/nginx:alpine3.22

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持琼殿技术社区。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部