基礎環境配置
1、操作系統選擇
- Ubuntu 16.04(64位 Server版)
- Centos/RedHat Linux 7.5+(64位)
2、Docker版本選擇
- 1.12.6
- 1.13.1
- 17.03.2
3、主機名配置
因為K8S的規定,主機名只支持包含 -
和 .
(中橫線和點)兩種特殊符號,並且主機名不能出現重復。
4、配置Hosts
配置每台主機的hosts(/etc/hosts),添加host_ip $hostname
到/etc/hosts
文件中。
5、CentOS關閉selinux
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
6、關閉防火牆
關閉防火牆
1、Centos
systemctl stop firewalld.service && systemctl disable firewalld.service
2、Ubuntu
ufw disable
7、配置主機時間、時區、系統語言
查看時區
date -R 或者 timedatectl
修改時區
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
修改系統語言環境
sudo echo 'LANG="en_US.UTF-8"' >> /etc/profile;source /etc/profile
8、Kernel性能調優
cat >> /etc/sysctl.conf<<EOF net.ipv4.ip_forward=1 net.bridge.bridge-nf-call-iptables=1 net.ipv4.neigh.default.gc_thresh1=4096 net.ipv4.neigh.default.gc_thresh2=6144 net.ipv4.neigh.default.gc_thresh3=8192 EOF sysctl –p
Docker安裝配置
1、各系統的安裝方法
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 安裝
# 定義安裝版本 export docker_version=17.03.2 # 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
Centos 安裝方法
1、修改系統源
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak cat > /etc/yum.repos.d/CentOS-Base.repo << EOF [base] name=CentOS-$releasever - Base - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/ http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 #released updates [updates] name=CentOS-$releasever - Updates - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/updates/$basearch/ http://mirrors.cloud.aliyuncs.com/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/extras/$basearch/ http://mirrors.cloud.aliyuncs.com/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/centosplus/$basearch/ http://mirrors.cloud.aliyuncs.com/centos/$releasever/centosplus/$basearch/ gpgcheck=1 enabled=0 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 #contrib - packages by Centos Users [contrib] name=CentOS-$releasever - Contrib - mirrors.aliyun.com failovermethod=priority baseurl=http://mirrors.aliyun.com/centos/$releasever/contrib/$basearch/ http://mirrors.aliyuncs.com/centos/$releasever/contrib/$basearch/ http://mirrors.cloud.aliyuncs.com/centos/$releasever/contrib/$basearch/ gpgcheck=1 enabled=0 gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 EOF
2、安裝Docker-ce
# 添加用戶(可選) sudo adduser `<user>` # 為新用戶設置密碼 sudo passwd `<user>` # 為新用戶添加sudo權限 sudo echo '<user> ALL=(ALL) ALL' >> /etc/sudoers # 卸載舊版本Docker軟件 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine \ container* # 定義安裝版本 export docker_version=17.03.2 # step 1: 安裝必要的一些系統工具 sudo yum update -y sudo yum install -y yum-utils device-mapper-persistent-data lvm2 bash-completion # Step 2: 添加軟件源信息 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # Step 3: 更新並安裝 Docker-CE sudo yum makecache all version=$(yum list docker-ce.x86_64 --showduplicates | sort -r|grep ${docker_version}|awk '{print $2}') sudo yum -y install --setopt=obsoletes=0 docker-ce-${version} docker-ce-selinux-${version} # 如果已經安裝高版本Docker,可進行降級安裝(可選) yum downgrade --setopt=obsoletes=0 -y docker-ce-${version} docker-ce-selinux-${version} # 把當前用戶加入docker組 sudo usermod -aG docker `<new_user>` # 設置開機啟動 sudo systemctl enable docker
2、Docker配置
配置鏡像加速地址
可以配置多條,以數組的形式編寫,地址需要添加協議頭。編輯/etc/docker/daemon.json
加入以下內容
{ "registry-mirrors": ["https://z34wtdhg.mirror.aliyuncs.com","https://$IP:$PROT"] }
配置私有倉庫
Docker默認只信任TLS加密的倉庫地址(https),所有非https倉庫默認無法登陸也無法拉取鏡像。insecure-registries
字面意思為不安全的倉庫,通過添加這個參數對非https倉庫進行授信。可以設置多個insecure-registries
地址,以數組形式書寫,地址不能添加協議頭(http)。編輯/etc/docker/daemon.json
加入以下內容:
{ "insecure-registries":["harbor.httpshop.com","bh-harbor.suixingpay.com"] }
配置Docker存儲驅動
存儲驅動有很多種,例如:overlay、overlay2、devicemapper等,前兩者是OverlayFS類型的,是一個新一代的聯合文件系統,類似於AUFS,但速度更快,更加穩定。這里推薦新版的overlay2。
要求:
- overlay2: Linux內核版本4.0或更高版本,或使用內核版本3.10.0-514+的RHEL或CentOS
- 支持的磁盤文件系統:ext4(僅限RHEL 7.1),xfs(RHEL7.2及更高版本),需要啟用d_type=true
編輯/etc/docker/daemon.json
加入以下內容
{ "storage-driver": "overlay2", "storage-opts": ["overlay2.override_kernel_check=true"] }
配置日志驅動
容器在運行時會產生大量日志文件,很容易占滿磁盤空間。通過配置日志驅動來限制文件大小與文件的數量。 >限制單個日志文件為100M
,最多產生3
個日志文件
{ "log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "3" } }
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" } }
單節點安裝
使用默認自簽名證書
默認情況下,Rancher會自動生成一個用於加密的自簽名證書。從你的Linux主機運行Docker命令來安裝Rancher,而不需要任何其他參數:
docker run -d --restart=unless-stopped \ -p 80:80 -p 443:443 \ -v /root/var/log/auditlog:/var/log/auditlog \ -e AUDIT_LEVEL=3 \ rancher/rancher:latest
HA集群安裝
前提條件
- kubectl kubernetes客戶端工具
- rke 用於構建kubernetes集群
- helm kubernetes包管理工具
創建四層負載均衡器
我們將使用Nginx作為四層負載均衡器,Nginx會將所有的連接轉發到rancher節點之一。注意:不要使用任何rancher節點作為負載均衡器,會出現端口沖突。
1、安裝nginx
需要定制的話,就自己源碼安裝即可,這里就使用yum或者apt-get
yum install nginx
2、編制nginx配置文件
#復制下面的代碼到文本編輯器,保存為nginx.conf。 worker_processes 4; worker_rlimit_nofile 40000; events { worker_connections 8192; } http { server { listen 80; return 301 https://$host$request_uri; } } stream { upstream rancher_servers { least_conn; server <IP_NODE_1>:443 max_fails=3 fail_timeout=5s; server <IP_NODE_2>:443 max_fails=3 fail_timeout=5s; server <IP_NODE_3>:443 max_fails=3 fail_timeout=5s; } server { listen 443; proxy_pass rancher_servers; } }
這里的IP_NODE_1、IP_NODE_2、IP_NODE_3替換成真實環境中的Rancher節點的IP地址。
3、加載配置文件
nginx -s reload
RKE安裝kubernetes集群
下載rke工具
wget https://github.com/rancher/rke/releases/download/v0.1.11/rke_linux-amd64
mv rke_linux-amd64 rke && chmod 755 rke && mv rke /usr/local/bin
rke --version
修改hosts(所有節點)
cat << EOF >>/etc/hosts > 10.10.3.201 rancher-master01 > 10.10.3.202 rancher-master02 > 10.10.3.204 rancher-master03 > EOF
免密操作
ssh-keygen -t rsa ssh-copy-id -i .ssh/id_rsa.pub root@10.10.3.201 ssh-copy-id -i .ssh/id_rsa.pub root@10.10.3.202 ssh-copy-id -i .ssh/id_rsa.pub root@10.10.3.204
創建rancher-cluster.yml
文件
使用下面的示例創建rancher-cluster.yml
文件,使用創建的3個節點的IP地址替換列表中的IP地址。
nodes: - address: 10.10.3.201 user: root role: [controlplane,worker,etcd] - address: 10.10.3.202 user: root role: [controlplane,worker,etcd] - address: 10.10.3.204 user: root role: [controlplane,worker,etcd] services: etcd: snapshot: true creation: 6h retention: 24h
運行rke安裝
rke up --config ./rancher-cluster.yml
測試集群
安裝完成后,會產生一個kube_config_rancher-cluster.yml文件,這個是集群的認證文件。
mkdir ~/.kube cat kube_config_rancher-cluster.yml >> ~/.kube/config
通過kubectl 測試連接集群,查看所有節點狀態
$ kubectl get nodes NAME STATUS AGE VERSION 10.10.3.201 Ready 19m v1.11.3 10.10.3.202 Ready 19m v1.11.3 10.10.3.204 Ready 19m v1.11.3
安裝Helm
配置Helm客戶端訪問權限
Helm在集群上安裝tiller
服務以管理charts
. 由於RKE默認啟用RBAC, 因此我們需要使用kubectl
來創建一個serviceaccount
,clusterrolebinding
才能讓tiller
具有部署到集群的權限。
kubectl -n kube-system create serviceaccount tiller
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller
安裝Helm客戶端
二進制安裝方法:
1、下載預期的版本 releases
2、解壓縮
tar zxvf helm-v2.11.0-linux-amd64.tar.gz
3、把helm二進制文件拷貝到系統環境里
mv linux-amd64/helm /usr/bin/
安裝Helm Server(Tiller)
Helm的服務器端部分Tiller,通常運行在Kubernetes集群內部。但是對於開發,它也可以在本地運行,並配置為與遠程Kubernetes集群通信。
快速集群內安裝
helm init --service-account tiller --tiller-image registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.11.0 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
安裝Tiller金絲雀版本
helm init --service-account tiller --canary-image
Helm安裝Rancher
1、添加chart倉庫
使用helm repo add
命令添加Rancher chart倉庫地址
helm repo add rancher-latest https://releases.rancher.com/server-charts/latest
2、安裝證書管理器
從Helm stable目錄安裝cert-manager
helm install stable/cert-manager \ --name cert-manager \ --namespace kube-system
3、選擇SSL配置方式並安裝Rancher server
Rancher server設計默認需要開啟SSL/TLS配置來保證安全。
helm install rancher-latest/rancher \ --name rancher \ --namespace cattle-system \ --set hostname=rancher.httpshop.com
hostname根據自己情況定義
到此為止Rancher-server 已經安裝完成。
Rancher中安裝kuberntes
1、自定義節點創建集群
主機類型:
- 雲主機
- 內部虛擬機
- 裸機服務器
創建自定義集群
1、從"集群"頁面,單擊"添加集群"。
2、選擇“CUSTOM”
3、輸入“集群名稱”
4、使用“成員角色”配置集群用戶的授權
5、使用“集群選項”,選擇Docker版本、kubernetes版本、網絡組件等相關配置,點擊下一步。
6、從主機角色列表中選擇節點所要添加的角色。
7、將屏幕上顯示的命令復制到剪貼板。
8、使用首選shell登錄Linux主機,例如PuTTy或遠程終端連接。運行復制到剪貼板的命令。
9、在Linux主機上運行完命令后,單擊“完成”。
2、導入kuebernetes集群
您可以導入現有的Kubernetes集群,然后使用Rancher進行管理。
前提
如果現有Kubernetes集群已cluster-admin
定義角色,則必須具有此cluster-admin
權限才能將集群導入Rancher。要應用權限,您需要kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user [USER_ACCOUNT]
在運行kubectl
命令之前運行以導入群集。
1、從“ 群集”頁面中,單擊“ 添加群集”。
2、選擇“Import”
3、輸入集群名稱
4、使用“ 成員角色”配置群集的用戶授權。
- 單擊“ 添加成員”以添加可以訪問群集的用戶。
- 使用“ 角色”下拉列表為每個用戶設置權限。
5、單擊創建
6、將顯示的第一個命令復制到剪貼板。
7、使用首選shell(例如PuTTy或遠程終端連接)登錄到其中一個群集節點。運行復制到剪貼板的命令。
8、如果收到消息certificate signed by unknown authority
,請將Rancher中顯示的第二個命令復制到剪貼板。然后在群集節點上運行該命令。
9、在Linux主機上運行完命令后,單擊“完成”。