请参见官方文档 https://docs.k3s.io/installation
直接安装
# 有涉及到从 Github 拉取二进制文件。可能会慢一点
curl -sfL https://get.k3s.io | sh -s - --docker
tail -f /var/log/syslog
默认情况下在国内是不能拉取到 docker 镜像的。检查系统日志,
找到拉不到的镜像。手动拉取,并打 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
部署