k3s安装部署流程

 更新时间:2026年01月07日 14:55:36   作者:兔子先生°  
文章详细介绍了如何在国内配置K3s镜像源、部署仪表盘、配置角色和权限、获取仪表盘token、进行端口转发以及使用nerdctl和buildkitd构建容器镜像的方法,并附带了注意事项和验证步骤

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • K8s创建资源的两种方法实例

    K8s创建资源的两种方法实例

    而在我看来,在学习K8S之前,有必要对K8S的资源对象有个全局的概念,下面这篇文章主要给大家介绍了关于K8s创建资源的两种方法,需要的朋友可以参考下
    2022-05-05
  • K8s基本单元Pod解读

    K8s基本单元Pod解读

    Kubernetes中Pod是调度单元,包含多个容器及Pause容器,提供共享网络、存储等资源,状态分为Pending、Running、Failed等,支持存活、就绪、启动探针检测容器健康
    2025-08-08
  • centos搭建k8s环境详细步骤及常用命令

    centos搭建k8s环境详细步骤及常用命令

    kubernetes是google开源的容器集群管理系统,提供应用部署、维护、扩展机制等功能,利用kubernetes能方便管理跨集群运行容器化的应用,这篇文章主要给大家介绍了关于centos搭建k8s环境详细步骤及常用命令的相关资料,需要的朋友可以参考下
    2024-01-01
  • k8s安装calico时如何选择网卡问题

    k8s安装calico时如何选择网卡问题

    这篇文章主要介绍了k8s安装calico时如何选择网卡问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 基于openEuler的Ceph分布式存储集群部署指南

    基于openEuler的Ceph分布式存储集群部署指南

    本文详细介绍了如何在openEuler22.03LTS操作系统上部署Ceph分布式存储集群,包括环境准备、软件仓库配置、集群初始化、存储节点部署、存储池创建、监控集成和性能优化等步骤,感兴趣的朋友一起看看吧
    2025-03-03
  • Kubernetes中创建命名空间实现方法

    Kubernetes中创建命名空间实现方法

    这篇文章主要为大家介绍了Kubernetes中创建命名空间实现方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Kubernetes集群环境初始化

    Kubernetes集群环境初始化

    这篇文章介绍了Kubernetes集群环境初始化的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • K8S安装及配置教程

    K8S安装及配置教程

    这篇文章主要介绍了K8S安装及配置教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-03-03
  • Kubernetes控制器中DaemonSet与Job的使用教程

    Kubernetes控制器中DaemonSet与Job的使用教程

    这篇文章主要介绍了Kubernetes控制器中DaemonSet与Job的使用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • 详解Kubernetes 中容器跨主机网络

    详解Kubernetes 中容器跨主机网络

    这篇文章主要为大家介绍了Kubernetes中容器跨主机网络是怎么样的,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04

最新评论