k3s 部署 rancher- 高可用架构

本贴最后更新于 348 天前,其中的信息可能已经时移世异

docker 环境安装

- 查看是否安装了 Podman
CentOS Linux release 8.1.1911 系统,安装 docker 环境的时候报错
file /usr/share/man/man1/docker-attach.1.gz from install of docker-ce-cli-1:19.03.6-3.el7.x86_64 conflicts with file from package podman-manpages-1.4.2-5.module_el8.1.0+237+63e26edc.noarch

所以我这里写先查询是否安装了 Podman

  1. [root@localhost ~]# rpm -q podman
    podman-1.4.2-5.module_el8.1.0+237+63e26edc.x86_64
  2. 卸载 Podman
    dnf remove podman

- 安装 docker 环境

  1. sudo yum install -y yum-utils device-mapper-persistent-data lvm2
  2. sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  3. 安装 docker
    centos 8.* 后面加 ‘—allowerasing’
    sudo yum install docker-ce
  4. 设置 docker 自启动
    sudo systemctl enable docker
  5. 启动 docker
    sudo systemctl start docker

- 更改路径

  1. 停止 docker 服务。
    systemctl stop docker; //每个 liunx 版本的命令不一样
  2. 创建新的 docker 目录,执行命令 df
    -h,找一个大的磁盘。我在/data 目录下面建了 /data/docker/lib 目录,执行的命令是:
    mkdir -p /data/docker/lib
  3. 迁移/var/lib/docker 目录下面的文件到 /data/docker/lib 下面
    cp -R /var/lib/docker/* /data/docker/lib/
  4. 修改 docker 配置 3. 修改 docker 的 systemd 的 docker.service 的配置文件
    不知道 配置文件在哪里可以使用 systemd 命令显示一下.
    systemctl disable docker
    systemctl enable docker
  5. 显示结果
    Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
  6. 修改 docker.service 文件.
    vi /usr/lib/systemd/system/docker.service
    在里面的 EXECStart 的后面增加后如下:
    查找 ExecStart=
    添加 —graph /data/docker/lib 到该行最后。
    sudo systemctl daemon-reload
    sudo systemctl restart docker

K3S 部署

  1. 确定 k3s 的版本
export INSTALL_K3S_VERSION=v1.20.11+k3s2
  1. 链接数据库和 kubectl 环境,用 docker 的方式运行容器
export INSTALL_K3S_EXEC="--datastore-endpoint=mysql://k3s_rancher:@#H390xh@tcp(10.17.2.132:3306)/k3s_rancher --docker --kube-apiserver-arg service-node-port-range=1-65000 --no-deploy traefik --write-kubeconfig  ~/.kube/config --write-kubeconfig-mode 666"

**PS:**第二个 master 节点需要安装 token 环境变量

cat /var/lib/rancher/k3s/server/node-token
export K3S_TOKEN=*****
  1. 下载配置文件且自动安装
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -

Kubectl 安装

  • 安装
  1. 下载 kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
  1. 使 kubectl 二进制可执行文件
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
  1. 验证
kubectl version --client
  • 命令
  1. 创建别名
    在~.bashrc 或类似文件中:alias k=kubectl
    **PS:**效果等同于在 xshell 中输入 kubectl
  2. k8s 命令自动补全
yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc

K3S 图形化界面

  1. 安装 kuboard
    kubectl apply -f https://kuboard.cn/install-script/kuboard.yaml
  2. 获取 token
    1)管理员 token 获取方法
    echo $(kubectl -n kube-system get secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d)
    2)普通用户 token 获取方法
    kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kuboard-viewer | awk '{print $1}')
  3. 暴露 kuboard 的端口号
    kubectl get svc -n kube-system
  4. nodeip 地址加端口号进行访问

http://192.188.1.1:32567/login

证书部署

**ps:**正式环境用了权威的证书(apache)

  1. 新证书安装
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
kubectl --kubeconfig=$kubeconfig create namespace cattle-system
kubectl --kubeconfig=$kubeconfig \
    -n cattle-system create \
    secret tls tls-rancher-ingress \
    --cert=./tls.crt \
    --key=./tls.key

阿里云上获取

  1. 证书替换
    1)卸载证书
kubectl -n cattle-system delete secret tls-rancher-ingress

2)安装证书

kubectl -n cattle-system create secret tls tls-rancher-ingress \
  --cert=tls.crt \
  --key=tls.key

helm 安装 rancher

helm 安装

  1. 下载
    wget https://get.helm.sh/helm-v3.6.0-linux-amd64.tar.gz
  2. 解压
    tar zxvf helm-v3.6.0-linux-amd64.tar.gz
  3. 将二进制文件移动至/usr/local/bin/
    sudo mv linux-amd64/helm /usr/local/bin/helm
  4. 验证安装
    helm help

helm 部署 rancher

  1. 使用 helm repo add 来添加仓库,不同的地址适应不同的 Rancher 版本,请替换命令中的 <CHART_REPO>,替换为 latest,stable 或 alpha。
    latest: 最新版,建议在尝试新功能时使用。
    stable:稳定版,建议生产环境中使用。
    alpha:预览版, 未来版本的实验性预览。
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
  1. 给.kube/config 授权
chmod g-r ~/.kube/config
chmod o-r ~/.kube/config
  1. 下载 rancher 包
helm fetch rancher-stable/rancher --version=v2.5.11
  1. 使用已有证书渲染的 Rancher Helm 模板
helm template rancher ./rancher-2.5.11.tgz --output-dir . \
--no-hooks \
--namespace cattle-system \
--set hostname=hwrancher.inm.cc \
--set rancherImage=registry.cn-hangzhou.aliyuncs.com/rancher/rancher \
--set tls=external \
--set ingress.tls.source=secret \
--set useBundledSystemChart=true
  1. 安装 rancher
kubectl create namespace cattle-system
kubectl -n cattle-system apply -R -f ./rancher
  • 命令
kubectl get ingress -A
kubectl get pods -A
kubectl get svc -A
kubectl get deploy -A
kubectl -n cattle-system rollout status deploy/rancher
kubectl -n cattle-system get deploy rancher

helm 报错

  1. WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /root/.kube/config
    WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /root/.kube/config
    
解决方法
```shell
chmod g-r ~/.kube/config
chmod o-r ~/.kube/config
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    492 引用 • 926 回帖
  • Rancher
    3 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...