一臭增、節(jié)點(diǎn)分配
文檔地址:https://www.rancher.cn/docs/rancher/v2.x/cn/overview/architecture/
- 服務(wù)器節(jié)點(diǎn)規(guī)劃
主機(jī)名 | 操作系統(tǒng) | IP地址 |
---|---|---|
master | Centos 7.4-x86_64 | 192.168.247.130 |
node1 | Centos 7.4-x86_64 | 192.168.247.131 |
node2 | Centos 7.4-x86_64 | 192.168.247.132 |
- 主機(jī)名修改
[root@localhost ~]# vi /etc/hosts
192.168.247.130 master
192.168.247.131 node1
192.168.247.132 node2
- Kernel性能調(diào)優(yōu)
[root@master ~]# 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
[root@master ~]# sysctl -p
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
- 關(guān)閉防火墻(所有節(jié)點(diǎn))
[root@master ~]# systemctl stop firewalld.service
[root@master ~]# systemctl disable firewalld.service
- 添加鏡像
[root@master ~]# vi /etc/docker/daemon.json
# 內(nèi)容
{
"registry-mirrors": ["https://7bezldxe.mirror.aliyuncs.com"]
}
# 重載配置髓窜,重啟docker
- 安裝和配置kubectl
??kubectl是一個CLI命令行工具限佩,用于運(yùn)行Kubernetes集群的命令槐瑞。Rancher 2.x中的許多維護(hù)和管理都需要它哎壳。
# 下載base,epel
[root@manager ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2523 100 2523 0 0 2773 0 --:--:-- --:--:-- --:--:-- 2772
[root@manager ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@manager ~]# 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
# 安裝Kubernetes
[root@master ~]# yum install -y kubectl
# 同步時間
[root@master ~]# yum install ntp ntpdate -y
# 同步阿里云
[root@master ~]# ntpdate ntp1.aliyun.com
[root@master ~]# yum install -y ntp
[root@master ~]# systemctl enable ntpd && systemctl start ntpd
[root@master ~]# timedatectl set-timezone Asia/Shanghai
[root@master ~]# timedatectl set-ntp yes
[root@master ~]# ntpq -p
二鸳慈、安裝Rancher2.x
- 安裝(請安裝穩(wěn)定版)
# 創(chuàng)建目錄
[root@master ~]# mkdir -p /opt/rancher
# 安裝最新版
[root@localhost ~]# sudo docker run -d -v /opt/rancher:/var/lib/rancher --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:latest
# 安裝穩(wěn)定版
[root@master ~]# sudo docker run -d --restart=unless-stopped -v /opt/rancher:/var/lib/rancher/ -p 80:80 -p 443:443 rancher/rancher:stable
# 使用默認(rèn)自簽名證書(使用此安裝方式)
[root@master ~]# docker run -d --restart=unless-stopped -p 80:80 -p 443:443 -v /opt/rancher:/var/lib/rancher/ -v /root/var/log/auditlog:/var/log/auditlog -e AUDIT_LEVEL=3 rancher/rancher:stable
# 證書安裝(需生成證書)
[root@master ~]# docker run -d --restart=unless-stopped -p 80:80 -p 443:443 -v /opt/rancher:/var/lib/rancher -v /var/log/rancher/auditlog:/var/log/auditlog -v /home/anrj/ssl/cert.pem:/etc/rancher/ssl/cert.pem -v /home/anrj/ssl/key.pem:/etc/rancher/ssl/key.pem -e AUDIT_LEVEL=3 --name rancher_stable rancher/rancher:stable --no-cacerts
安裝后下載鏡像為:rancher/rancher stable
-
Web訪問
地址:https://192.168.247.130/
注:因為Rancher是自動使用的自簽名證書拂募,在第一次登錄會提示安全授信問題攘滩,信任即可然后設(shè)置rancher server的url帅刊,這里就直接使用了虛擬機(jī)的內(nèi)網(wǎng)ip了。
默認(rèn)用戶為:admin 密碼: admin
-
設(shè)置語言(右下角)
二漂问、創(chuàng)建集群
-
創(chuàng)建集群
添加名稱赖瞒,其它默認(rèn),點(diǎn)擊下一步:
角色選擇(一臺主機(jī)可以對應(yīng)多個角色,每個集群至少需要一個Etcd角色蚤假、一個Control角色栏饮、一個Worker角色):
注意:至少保證主機(jī)集群里有一個主機(jī)角色有etcd和Control2種。所以最好是一臺主機(jī)的角色是etcd 和 Control磷仰,其他主機(jī)是work節(jié)點(diǎn)袍嬉。
- 添加主機(jī)到集群中
注:如果是多臺主機(jī),根據(jù)角色的不同,需要復(fù)制多次命令伺通。
192.168.247.130--etcd
192.168.247.131--Control
192.168.247.132--work
# 192.168.247.132--work
[root@node2 ~]# sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.2.9 --server https://192.168.247.130 --token f8lvqwhcnzjdm4zrx7xmsw9jqs5zfxz4s46z8l7cghwfvckf9pj6fg --ca-checksum 83926781a69162022869e3b4b80d6b20c905bc2509ea685961bf7604ab6c4220 --worker
Unable to find image 'rancher/rancher-agent:v2.2.9' locally
v2.2.9: Pulling from rancher/rancher-agent
5667fdb72017: Pull complete
d83811f270d5: Pull complete
ee671aafb583: Pull complete
7fc152dfb3a6: Pull complete
0606171659a5: Pull complete
91bb3d25889d: Pull complete
fb492ec03242: Pull complete
48b877ece6ea: Pull complete
915307ab9059: Pull complete
0b10a4dd7756: Pull complete
Digest: sha256:268f8e30b4d26fc4dbe014ec5ac2c34b80842f8450bdc496ae52757e87c64fce
Status: Downloaded newer image for rancher/rancher-agent:v2.2.9
1365663d6cab948ec9f2962e5caf4ce919fae1fe436f947efceaccc225940641
# 下載鏡像為:
[root@node2 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rancher/rancher-agent v2.2.9 a1bf38ea4f5e 10 days ago 289MB
Universal Control Plane (UCP)记舆,基于 Web 的統(tǒng)一集群和應(yīng)用管理解決方案。
# 192.168.247.131--controlplane
[root@node1 ~]# sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.2.9 --server https://192.168.247.130 --token f8lvqwhcnzjdm4zrx7xmsw9jqs5zfxz4s46z8l7cghwfvckf9pj6fg --ca-checksum 83926781a69162022869e3b4b80d6b20c905bc2509ea685961bf7604ab6c4220 --controlplane
Unable to find image 'rancher/rancher-agent:v2.2.9' locally
v2.2.9: Pulling from rancher/rancher-agent
5667fdb72017: Pull complete
d83811f270d5: Pull complete
ee671aafb583: Pull complete
7fc152dfb3a6: Pull complete
0606171659a5: Pull complete
91bb3d25889d: Pull complete
fb492ec03242: Pull complete
48b877ece6ea: Pull complete
915307ab9059: Pull complete
0b10a4dd7756: Pull complete
Digest: sha256:268f8e30b4d26fc4dbe014ec5ac2c34b80842f8450bdc496ae52757e87c64fce
Status: Downloaded newer image for rancher/rancher-agent:v2.2.9
f331528b9a5d07ec876175776dde397868861fbf8b5b47325af5fae9c508506a
# 下載鏡像為
[root@node1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rancher/rancher-agent v2.2.9 a1bf38ea4f5e 10 days ago 289MB
# 192.168.247.130--Etcd
[root@master ~]# sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.2.9 --server https://192.168.247.130 --token f8lvqwhcnzjdm4zrx7xmsw9jqs5zfxz4s46z8l7cghwfvckf9pj6fg --ca-checksum 83926781a69162022869e3b4b80d6b20c905bc2509ea685961bf7604ab6c4220 --etcd
Unable to find image 'rancher/rancher-agent:v2.2.9' locally
v2.2.9: Pulling from rancher/rancher-agent
5667fdb72017: Already exists
d83811f270d5: Already exists
ee671aafb583: Already exists
7fc152dfb3a6: Already exists
0606171659a5: Pull complete
91bb3d25889d: Pull complete
fb492ec03242: Pull complete
48b877ece6ea: Pull complete
915307ab9059: Pull complete
0b10a4dd7756: Pull complete
Digest: sha256:268f8e30b4d26fc4dbe014ec5ac2c34b80842f8450bdc496ae52757e87c64fce
Status: Downloaded newer image for rancher/rancher-agent:v2.2.9
57e37fc9e50625f4cd004f7e735ffb1450209e3c0088641082c5777fe07c2774
# 下載鏡為
[root@master ~]# docker images
rancher/rke-tools v0.1.50 87d2dd9a046a 5 weeks ago 132MB
rancher/coreos-etcd v3.3.10-rancher1 643c21638c1c 12 months ago 39.5MB
rrancher/hyperkube v1.15.5-rancher1 fc2949858e47 11 days ago 1.15GB
此時我們的集群處于等待注冊的狀態(tài)霍殴,點(diǎn)擊主機(jī)下的數(shù)字可以查看主機(jī)信息:
- 查看集群信息
# master主機(jī)
[root@master ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2f7c1712081e rancher/rancher-agent:v2.3.1 "run.sh --server htt…" 3 minutes ago Up 3 minutes awesome_dhawan
053a460a80da rancher/rancher-agent:v2.3.1 "run.sh -- share-roo…" 3 minutes ago Up 3 minutes share-mnt
f439c7775b6e rancher/rancher-agent:v2.3.1 "run.sh --server htt…" 3 minutes ago Up 3 minutes hardcore_boyd
c1bbb6072fab rancher/rancher:latest "entrypoint.sh" 3 hours ago Up About a minute 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp adoring_yalow
三单寂、Rancher 部署服務(wù)
通過 Rancher UI 來一鍵式部署服務(wù)。
Rancher Server 中存在一個項目的概念笑诅,默認(rèn)存在兩個項目:default 和 system调缨,類似于 namespaces 但是并不是 namespaces,而且 namespaces 還率屬于某項目下吆你,項目可以配置 Pod 安全策略以及資源配額弦叶,可以理解為更好的劃分各個項目資源隔離。
default 項目可以理解為非系統(tǒng)項目的個人自定義項目;
system 項目可以理解為具有所有 Kubernetes 和 Rancher 系統(tǒng)命名空間的系統(tǒng)項目妇多。
-
部署一個服務(wù)
切換到集群 xtsz-k8s 下 default 命令空間下的工作負(fù)荷頁面來部署一個服務(wù)伤哺。
以 nginx 為例,在新的 default 命名空間內(nèi)者祖,啟動一個新的 nginx Pod立莉,并配置容器 80 端口映射到 NodePort 30001 端口來配置 Service,其它配置默認(rèn)即可七问。
-
啟動服務(wù)
點(diǎn)擊啟動蜓耻,稍等片刻,Rancher Server 就自動在default 命令空間系統(tǒng)內(nèi)創(chuàng)建了 nginx-test Pod 資源械巡。
-
測試訪問
地址:http://192.168.247.132:30001/
之前我們是需要使用 kubectl 命令或者手寫 yaml 文件來配置刹淌,現(xiàn)在只需要在 UI 頁面上就可以完成了。當(dāng)然 Rancher Server 底層還是將配置的參數(shù)轉(zhuǎn)換成 yaml 文件方式讥耗,通過頁面上也可以看到生成的 yaml 文件有勾。
-
服務(wù)發(fā)現(xiàn)
四、常見問題:
- iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 6443 -j DNAT --to-destination 172.17.0.2:1337 ! -i docker0: iptables:
解決:
# 重建docker0網(wǎng)絡(luò)恢復(fù)
# pkill 命令和 killall 命令的用法相同古程,都是通過進(jìn)程名殺死一類進(jìn)程
[root@master ~]# pkill docker
# 清空規(guī)則
[root@master ~]# iptables -t nat -F
# 關(guān)閉網(wǎng)卡
[root@master ~]# ifconfig docker0 down
# 關(guān)閉網(wǎng)卡
[root@master ~]# yum -y install bridge-utils
[root@master ~]# brctl delbr docker0
# 重啟docker
[root@master ~]# systemctl restart docker
- 停用并刪除容器
[root@node2 ~]# docker stop $(docker ps -q)
[root@master ~]# docker rm $(docker ps -aq)
- [etcd] Failed to bring up Etcd Plane: [etcd] Etcd Cluster is not healthy
由于etcd內(nèi)存數(shù)據(jù)庫問題:
# 安裝etcd
[root@master ~]# yum install etcd
# 切換版本
[root@master ~]# etcdctl -version
etcdctl version: 3.3.11
API version: 2
# 配置
vi /etc/etcd/etcd.conf
# 修改ETCD_LISTEN_CLIENT_URLS="http://localhost:2379"為
ETCD_LISTEN_CLIENT_URLS="http://192.168.247.130:2379,http://localhost:2379"
# 修改ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"為
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.247.130:2379,http://localhost:2379"
# 重啟系統(tǒng)蔼卡,請不重啟動etcd服務(wù),如果啟動請關(guān)閉
[root@master ~]# systemctl stop etcd
[root@master ~]# systemctl status etcd
● etcd.service - Etcd Server
Loaded: loaded (/usr/lib/systemd/system/etcd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
- Runtime network not ready: NetworkReady=false reason:NetworkPluginNotReady message:docker: network plugin is not ready: cni config uninitialized
原因:
因為kubelet配置了network-plugin=cni挣磨,但是還沒安裝雇逞,所以狀態(tài)會是NotReady,不想看這個報錯或者不需要網(wǎng)絡(luò),就可以修改kubelet配置文件趋急,去掉network-plugin=cni 就可以了喝峦。
[root@node2 ~]# systemctl enable kubelet
[root@node2 ~]# systemctl start kubelet
附:
Universal Control Plane(UCP):
UCP 通過提供集成的應(yīng)用管理平臺來擴(kuò)展 Docker EE 基礎(chǔ)版。它既是用戶的主要交互點(diǎn)呜达,也是應(yīng)用的集成點(diǎn)谣蠢。UCP 在集群中的所有節(jié)點(diǎn)上運(yùn)行代理程序來監(jiān)視它們,并且在控制器節(jié)點(diǎn)上運(yùn)行一組服務(wù)。這些服務(wù)包括用于管理用戶的身份服務(wù)眉踱,用于用戶和集群 PKI 的認(rèn)證中心 (CA)挤忙,提供 Web UI 和 API 的主控制器,用于 UCP 狀態(tài)的數(shù)據(jù)存儲谈喳,以及用于向后兼容的經(jīng)典 Swarm 服務(wù)册烈。
UCP是一個基于Docker的集群管理工具,也即集群中每個節(jié)點(diǎn)都應(yīng)該安裝Docker Engine婿禽。
UCP集群包含兩種節(jié)點(diǎn):
- Controller: 管理集群赏僧,并持久化集群配置
- Node:運(yùn)行容器