K3s安装「终于解决」

K3s安装「终于解决」K3s安装文档官方中文链接官方英文链接两台虚拟机主机名ipk3ss192.168.56.160k3sa192.168.56.161快速入门单节点架构RedHat和CentOS的额外准备建议运行以下命令,关闭firewalld:systemctldisablefirewalld–now安装脚本k3ss节点多张网卡指定一个网卡地址INSTALL_K3S_EXEC=”–advertise-address192.168.56.160″

K3s安装文档

官方中文链接

官方英文链接

学习内容

  1. 用脚本快速安装k3s
  2. 用脚本 docker容器 快速安装k3s
  3. 离线安装k3s
  4. 用脚本快速安装k3s 高可用

两台虚拟机

主机名 ip
k3ss 192.168.56.160
k3sa 192.168.56.161

快速入门

单节点架构
在这里插入图片描述

Red Hat 和 CentOS 的额外准备

建议运行以下命令,关闭 firewalld:

systemctl disable firewalld –now

安装脚本

k3ss节点

多张网卡指定一个网卡地址 INSTALL_K3S_EXEC=”–advertise-address 192.168.56.160″

curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION="v1.20.7+k3s1" INSTALL_K3S_EXEC="--advertise-address 192.168.56.160" sh -

在k3ss 获取token

cat  /var/lib/rancher/k3s/server/node-token

k3sa节点

可以使用以下方法加速安装:

curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION="v1.20.7+k3s1" INSTALL_K3S_EXEC="--node-ip 192.168.56.161" K3S_URL=https://192.168.56.160:6443 K3S_TOKEN=K10bc90a278d95b6935fd373997f394aa0ebf52b7932a5e7d9d4dc1a15a8f91cdad::server:a1d6672aaaf6b65ce2c2b7bd64ba11be sh -

设置K3S_URL参数会使 K3s 以 worker 模式运行。K3s agent 将在所提供的 URL 上向监听的 K3s 服务器注册。K3S_TOKEN使用的值存储在你的服务器节点上的 /var/lib/rancher/k3s/server/node-token 路径下。

注意

每台计算机必须具有唯一的主机名。如果您的计算机没有唯一的主机名,请传递K3S_NODE_NAME环境变量,并为每个节点提供一个有效且唯一的主机名。

查看

kubectl get nodes

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V68hoOWw-1621826531873)(imgs/image-20210520110019448.png)]

K3s worker 节点的角色默认为none,如果修改?

可以通过kubectl label node ${node} node-role.kubernetes.io/worker=worker为节点增加 worker 角色。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CG92E2dU-1621826531874)(imgs/image-20210520110257691.png)]

安装helm

wget http://rancher-mirror.cnrancher.com/helm/v3.5.4/helm-v3.5.4-linux-amd64.tar.gz
tar -zxvf helm-v3.5.4-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
vi /etc/profile
  export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
source /etc/profile
helm version

// 暂未确认 开始

安装rancher

helm repo add rancher-stable http://rancher-mirror.oss-cn-beijing.aliyuncs.com/server-charts/stable
kubectl create namespace cattle-system

kubectl apply --validate=false -f https://github.com/jetstack/cert-manager/releases/download/v1.3.1/cert-manager.crds.yaml

kubectl create namespace cert-manager
# 添加 Jetstack Helm 仓库
helm repo add jetstack https://charts.jetstack.io
# 更新本地 Helm chart 仓库缓存
helm repo update
# 安装 cert-manager Helm chart
helm install \
 cert-manager jetstack/cert-manager \
 --namespace cert-manager \
 --version v1.3.1

#kubectl delete namespace cert-manager

#安装完 cert-manager 后,您可以通过检查 cert-manager 命名空间中正在运行的 Pod 来验证它是否已正确部署:
kubectl get pods --namespace cert-manager

`NAME READY STATUS RESTARTS AGE`
`cert-manager-5c6866597-zw7kh 1/1 Running 0 2m`
`cert-manager-cainjector-577f6d9fd7-tr77l 1/1 Running 0 2m`
`cert-manager-webhook-787858fcdb-nlzsq 1/1 Running 0 2m`

helm install rancher rancher-stable/rancher \
 --version 2.5.8 \
 --namespace cattle-system \
 --set hostname=ra


// 暂未确认结束

重启 K3s

systemd

手动重启 k3s server:

sudo systemctl restart k3s

手动重启 k3s agent:

sudo systemctl restart k3s-agent

卸载

要从 server 节点卸载 K3s,请运行:

/usr/local/bin/k3s-uninstall.sh

要从 agent 节点卸载 K3s,请运行:

/usr/local/bin/k3s-agent-uninstall.sh

Docker 部署rancher ks3

主机名 ip 作用
k3ss 192.168.56.160 k3s 主节点 rancher管理平台
k3sa 192.168.56.161 k3s 工作节点

docker 作为容器 k3ss节点

多张网卡指定一个网卡地址 INSTALL_K3S_EXEC=”–advertise-address 192.168.56.160″

curl https://releases.rancher.com/install-docker/19.03.sh | sh

curl https://releases.rancher.com/install-docker/19.03.sh | sh
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION="v1.20.7+k3s1" INSTALL_K3S_EXEC="--docker --advertise-address 192.168.56.160" sh -

在k3ss 获取token

cat  /var/lib/rancher/k3s/server/node-token

k3sa节点

可以使用以下方法加速安装:

curl https://releases.rancher.com/install-docker/19.03.sh | sh

curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_VERSION="v1.20.7+k3s1" INSTALL_K3S_EXEC="--docker --node-ip 192.168.56.161" K3S_URL=https://192.168.56.160:6443 K3S_TOKEN=K101f342d196240d1c4b0610003a2c7c9e288f5875537de3a6aee6f887a7ac31d9c::server:dda1e16d88ad7cf1792d1feb9979df60 sh -

部署rancher

docker run -d --restart=unless-stopped -p 8080:80 -p 8443:443 -v /opt/rancher:/var/lib/rancher --privileged rancher/rancher:v2.5.7

启用集群监控

作为系统管理员集群所有者,您可以通过配置来监控您的 Kubernetes 集群。

先决条件: 如果需要启用 node-exporter 的话,请确保放行在内网中每个节点的 9796 端口的流量,因为 Prometheus 将从此处抓取节点指标。

  1. 全局页面中导航到您想要配置的集群。
  2. 在导航栏中下拉工具,选择监控
  3. 查看资源消耗建议,以确保您有足够的资源用于 Prometheus 及其相关组件。根据需要,配置 Prometheus 选项
  4. 单击启动

结果:将部署 Prometheus 服务以及两个监控应用商店应用。这两个监控应用商店应用是cluster-monitoringmonitoring-operator,它们会被添加到集群的系统(System)项目中。当这两个应用处于Active后,您可以通过 Rancher 集群仪表盘开始查看集群指标或直接从 Grafana中查看。

Grafana 实例的默认用户名和密码为 “admin/admin”。然而,Grafana 仪表板是通过 Rancher 认证代理提供服务的,因此只有当前通过认证进入 Rancher 服务器的用户才能访问 Grafana 仪表板

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WoIQ9kYF-1621911986491)(imgs/image-20210525093313048.png)]

离线部署

概述

离线安装的过程主要分为以下两个步骤:

步骤 1:部署镜像,本文提供了两种部署方式,分别是部署私有镜像仓库手动部署镜像。请在这两种方式中选择一种执行。

步骤 2:安装 K3s,本文提供了两种安装方式,分别是单节点安装高可用安装。完成镜像部署后,请在这两种方式中选择一种执行。

离线升级 K3s 版本:完成离线安装 K3s 后,您还可以通过脚本升级 K3s 版本,或启用自动升级功能,以保持离线环境中的 K3s 版本与最新的 K3s 版本同步。

请按照下文的操作指导进行离线安装和升级。

部署私有镜像仓库

前提条件

本文档假设您已经在离线环境中创建了节点,并且在您的堡垒机上有一个 Docker 私有镜像仓库。

如果你还没有建立私有的 Docker 镜像仓库,请参考Docker 官方文档建立私有的 Docker 镜像仓库。

安装docker(在线安装docke)

创建镜像仓库 YAML

请按照私有镜像仓库配置指南 创建并配置registry.yaml文件。

完成后,现在可以转到下面的安装 K3s部分,开始安装 K3s。

手动部署镜像

前提条件

我们假设您已经在离线环境中创建了节点。这种方法需要您手动将必要的镜像部署到每个节点,适用于运行无法部署镜像仓库的边缘部署场景。

操作步骤

请按照以下步骤准备镜像目录和 K3s 二进制文件。

  1. K3s GitHub Release页面获取你所运行的 K3s 版本的镜像 tar 文件。

  2. 将 tar 文件放在images目录下,例如:

    sudo mkdir -p /var/lib/rancher/k3s/agent/images/
    sudo cp ./k3s-airgap-images-amd64.tar /var/lib/rancher/k3s/agent/images/
    docker load < k3s-airgap-images-amd64.tar
    
  3. 将 k3s 二进制文件放在 /usr/local/bin/k3s路径下,并确保拥有可执行权限。完成后,现在可以转到下面的安装 K3s部分,开始安装 K3s。

cd /usr/local/bin
//赋予文件可执行权限
chmod +x install.sh  
//赋予文件可执行权限
chmod +x k3s 

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EksCmL2V-1621826531875)(imgs/image-20210520114701415.png)]

安装 K3s

前提条件

只有在完成上述部署私有镜像仓库手动部署镜像后,才能安装 K3s。

操作步骤

  1. K3s GitHub Release页面获取 K3s 二进制文件,K3s 二进制文件需要与离线镜像的版本匹配。
  2. 获取 K3s 安装脚本:https://get.k3s.io。或者 http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh
  3. 将二进制文件放在每个节点的/usr/local/bin中,并确保拥有可执行权限。将安装脚本放在每个节点的任意位置,并将其命名为install.sh

安装选项

您可以在离线环境中执行单节点安装,在一个 server(节点)上安装 K3s,或高可用安装,在多个 server(节点)上安装 K3s。

cd /usr/local/bin
//赋予文件可执行权限
chmod +x install.sh  
//赋予文件可执行权限
chmod +x k3s 
 yum install -y  k3s-selinux-0.2-1.el7_8.noarch.rpm

单节点安装

  1. 在 server 节点上运行以下命令:

    INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_EXEC="--advertise-address 192.168.56.160"  ./install.sh
    

    报错

在这里插入图片描述

安装依赖(下载 https://rpm.rancher.io/k3s/stable/common/centos/7/noarch/k3s-selinux-0.2-1.el7_8.noarch.rpm)

 yum install -y  k3s-selinux-0.2-1.el7_8.noarch.rpm

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0l7evtSS-1621826531877)(imgs/image-20210520141713092.png)]

  1. 然后,要选择添加其他 agent,请在每个 agent 节点上执行以下操作。注意将 myserver 替换为 server 的 IP 或有效的 DNS,并将 mynodetoken 替换 server 节点的 token,通常在/var/lib/rancher/k3s/server/node-token

    INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL=https://myserver:6443 K3S_TOKEN=mynodetoken ./install.sh
    

    报错

    在这里插入图片描述

    安装依赖(下载 https://rpm.rancher.io/k3s/stable/common/centos/7/noarch/k3s-selinux-0.2-1.el7_8.noarch.rpm)

     yum install -y  k3s-selinux-0.2-1.el7_8.noarch.rpm
    
INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_EXEC="--node-ip 192.168.56.161" K3S_URL=https://192.168.56.160:6443 K3S_TOKEN=K1099a66ce47d9473c8f41c7b578b8324d0ae735897f1a06be08187d363df807d05::server:be48e82653e10c679b23862ca22da576 ./install.sh

高可用安装

主机名 ip
k3ss1 192.168.56.160
k3ss2 192.168.56.161
k3sa1 192.168.56.163
k3sa2 192.168.56.164
k3sm 192.168.56.169

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8UjdvHwN-1621826531877)(imgs/image-20210521160533904.png)]

您需要调整安装命令,以便指定INSTALL_K3S_SKIP_DOWNLOAD=true并在本地运行安装脚本。您还将利用INSTALL_K3S_EXEC='args'为 k3s 提供其他参数。

例如,使用外部数据库实现高可用安装指南的第二步提到了以下内容:

curl -sfL https://get.k3s.io | sh -s - server \
 --datastore-endpoint="mysql://username:password@tcp(hostname:3306)/database-name"

由于在离线环境中无法使用curl命令进行安装,所以您需要参考以下示例,将这条命令行修改为离线安装:

INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_EXEC='server --datastore-endpoint=mysql://username:password@tcp(hostname:3306)/database-name' ./install.sh
systemctl disable firewalld --now

cat /var/lib/rancher/k3s/server/node-token

测试高可用代码 

curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn  NSTALL_K3S_VERSION="v1.20.7+k3s1"  INSTALL_K3S_EXEC='server --advertise-address 192.168.56.161 --datastore-endpoint=mysql://root:Cobbler1234!@tcp(192.168.0.229:43306)/k3sdata' sh -



curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn INSTALL_K3S_EXEC="--node-ip 192.168.56.163" INSTALL_K3S_VERSION="v1.20.7+k3s1"  K3S_URL=https://192.168.56.169:6443 K3S_TOKEN=K10b3c6c50e92650f1fec20d757d5231d33a3c217e403fb5442e36a72a13b53ecf2::server:a2c84481af547f730ac89a9bce234768  sh -

k3ss1

INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_EXEC='server --advertise-address 192.168.56.160 --datastore-endpoint=mysql://root:Cobbler1234!@tcp(192.168.0.229:43306)/k3sdata' ./install.sh

k3ss2

INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_EXEC='server --advertise-address 192.168.56.161 --datastore-endpoint=mysql://root:Cobbler1234!@tcp(192.168.0.229:43306)/k3sdata' ./install.sh

k3ss3

INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_EXEC='server --advertise-address 192.168.56.162 --datastore-endpoint=mysql://root:Cobbler1234!@tcp(192.168.0.229:43306)/k3sdata' ./install.sh

k3sm

error_log stderr notice;
worker_processes auto;
events { 
   
    multi_accept on;
    worker_connections 1024;
}
stream { 
   
    upstream kube_apiserver { 
   
		server 192.168.56.160:6443;
		server 192.168.56.161:6443;
        server 192.168.56.162:6443;
    }
    server { 
   
        listen 6443;
        proxy_pass kube_apiserver;
        proxy_timeout 30;
        proxy_connect_timeout 2s;
    }
}     

docker run –name k3sproxy -p 6443:6443 -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx:1.17

k3sa1

INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_EXEC="--node-ip 192.168.56.163" K3S_URL=https://192.168.56.169:6443 K3S_TOKEN=K10d09538969d21ab3fae92fa6e6930b3e664b0a40d1fcf60d2fb332fbc379a255d::server:d7a490730be1bbb9a69ace45bea38955 ./install.sh
注意

K3s 还为 kubelets 提供了一个--resolv-conf标志,这可能有助于在离线网络中配置 DNS。

启用自动升级功能

除了可以通过脚本升级 K3s 以外,您还可以启用自动升级功能,以保持离线环境中的 K3s 版本与最新的 K3s 版本同步。

v1.17.4+k3s1 开始,K3s 支持自动升级。要在离线环境中启用此功能,您必须确保所需镜像在您的私有镜像仓库中可用。

  1. 你将需要与你打算升级到的 K3s 版本相对应的 rancher/k3s-upgrade 版本。注意,镜像标签将 K3s 版本中的+替换为-,因为 Docker 镜像不支持+

  2. 你还需要在你要部署的system-upgrad-controller manifestYAML 中指定的 system-upgrad-controllerkubectl的版本。在这里检查 system-upgrad-controller 的最新版本,并下载 system-upgrad-controller.yaml来确定你需要推送到私有镜像仓库的版本。例如,在system-upgrade-controller的 v0.4.0 版本中,在 manifest YAML 中指定了这些镜像:

    rancher/system-upgrade-controller:v0.4.0
    rancher/kubectl:v0.17.0
    
  3. 将必要的 rancher/k3s-upgrade、rancher/system-upgrade-controller 和 rancher/kubectl 镜像添加到您的私有镜像仓库中以后 ,就可以按照K3s 自动升级指南进行操作。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/10094.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注