Rancher 运维 - 从零开始学习 | RKE部署K8S | 容器管理

Posted serendipity_cat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Rancher 运维 - 从零开始学习 | RKE部署K8S | 容器管理相关的知识,希望对你有一定的参考价值。

一、概述

Rancher是一款开源的企业级容器管理平台

功能:

① 基础设施编排

Rancher提供一套灵活的基础设施服务,并通过容器部署

② 容器编排与调度

能够适应当前全部主流的编排调度引擎,Rancher通过自身的Cattle容器编排调度引擎编排自己的基础设施服务及其他集群的配置管理与升级

③ 应用商店

可以提供一键部署由多个容器组成的服务,用户可以管理这个部署的应用并在有更新时进行自动化的升级,除了私有应用商店外也可以使用Rancher社区提供的应用商店

④ 企业级权限管理

Rancher支持灵活的插件式的用户认证。支持Active Directory,LDAP, Github等 认证方式。 Rancher支持在环境级别的基于角色的访问控制 (RBAC),可以通过角色来配置某个用户或者用户组对开发环境或者生产环境的访问权限

二、RKE

RKE是一款非常简单,运行速度快的Kubernetes安装程序,支持各种运行平台

① REK1 和 RKE2 的区别

RKE1 依赖 Docker,通过Docker来部署和管理控制平面组件及K8S的容器运行时间

RKE2 不依赖于 Docker,它将控制平面组件作为静态pod启动,由kubelet进行管理

三、RKE1 部署 K8S

节点名IP地址部署服务
node1192.168.0.10K8S-Master
node2192.168.0.20K8S-Node1
node3192.168.0.30K8S-Node2
rancher192.168.0.40rancher-RKE

1.1 基础环境部署

① SSH用户必须是节点上docker用户组的成员

groupadd docker && usermod -aG docker <UserName>
给予普通用户sudo权限
visudo
#102行增加
fox ALL=(ALL) ALL

② 禁用交换功能(Swap)

swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab  
cat <<EOF >  /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system

③ 修改主机名[可选]

hostnamectl set-hostname <hostname>

④ 配置互相

cat >> /etc/hosts << EOF
192.168.0.10 node1
192.168.0.20 node2
192.168.0.30 node3
192.168.0.40 rancher
EOF

因为需要以普通用户执行,所以先进入其宿主目录
cd /home/<UserNmae>
su <UserNmae>
mkdir ./ssh

ssh-keygen
ssh-copy-id <UserName>@<HostName>
chown -R /home/<UserNmae>
chmod 700 /home/<UserNmae>/.ssh
chmod 600 /home/<UserNmae>/.ssh/authorized_keys

⑤ 启用IPVS模块

yum install ipset ipvsadm -y

cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF

chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4

⑥ 安装 DockerCE [node节点]

部署教程

⑦ 关闭防火墙

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

vim /etc/sysconfig/selinux 
SELINUX=disabled

⑧ 配置时间同步

yum install -y chrony
systemctl enable --now chronyd

timedatectl set-timezone Asia/Shanghai

1.2 部署 K8S [rancher节点]

官方项目地址:https://github.com/rancher/rke/releases

cd /home/<UserName>

此下载链接为国内加速链接,非官方链接,可能存在风险,生产环境不推荐使用
wget https://download.fastgit.org/rancher/rke/releases/download/v1.2.11/rke_linux-amd64

mv rke_linux-amd64 rke && chmod +x rke

① 生成配置文件

./rke config

②启动集群

./rke up


启动完成后会产生三个文件 [官方原文]

  • cluster.yml:RKE 集群的配置文件
  • kube_config_cluster.yml:该集群的Kubeconfig 文件包含了获取该集群所有权限的认证凭据
  • cluster.rkestate:Kubernetes 集群状态文件,包含了获取该集群所有权限的认证凭据,使用 RKE v0.2.0时才会创建这个文件

③ 安装Kubectl

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

yum install -y kubectl

mkdir ~/.kube
cp kube_config_cluster.yml ~/.kube/config
echo "export KUBECONFIG=/home/fox/.kube/config" >> /etc/profile

source /etc/profile

④ 验证

kubectl get no,cs -o wide

1.3 安装 Rancher [rancher节点]

① 部署 Helm

官方下载地址https://github.com/helm/helm/releases

此下载链接为国内加速链接,非官方链接,可能存在风险,生产环境不推荐使用
wget https://get.helm.sh/helm-v3.6.3-linux-amd64.tar.gz

tar -zxvf helm-v3.6.3-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/

helm version

② 部署 Ingress nginx

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx

helm install ingress-nginx ingress-nginx/ingress-nginx \\
  --namespace ingress-nginx \\
  --create-namespace \\
  --set controller.image.repository=giantswarm/ingress-nginx-controller \\
  --set controller.image.tag=v0.45.0 \\
  --set controller.image.digest=null \\
  --set controller.service.type=NodePort
  
kubectl -n ingress-nginx get pods,svc

③ 部署 rancher

helm repo add rancher-latest https://releases.rancher.com/server-charts/latest

此下载链接为国内加速链接,非官方链接,可能存在风险,生产环境不推荐使用
kubectl apply --validate=false -f https://hub.fastgit.org/jetstack/cert-manager/releases/download/v0.15.0/cert-manager.crds.yaml

helm repo add jetstack https://charts.jetstack.io
helm repo update

helm install cert-manager \\
  --namespace cert-manager \\
  --create-namespace \\
  --version v0.15.0 \\
  jetstack/cert-manager

kubectl create namespace cattle-system
helm install rancher  \\
  --namespace cattle-system \\
  --set hostname=ranchercat.com \\
  --version 2.5.9 \\
  rancher-latest/rancher
  
kubectl get pods -A

以上是关于Rancher 运维 - 从零开始学习 | RKE部署K8S | 容器管理的主要内容,如果未能解决你的问题,请参考以下文章

Rancher 运维 - 从零开始学习 | RKE部署K8S | 容器管理

Rancher 运维 - 从零开始学习 | RKE部署K8S | 容器管理

如何使用国内资源在 RKE2 上安装 Rancher HA

Rancher RKE 集群备份与恢复

如何避免 Rancher RKE Reconcile 警告?

Rancher RKE K8s 集群 etcd 恢复