用k3s搭建Kubernetes环境

本文介绍了如何在本地环境中使用k3s、MicroK8s等轻量级Kubernetes版本进行部署,包括环境准备、安装步骤、验证、禁用traefik和安装ingress-nginx,以及节点加入和卸载过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:

用于本地实验的小型 Kubernetes:k0s、MicroK8s、kind、k3s 和 Minikube - 知乎

[K8S] 01 - MiniKube, K3S or MicroKube

K3S完美部署_k3s部署-优快云博客

K3s - 轻量级 Kubernetes | K3s

03-K3S 安装-要求及选项-优快云博客

被坑惨了, 安装了 k3s 本地 80 端口不能用了?-腾讯云开发者社区-腾讯云

k3s 的默认traefik服务不能被代理. 如何解决-高性能服务器开发

1、环境准备

yum install ntpdate -y
ntpdate time.windows.com

#默认安装使用containerd作为容器运行时
#如果没有安装过docker,需要装一下containerd
yum install containerd -y
systemctl start containerd && systemctl enable containerd
#如果提示找不到containerd包,可以尝试更换成阿里云镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#如果后续想用ipvs作为代理模型(默认的是iptables,ipvs的性能高一些)
yum install ipset ipvsadm -y

#确认所有节点的hostname唯一
hostname
#不唯一的话,修改hostname
hostnamectl set-hostname 新hostname
vim /etc/hosts
#修改hosts内容
127.0.0.1 新hostname

#禁用所有 woker 节点上的交换功能(Swap)
vim /etc/fstab
注释掉有swap字样的那行

#修改 sysctl 配置
vim /etc/sysctl.conf
添加一行
net.bridge.bridge-nf-call-iptables = 1

2、安装

#在master上执行
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.26.9+k3s1 INSTALL_K3S_EXEC=server sh -s -
#在node上执行
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.26.9+k3s1 INSTALL_K3S_EXEC=agent sh -s -
#默认安装使用containerd作为容器运行时,如果想使用docker作为容器运行时,按照下述操作。但一般建议忽略,因为containerd就是docker的后端容器组件,可以减少一层转发
#在上面命令后面加一个“--docker”,例如在master上安装
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION=v1.27.6-k3s1 INSTALL_K3S_EXEC=server sh -s - --docker

#验证安装成功
k3s kubectl get nodes

#为了方便调试和解决一些坑,我们采用手动启动方式,关闭k3s的服务
#在master上执行
systemctl stop k3s && systemctl disable k3s
#在node上执行
systemctl stop k3s-agent && systemctl disable k3s-agent

3、修改镜像源

docker pull coredns/coredns:1.11.1
docker tag coredns/coredns:1.11.1 registry.cn-hangzhou.aliyuncs.com/google_containers/coredns/coredns:1.11.1

cat > /etc/rancher/k3s/registries.yaml <<EOF
mirrors:
  docker.io:
    endpoint:
      - "http://registry.cn-hangzhou.aliyuncs.com/google_containers"
EOF

如果是用docker作为容器运行时的,也要修改docker的镜像源

vim /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://xxxx.mirror.aliyuncs.com"
  ]
}

4、启动master并禁用traefik

#在master上启动
k3s server --disable traefik

或者编辑k3s的启动脚本

vim /etc/systemd/system/k3s.service
#在ExecStart的命令后面添加个参数,禁用traefik
ExecStart=/usr/local/bin/k3s \
    server \
        --docker \
        --disable traefik \

systemctl start k3s

启用ipvs做代理(目前还没试验成功,@TODO)

#启动命令加个参数kube-proxy-arg
k3s server --disable traefik --kube-proxy-arg=proxy-mode=ipvs

5、在master上安装ingress-nginx

#安装
wget -O ingress-nginx.yaml https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.6.4/deploy/static/provider/baremetal/deploy.yaml
sed -i "s/registry.k8s.io\/ingress-nginx\/controller:v1.6.4@sha256:15be4666c53052484dd2992efacf2f50ea77a78ae8aa21ccd91af6baaa7ea22f/woosau\/ingress-nginx-controller:v1.6.4/g" ingress-nginx.yaml
sed -i "s/registry.k8s.io\/ingress-nginx\/kube-webhook-certgen:v20220916-gd32f8c343@sha256:39c5b2e3310dc4264d638ad28d9d1d96c4cbb2b2dcfb52368fe4e3c63f61e10f/woosau\/ingress-nginx-kube-webhook-certgen:v20220916-gd32f8c343/g" ingress-nginx.yaml
kubectl create -f ingress-nginx.yaml

#验证安装结果
kubectl get pod,svc -n ingress-nginx

6、node加入集群

#在master上查看加入集群的token
cat /var/lib/rancher/k3s/server/node-token
#在node上启动并加入master的集群
k3s agent --server https://master的ip:6443 --token 集群的token

7、卸载k3s

#要从 Server(master) 节点卸载 K3s
sh /usr/local/bin/k3s-uninstall.sh
#要从 Agent(node) 节点卸载 K3
sh /usr/local/bin/k3s-agent-uninstall.sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值