凡心所向,素履以往;生如逆旅,一苇以航

K3S + Docker 部署教程

请参见官方文档 https://docs.k3s.io/installation

直接安装

# 有涉及到从 Github 拉取二进制文件。可能会慢一点
curl -sfL https://get.k3s.io | sh -s - --docker
tail -f /var/log/syslog

默认情况下在国内是不能拉取到 docker 镜像的。检查系统日志,
image.png

找到拉不到的镜像。手动拉取,并打 tag 到丢失的镜像

docker pull dockerhub.mirrors.jansora.app/rancher/local-path-provisioner:v0.0.31
docker tag dockerhub.mirrors.jansora.app/rancher/local-path-provisioner:v0.0.31 rancher/local-path-provisioner:v0.0.31

大概需要 7 个镜像左右

NAME
coredns-ccb96694c-78q62
helm-install-traefik-crd-44c9r
helm-install-traefik-g622h
local-path-provisioner-5b5f758bcf-7qh7h
metrics-server-7bf7d58749-9q6bc
svclb-traefik-e5ef0966-4tm9n
traefik-5cbdcf97f4-5p7p8

重启 k3s

systemctl restart k3s

检查系统日志,以及系统 pod 是否正常

# tail -f /var/log/syslog

# kubectl get pods -A
NAMESPACE     NAME                                      READY   STATUS      RESTARTS   AGE
kube-system   coredns-ccb96694c-78q62                   1/1     Running     0          81m
kube-system   helm-install-traefik-crd-44c9r            0/1     Completed   0          81m
kube-system   helm-install-traefik-g622h                0/1     Completed   1          81m
kube-system   local-path-provisioner-5b5f758bcf-7qh7h   1/1     Running     0          81m
kube-system   metrics-server-7bf7d58749-9q6bc           1/1     Running     0          81m
kube-system   svclb-traefik-e5ef0966-4tm9n              2/2     Running     0          39m
kube-system   traefik-5cbdcf97f4-5p7p8                  1/1     Running     0          39m

部署 ingress-nginx

https://cdn.jansora.com/files/uPic/2025/03/05/ingress-nginx-4.7.0.tgz

自定义 yaml

注意:
根据 nodeSelector 来决定跑在那个 worker的 80 / 443 端口。如果单台机器,则移除掉此配置

controller:
  ingressClassResource:
    name: nginx
    enabled: true
    default: true
    controllerValue: "k8s.io/ingress-nginx"
  admissionWebhooks:
    enabled: false
  replicaCount: 1
  image:
    # registry: registry.k8s.io
    # image: ingress-nginx/controller
    # tag: "v1.8.0"
    registry: ccr.ccs.tencentyun.com
    image: jansora/registry.k8s.io_ingress-nginx_controller
    tag: "v1.8.0"
    digest: sha256:626fc8847e967dc06049c0eda9e093d77a08feff80179ae97538ba8b118570f3
  hostNetwork: true
  nodeSelector:
    node-role.kubernetes.io/network: 'edge'
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
              - key: app
                operator: In
                values:
                  - nginx-ingress
              - key: component
                operator: In
                values:
                  - controller
          topologyKey: kubernetes.io/hostname
  tolerations:
    - key: node-role.kubernetes.io/master
      operator: Exists
      effect: NoSchedule
    - key: node-role.kubernetes.io/master
      operator: Exists
      effect: PreferNoSchedule

配置 KUBECONFIG

export KUBECONFIG=/etc/rancher/k3s/k3s.yaml  # 如果你在使用 K3s

安装 helm

https://helm.sh/docs/intro/install/
均可, ubuntu 可使用

sudo snap install helm --classic

部署

评论栏