云其它

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > 云其它 > k3s安装部署

k3s安装部署流程

作者:兔子先生°

文章详细介绍了如何在国内配置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

总结

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

您可能感兴趣的文章:
阅读全文