ubuntu16.04搭建Rangcher步骤

由于最近项目涉及服务运维,包括对项目的性能指标监控等方面,
而项目的多个服务共同部署在K8S集群中,经过多方面考虑使用Racnher用于管理K8S集群。
首先Rancher搭建步骤如下

搭建环境参考文档:
https://rancher.com/docs/rke/latest/en/managing-clusters/
Ranchar 2.x 中文文档:https://www.cnrancher.com/docs/rancher/v2.x/cn/installation/ha-install/
Ranchar 2.x 英文文档:
https://rancher.com/docs/rancher/v2.x/en/
注意:看中文文档的内容,用英文文档的命令更方便一点。
Ranchar 2.0 部署问题汇总:https://mp.weixin.qq.com/s/F6s6W3W9uYoFvfjBlRIt9g
部署Kubernetes要点:https://blog.51cto.com/10321203/2071396
操作系统:centos7.6(乌邦图会更好一点)
集群部署方案:HA部署:一个master(负载均衡)节点,三个节点的k8s集群
每个节点配置:4核,8g内存,40g硬盘
节点配置要求详见官方文档:https://www.cnrancher.com/docs/rancher/v2.x/cn/install-prepare/requirements/

以下所有命令全部使用root用户执行

Ranchar搭建步骤:

0为新建用户添加管理员权限(ubuntu不需要)

visudo
在root ALL=(ALL) ALL 这行下添加 用户名
ALL=(ALL) ALL
保存退出。

1绑定静态IP(Ubuntu不需要修改)

cd /etc/sysconfig/network-scripts
ls
第一个就是配置文件
gedit /etc/sysconfig/network-scripts/ifcfg-ens18
修改如下选项

添加下述选项

我这GATEWAY和DNS1写错了,应该是下图的默认网关
重启服务:
service network restart
本机上ipconfig:

2安装docker(注意版本适配)

http://www.runoob.com/docker/centos-docker-install.html
安装版本:18.09.4
配置docker开机自启:
sudo systemctl enable docker
Ubuntu安装指南:

(1)修改系统源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak cat > /etc/apt/sources.list << EOF deb http://mirrors.aliyun.com/ubuntu/ xenial main deb-src http://mirrors.aliyun.com/ubuntu/ xenial main deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main deb http://mirrors.aliyun.com/ubuntu/ xenial universe deb-src http://mirrors.aliyun.com/ubuntu/ xenial universe deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates universe deb http://mirrors.aliyun.com/ubuntu/ xenial-security main deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security universe EOF

(2)Docker-ce安装(此处安装docker18.09.4)注意rancher和docker的版本搭配

定义安装版本

export docker_version=18.09.4

step 1: 安装必要的一些系统工具

sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common bash-completion

step 2: 安装GPG证书

sudo curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

Step 3: 写入软件源信息

sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

Step 4: 更新并安装 Docker-CE

sudo apt-get -y update version=$(apt-cache madison docker-ce|grep ${docker_version}|awk '{print $3}')

–allow-downgrades 允许降级安装

sudo apt-get -y install docker-ce=${version} --allow-downgrades

设置开机启动

sudo systemctl enable docker

Docker安装完成后修改docker的镜像源

添加文件/etc/docker/daemon.json
{ "registry-mirrors": ["https://z34wtdhg.mirror.aliyuncs.com"], "insecure-registries":["harbor.httpshop.com","bh-harbor.suixingpay.com"], "storage-driver": "overlay2", "storage-opts": ["overlay2.override_kernel_check=true"] } { "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "3" } }
sudo systemctl restart docker

3关闭 selinux(ubuntu不需要)

sudo vim /etc/sysconfig/selinux
设置SELINUX=disabled,重启生效

4 IPV4转发

cat >> /etc/sysctl.conf<
执行sudo sysctl -p立刻生效
会报如下错:

解决办法:sudo modprobe br_netfilter ls /proc/sys/net/bridge
再次执行sudo sysctl –p立刻生效

5防火墙(ubuntu运行命令 ufw disable即可)

查看防火墙状态:
firewall-cmd --state
停止防火墙:
systemctl stop firewalld
禁止防火墙开机启动:
systemctl disable firewalld.service
备注:如果不想关闭防火墙,需要开启的端口配置详见:https://www.cnrancher.com/docs/rancher/v2.x/en/installation/references/

6禁用SWAP

vim /etc/fstab
注释掉包含swap的所有项

7启用Cgroup

vim /etc/default/grub
配置:
GRUB_CMDLINE_LINUX_DEFAULT="cgroup_enable=memory swapaccount=1"
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
重启

8 RKE部署用户

由于红帽系系统bug, 无法将root用户用做ssh用户,需要对docker进行非root用户身份管理Docker的设置,操作步骤见https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user 或者
https://blog.51cto.com/10321203/2071396 中的 RKE部署用户.
Ubuntu直接使用root用户部署,此步骤跳过。

9加载内核模块

#modprobe -a br_netfilter ip6_udp_tunnel ip_set ip_set_hash_ip ip_set_hash_net iptable_filter iptable_nat iptable_mangle iptable_raw nf_conntrack_netlink nf_conntrack nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat nf_nat_ipv4 nf_nat_masquerade_ipv4 nfnetlink udp_tunnel VETH VXLAN x_tables xt_addrtype xt_conntrack xt_comment xt_mark xt_multiport xt_nat xt_recent xt_set xt_statistic xt_tcpudp
会有两个模块找不到:(没事。。。)

10配置主机时间、时区、系统语言

修改时区;
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改系统语言环境:
sudo echo 'LANG="C.UTF-8"' >> /etc/profile;source /etc/profile

11配置master到各节点的ssh无密码登录

克隆3个新节点
对于每个复制的节点,修改IP地址,重复10操作
gedit /etc/sysconfig/network-scripts/ifcfg-ens18
重启服务:
service network restart
对每个节点修改主机名:(只允许包含-和.)
vim /etc/hostname

在master节点上修改(k8s节点也要有配置自己主机名,IP映射)
vim /etc/hosts
包含到各节点的IP

配置到各节点的ssh无密登录
ssh-keygen
ssh-copy-id -i .ssh/id_rsa.pub [email protected]
$user是该IP执行docker命令的用户

如果在ssh连接的时候,报如下错:
The authenticity of host 192.168.0.xxx can’t be established
解决办法:
ssh -o StrictHostKeyChecking=no 192.168.0.xxx
或者修改配置文件:
vim /etc/ssh/ssh_config
最后添加:
StrictHostKeyChecking no
UserKnownHostsFile /dev/null

----------------------------rke节点----------------------------------------

12安装和配置kubectl

Kubectl下载地址:
https://storage.googleapis.com/kubernetes-release/release/v1.14.0/bin/linux/amd64/kubectl
通过访问https://storage.googleapis.com/kubernetes-release/release/stable.txt可以获得最新的版本号。下载好后上传到节点。
给文件可执行权限:
chmod +x ./kubectl
设置全局访问:
mv ./kubectl /usr/local/bin/kubectl

13安装NGINX

Ubuntu安装方法:
修改apt源文件/etc/apt/sources.list.d/nginx.list.
deb http://nginx.org/packages/ubuntu/ xenial nginx
deb-src http://nginx.org/packages/ubuntu/ xenial nginx

sudo apt-get update
sudo apt-get install nginx

修改nginx配置文件/etc/nginx/nginx.conf的全部内容,修改后文件内容如下

worker_processes 4;
worker_rlimit_nofile 40000;

events {
    worker_connections 8192;
} 

stream {
upstream rancher_servers_http {
    least_conn;
    server :80 max_fails=3 fail_timeout=5s;
    server :80 max_fails=3 fail_timeout=5s;
    server :80 max_fails=3 fail_timeout=5s;
}
server {
    listen     80;
    proxy_pass rancher_servers_http;
}

upstream rancher_servers_https {
    least_conn;
    server :443 max_fails=3 fail_timeout=5s;
    server :443 max_fails=3 fail_timeout=5s;
    server :443 max_fails=3 fail_timeout=5s;
}
server {
    listen     443;
    proxy_pass rancher_servers_https;
}
}

重新加载配置文件
nginx -s reload

Centos安装方法:
注意:安装kubectl后可能导致yum源更改为国外站点,无法下载,解决办法:
修改该文件名:/etc/yum.repos.d/kubernetes.repo,改成kubernetes.repo_bak即可
前置安装:nginx 的 http 模块使用 pcre 来解析正则表达式:
yum install -y pcre pcre-devel
nginx 使用 zlib 对 http 包的内容进行 gzip:
yum install -y zlib zlib-devel
OpenSSL 安装:
yum install -y openssl openssl-devel
添加Nginx官方提供了Yum源:
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
安装:
sudo yum install -y nginx
启动Nginx并设置开机自动运行:
sudo systemctl start nginx.service
sudo systemctl enable nginx.service

14创建NGINX配置

worker_processes 4;
worker_rlimit_nofile 40000;
events {
worker_connections 8192;
}
stream {
upstream rancher_servers_http {
    least_conn;
    server :80 max_fails=3 fail_timeout=5s;
    server :80 max_fails=3 fail_timeout=5s;
    server :80 max_fails=3 fail_timeout=5s;
}
server {
    listen     80;
    proxy_pass rancher_servers_http;
}
upstream rancher_servers_https {
    least_conn;
    server :443 max_fails=3 fail_timeout=5s;
    server :443 max_fails=3 fail_timeout=5s;
    server :443 max_fails=3 fail_timeout=5s;
}
server {
    listen     443;
    proxy_pass rancher_servers_https;
}
}

两个命令:
/etc/nginx/nginx.conf
nginx -s reload

15安装配置rke,搭建k8s

rke下载地址:
https://github.com/rancher/rke/releases/tag/v0.2.1
上传到master节点
给刚下载的rke二进制文件添加可执行权限
$ chmod +x rke_linux-amd64
确认RKE是否是最新版本:
./rke_linux-amd64 --version
创建rancher-cluster.yml文件:(和rke在同一路径下)
编辑器打开 rancher-cluster.yml 文件,在nodes配置版块中,修改 IP_ADDRESS_X and USER为你真实的Linux主机IP和用户名,ssh_key_path为第一步生成的私钥文件,如果是在RKE所在主机上生成的公钥私钥对,此配置可保持默认:(每个节点的role可以自行配置)

nodes:
  -	 address: 192.168.11.71
    user: root
	role: [controlplane,worker,etcd]
  - address: 192.168.11.72
	 #internal_address: 192.168.100.1
	user: root
	role: [controlplane,worker,etcd]
  - address: 192.168.11.73
    user: root
	role: [controlplane,worker,etcd]
	services:
etcd
snapshot: true
creation: 6h
retention: 24h

运行rke命令:
./rke_linux-amd64 up --config rancher-cluster.yml
完成后,成功如下图:

16测试集群

K8s安装成功后,rke会在当前目录下创建一个文件kube_config_rancher-cluster.yml。这个文件包含kubectl和helm访问K8S的凭据。
您可以将此文件复制到 $ HOME/.kube/config,
或者如果你正在使用多个Kubernetes集群,请将KUBECONFIG环境变量设置为kube_config_rancher-cluster.yml文件路径:
export KUBECONFIG=$(pwd)/kube_config_rancher-cluster.yml
通过kubectl测试您的连接,并查看您的所有节点是否处于Ready状态。

$ mkdir .kube
$ cp kube_config_rancher-cluster.yml  $HOME/.kube/config
$ kubectl get nodes

检查集群Pod的运行状况:

$ kubectl get pods --all-namespaces

17 安装配置helm

中文官方文档:
https://www.cnrancher.com/docs/rancher/v2.x/cn/installation/ha-install/helm-rancher/tcp-l4/helm-install/#top
英文官方文档:
https://rancher.com/docs/rancher/v2.x/en/installation/ha/helm-init/
下载helm客户端的二进制包:
https://www.cnrancher.com/docs/rancher/v2.x/cn/install-prepare/download/#helm
上传到master节点,解压缩:
tar -zxvf helm-linux.tar.gz
移动到所需位置:
$ sudo mv linux-amd64/helm /usr/local/bin/
添加执行权限:
chmod +x /usr/local/bin/helm
运行客户端:
helm version

下面安装helm的服务端(Tiller)

kubectl -n kube-system create serviceaccount tiller
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller

注意此时的tiller版本应该与helm版本一致,此处都为2.13.1
helm init --service-account tiller --tiller-image registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.13.1 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

Tiller安装完后,验证:helm version

可以用kubectl get pods -n kube-system查看pod装状态

备注:如果有pod状态不对,可以用kubectl describe pod tiller-deploy-6f6fd74b68-rkk5w(podname) -n kube-system查看pod事件。

18 使用helm安装ranchar

添加图表仓库地址:
helm repo add rancher-latest https://releases.rancher.com/server-charts/latest
安装证书管理器;

helm install stable/cert-manager \
--name cert-manager \
--namespace kube-system

安装ranchar:(hostname为自己的master主机名)

helm install rancher-latest/rancher \
--name rancher \
--namespace cattle-system \
--set hostname=rancher-01

安装完成打开浏览器访问它给的这个地址:

由于证书配置未成功等原因,需要先为访问的主机修改hosts。才能在内网访问。
访问时需要为访问的主机的hosts添加rancher-01对应的ip号。

浏览器登陆后会让你设置一个admin用户的登录密码,然后设置Rancher Server URL为master节点的ip,进去之后的界面如下图:(创建的k8s集群会自动导入进来,状态可能要等一会才会变成active)

至此,使用RKE已经成功安装完成k8s集群,并使用rancher管理集群,使用由于本教程通过RKE安装HA高可用集群,不提倡直接使用rancher建立新的集群。

-----------通过REK扩充/删减集群节点方法如下---------------

使用RKE对现有集群进行扩容/删减

前提条件:

新加入的机器已经安装好了相应版本的docker,这里的docker版本为18.09.4
(1)在rke节点配置好新加入节点的ssh免密登陆(步骤11)
(2)在rke节点修改rancher-cluster.yml文件,加入需要添加的节点,以及节点的角色

nodes:
- address: 192.168.11.71
 	user: root
    role: [controlplane,worker,etcd]
- address: 192.168.11.72
	user: root
    role: [controlplane,worker,etcd]
- address: 192.168.11.73
    user: root
    role: [controlplane,worker,etcd]
- address: 192.168.11.74
    user: root
	role: [controlplane,worker,etcd]
- address: 192.168.11.79
    user: root
    role: [controlplane,worker,etcd]

services:
  etcd:
    snapshot: true
    creation: 6h
    retention: 24h

(3)rke运行命令
rke up --update-only --config rancher-cluster.yml
稍等片刻后集群扩容成功。

同理,将节点删除时,需要去掉配置文件中的信息,继续运行命令,最后再将节点上的运行的docker停止并删除。

多次部署的环境残留问题,在部署前使用以下命令:

df -h|grep kubelet |awk -F % '{print $2}'|xargs umount 
rm /var/lib/kubelet/* -rf
rm /etc/kubernetes/* -rf
rm /var/lib/rancher/* -rf
rm /var/lib/etcd/* -rf
rm /var/lib/cni/* -rf
iptables -F && iptables -t nat –F
ip link del flannel.1
docker ps -a|awk '{print $1}'|xargs docker rm -f
docker volume ls|awk '{print $2}'|xargs docker volume rm

更换yum源
备份:
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak
获取阿里yum源配置文件:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
更新cache:
yum makecache

你可能感兴趣的:(服务运维)