Rancher 2.7.0应用
零、前提条件
0.1 配置内核路由转发
# vim /etc/sysctl.conf
# cat /etc/sysctl.conf
...
net.ipv4.ip_forward=1
# sysctl -p
net.ipv4.ip_forward = 1
0.2 docker-ce安装
所有主机安装docker-ce
# wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# yum -y install docker-ce
# systemctl enable --now docker
0.3 rancher部署
# mkdir -p /opt/data/rancher_data
# docker run -d --privileged -p 80:80 -p 443:443 -v /opt/data/rancher_data:/var/lib/rancher --restart=always --name rancher-2-7-0 rancher/rancher:v2.7.0
一、Rancher初始配置
二、创建集群
导入现有集群,本次导入的集群版本为k8s 1.25.2
选择通用导入任意kubernetes集群
为导入的集群添加名称
为导入的集群添加标签
把已在的集群注册至 rancher
复制后,在k8s集群中master节点执行相关命令
[root@k8s-master01 ~]# curl --insecure -sfL https://192.168.10.163/v3/import/pg977t2z59g872brkj75qmxtkgkz8x5lrwwpdhkprvmcjhhr7tp6wm_c-m-p7wrqk4w.yaml | kubectl apply -f -
执行后,查看是否添加4个命名空间
[root@k8s-master01 ~]# kubectl get ns
NAME STATUS AGE
calico-apiserver Active 36h
calico-system Active 36h
cattle-fleet-system Active 60s 新添加
cattle-impersonation-system Active 77s 新添加
cattle-system Active 81s 新添加
default Active 36h
kube-node-lease Active 36h
kube-public Active 36h
kube-system Active 36h
local Active 27s 新添加
tigera-operator Active 36h
全部执行完成后,可以发现所有k8s集群节点全部注册到rancher
三、应用发布
选择应用发布的集群
3.1 部署Nginx应用
发布应用前,创建项目/命名空间
项目/命名空间创建后,选择创建工作负载(类型为Deployments)
指定应用发布的命名空间、应用名称、副本数
指定pod标签
指定应用所使用的镜像及容器类型(标准容器)
为应用发布添加端口,即创建相应的服务
以上全部配置完成后,点击创建
观察已创建的应用
在物理机访问已经创建的应用
3.2 部署MySQL应用
在k8s集群中查看已存在的存储类
需要提前准备好持久动态存储类
[root@k8s-master01 ~]# kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
nfs-client (default) fuseim.pri/ifs Delete Immediate false 15h
在rancher ui界面中查看
发布mysql前,创建项目/命名空间
创建PVC
创建服务
一定要注意这个选择器,现在创建,等创建MySQL应用时,其Pod标签要与此保持一致
查看已创建SVC
[root@k8s-master01 ~]# kubectl get svc -n mydata1
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
mysqldata1 ClusterIP None <none> 3306/TCP 49s
解析SVC 对应的IP地址
由于使用了Headless SVC,SVC没有分配ClusterIP,所以没有结果
[root@k8s-master01 ~]# dig -t a mysqldata1.mydata1.svc.cluster.local @10.96.0.10
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t a mysqldata1.mydata1.svc.cluster.local @10.96.0.10
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 18405
;; flags: qr aa rd; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;mysqldata1.mydata1.svc.cluster.local. IN A
;; AUTHORITY SECTION:
cluster.local. 30 IN SOA ns.dns.cluster.local. hostmaster.cluster.local. 1664333089 7200 1800 86400 30
;; Query time: 0 msec
;; SERVER: 10.96.0.10#53(10.96.0.10)
;; WHEN: 三 9月 28 10:47:03 CST 2022
;; MSG SIZE rcvd: 158
创建Statefulset类型的应用
选择与填写对应的名称,服务名称是提前创建的服务
选择MySQL容器镜像
添加环境变量
通过环境变量设置MySQL管理员密码及添加至MySQL的数据库
Pod标签必须与创建的SVC中选择器使用的标签一致
由于MySQL需要做数据持久化存储,所以需要选择存储,本次使用前面创建的PVC
把前面创建PVC挂载至MySQL容器中的/var/lib/mysql目录中
观察应用发布情况
执行命令观察应用是否可用
3.3 部署Wordpress应用
创建项目/命名空间
观察命名空间创建情况
[root@k8s-master01 ~]# kubectl get ns
NAME STATUS AGE
calico-apiserver Active 37h
calico-system Active 37h
cattle-fleet-system Active 59m
cattle-impersonation-system Active 59m
cattle-system Active 59m
default Active 37h
kube-node-lease Active 37h
kube-public Active 37h
kube-system Active 37h
local Active 58m
mydata1 Active 34m
nginxweb Active 50m
tigera-operator Active 37h
webpp1 Active 34s 新添加命名空间
发布Deployment对应的应用
选择Deployment控制器类型
添加应用使用的端口,本次使用节点端口发布
配置应用所需要的环境变量,通过环境变量连接数据库
解析数据库域名,用于环境变量定义
[root@k8s-master01 ~]# dig -t a mysqldata1-0.mysqldata1.mydata1.svc.cluster.local. @10.96.0.10
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -t a mysqldata1-0.mysqldata1.mydata1.svc.cluster.local. @10.96.0.10
;; global options: +cmd
;; Got answer:
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38690
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;mysqldata1-0.mysqldata1.mydata1.svc.cluster.local. IN A
;; ANSWER SECTION:
mysqldata1-0.mysqldata1.mydata1.svc.cluster.local. 30 IN A 10.224.69.203 解析出来Pod IP地址
;; Query time: 0 msec
;; SERVER: 10.96.0.10#53(10.96.0.10)
;; WHEN: 三 9月 28 11:32:07 CST 2022
;; MSG SIZE rcvd: 143
观察应用创建情况
在物理机访问已发布应用