一、master节点 安装kubectl
离线安装 上传资料中的kubectl
[root@rancher~]# chmod +x kubectl && mv kubectl /usr/local/bin/kubectl
或在线安装kubectl
[root@rancher~]#tee /etc/yum.repos.d/kubernetes.repo <<'EOF'
[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
[root@rancher~]#yum install -y kubectl
创建kubectl配置文件
[root@rancher~]#mkdir ~/.kube
[root@rancher~]#vim ~/.kube/config
[root@rancher~]#kubectl get node
二、服务的部署
1、部署nfs共享存储
[root@rancher ~]# mkdir -p /web/{html,data}
[root@rancher ~]# yum -y install nfs-utils rpcbind #安装nfs
[root@rancher~]#vim /etc/exports
/web/html *(rw,no_root_squash)
/web/data *(rw,no_root_squash)
[root@rancher ~]# systemctl enable --now rpcbind nfs
* 表示任何人都有权限连接,也可以是一个网段192.168.4.0/24(ro) ,一个IP,一个域名
no_root_squash:当登录NFS主机使用共享目录的使用者是root时,其权限将被转换成为匿名使用者,通常它的UID与GID,都会变成nobody身份。rw:读写的权限
2、创建pv
使用过程是:nfs→pv→pvc→volume→volumeMounttopath,PV是提供者,PVC是消费者,消费的过程就是绑定。
这里pv.yaml一共创建了2个pv,分别是mysql-pv(后面使用)、web-pv
ReadWriteOnce(RWO):读写权限,但是只能被单个节点挂载
ReadOnlyMany(ROX):只读权限,可以被多个节点挂载
ReadWriteMany(RWX):读写权限,可以被多个节点挂载
[root@rancher ~]# tar xf lnmp-v9.tar.gz
[root@rancher ~]# cd lnmp/
[root@rancher lnmp]# yum -y install unzip
[root@rancher lnmp]# unzip ecshop.zip
[root@rancher lnmp]# mv ecshop/* /web/html/
[root@rancher lnmp]# vim /root/lnmp/pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-pv
labels:
apps: mysql-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
nfs:
path: /web/data
server: 192.168.4.11
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: web-pv
labels:
apps: web-pv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
nfs:
path: /web/html
server: 192.168.4.11
[root@rancher lnmp]# kubectl apply -f pv.yaml
persistentvolume/mysql-pv created
persistentvolume/web-pv created
3.1 部署php的pod,挂载及pvc
[root@rancher lnmp]# vim php-deployment.yaml
[root@rancher lnmp]# kubectl apply -f php-deployment.yaml
deployment.apps/php-server created
persistentvolumeclaim/web-pvc created
[root@rancher lnmp]# kubectl get pod
NAME READY STATUS RESTARTS AGE
php-server-f755868c8-5rgzx 1/1 Running 0 18s
[root@rancher lnmp]# vim php-svc.yaml
---
apiVersion: v1
kind: Service
metadata:
name: php
spec:
ports:
- name: php
port: 9000
protocol: TCP
selector:
app: php-server
[root@rancher lnmp]# kubectl apply -f php-svc.yaml
service/php created
4.1 部署nginx的pod,创建ConfigMap映射配置
[root@rancher lnmp]# vim /root/lnmp/conf/nginx.conf
ConfigMap创建nginx配置文件
语法格式:kubectl create configmap name --from-file=path
[root@rancher lnmp]# kubectl create configmap lnmp-nginx-config --from-file=/root/lnmp/conf/nginx.conf
configmap/lnmp-nginx-config created
[root@rancher lnmp]# kubectl get configmap #查看新生成的ConfigMap
NAME DATA AGE
kube-root-ca.crt 1 130m
lnmp-nginx-config 1 56s
创建nginx-deployment
[root@rancherlnmp]#vim nginx-deployment.yaml
[root@rancher lnmp]# kubectl apply -f nginx-deployment.yaml
4.2部署nginx的service
[root@rancher lnmp]# vim nginx-svc.yaml
[root@rancher lnmp]# kubectl apply -f nginx-svc.yaml
访问测试:http://192.168.4.12:30010/
可以看到安装界面则表示php解析正确没有问题。现在不要部署网站,因为还没有安装数据库了。
5.1 创建mysql的pod
mysql容器中存在初始化脚本,使用MYSQL_ROOT_PASSWORD变量配置mysql登录密码。
[root@rancherlnmp]# vim mysql-deployment.yaml
[root@rancher lnmp]# kubectl apply -f mysql-deployment.yaml
5.2 创建mysql的service
[root@rancher lnmp]# vim mysql-svc.yaml
[root@rancher lnmp]# kubectl apply -f mysql-svc.yaml
6.1 rancher创建ingress规则
自定义域名→shop.com,删除默认的配置项,默认的是工作负载,我们需要添加服务。
添加服务(service):服务选择nginx-shop端口选择nginx即可
注:端口名称nginx是serviceportsname,调用时可以使用端口也可以直接使用名称。
添加本地hosts解析。
C:\Windows\System32\drivers\etc
添加行: 192.168.4.12 shop.com
浏览器访问:http://shop.com/