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

总结

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

相关文章

  • 配置Ingress的SSL/TLS证书全过程

    配置Ingress的SSL/TLS证书全过程

    在Kubernetes中配置Ingress的SSL/TLS证书涉及两个主要步骤:首先是创建包含证书的Secret,然后是配置Ingress资源以使用该Secret,这要求已部署IngressController如NGINX,并拥有有效的SSL/TLS证书,可以通过Cert-Manager自动管理证书的申请和续期
    2025-10-10
  • kubernetes认证鉴权内容浅析

    kubernetes认证鉴权内容浅析

    这篇文章主要为大家介绍了kubernetes认证鉴权内容浅析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • k8s series初级calico使用介绍

    k8s series初级calico使用介绍

    这篇文章主要为大家介绍了k8s series初级calico使用介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • K8s部署Nginx集群,通过Ingress实现HTTPS域名访问过程

    K8s部署Nginx集群,通过Ingress实现HTTPS域名访问过程

    文章主要介绍了如何使用Ingress控制器和Nginx服务来实现HTTP到HTTPS的强制重定向,并解释了Ingress控制器如何处理TLS终止和流量路由,通过配置Ingress和Nginx服务,可以确保所有流量都通过HTTPS访问,从而提高安全性
    2026-01-01
  • k8s集群搭建的完整步骤流程

    k8s集群搭建的完整步骤流程

    Kubernetes是由Google开源的容器编排平台,用于自动化容器化应用的部署、扩展和管理,这篇文章主要介绍了k8s集群搭建的完整步骤流程,文中通过图文及代码介绍的非常详细,需要的朋友可以参考下
    2025-07-07
  • k8s扩展调度能力的三种实现方式

    k8s扩展调度能力的三种实现方式

    Kubernetes调度器扩展主要通过调度框架和调度器扩展器实现,调度框架提供多种插件接口,如QueueSort、Filter、Score等,允许扩展调度逻辑,调度器扩展器通过HTTP服务扩展调度功能,支持Filter、Prioritize等扩展点
    2025-10-10
  • 云原生系列Kubernetes深度解析YAML文件使用

    云原生系列Kubernetes深度解析YAML文件使用

    这篇文章主要为大家介绍了云原生系列Kubernetes深度解析YAML文件使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 关于k8s中subpath的使用详解

    关于k8s中subpath的使用详解

    这篇文章主要介绍了k8s中subpath的使用,文章介绍分为两种情况给大家详细讲解,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • K8S删除pod的4种方法小结

    K8S删除pod的4种方法小结

    在Kubernetes集群环境中工作时,有时会遇到需要从一个工作节点中删除pod的情况,下面这篇文章主要给大家介绍了关于K8S删除pod的4种方法,需要的朋友可以参考下
    2024-01-01
  • 一篇文章读懂K8S的PV和PVC以及实践攻略

    一篇文章读懂K8S的PV和PVC以及实践攻略

    本文详细介绍了Kubernetes中的存储卷(Volume)机制,包括PersistentVolume(PV)、PersistentVolumeClaim(PVC)及其与后端存储的关系,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-10-10

最新评论