1.基础环境准备(以下步骤所有节点进行)
1.1主机名:
hostnamectl set-hostname ocp-master hostnamectl set-hostname ocp-node01 hostnamectl set-hostname ocp-node02
1.2关闭防火墙和selinux
systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config sysctl net.ipv4.ip_forward=1
1.3设置hosts文件
vi /etc/hosts 192.168.1.20 ocp-master 192.168.1.21 ocp-node01 192.168.1.22 ocp-node02
1.4设置免密登陆
ssh-keygen ssh-copy-id 192.168.1.20 ssh-copy-id 192.168.1.21 ssh-copy-id 192.168.1.22
1.5安装基础包
yum install -y wget git ntp net-tools bind-utils iptables-services bridge-utils bash-completion kexec-tools sos psacct nfs-utils yum-utils docker NetworkManager yum-utils docker NetworkManager -y
1.6安装etcd(在ocp-master安装)
yum install -y etcd &&systemctl enable etcd &&systemctl start etcd
1.7配置daemon.json
echo '{
"registry-mirrors": ["https://x19jk9l1.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.1.237:5000"],
"insecure-registries": ["192.168.1.154"],
"exec-opts": ["native.cgroupdriver=systemd"]
}' >/etc/docker/daemon.json
1.8启动服务
systemctl start NetworkManager systemctl enable NetworkManager systemctl daemon-reload && systemctl enable docker && systemctl restart docker
2.服务部署
2.1拉取镜像(ocp-master节点)
echo 'docker.io/cockpit/kubernetes docker.io/openshift/origin-haproxy-router docker.io/openshift/origin-haproxy-router docker.io/openshift/origin-service-catalog docker.io/openshift/origin-node docker.io/openshift/origin-deployer docker.io/openshift/origin-control-plane docker.io/openshift/origin-control-plane docker.io/openshift/origin-template-service-broker docker.io/openshift/origin-pod docker.io/cockpit/kubernetes docker.io/openshift/origin-web-console quay.io/coreos/etcd' >image.txt && while read line; do docker pull $line ; done<image.txt
2.2拉取镜像(ocp-node01、02节点)
echo 'docker.io/openshift/origin-haproxy-router docker.io/openshift/origin-node docker.io/openshift/origin-deployer docker.io/openshift/origin-pod docker.io/ansibleplaybookbundle/origin-ansible-service-broker docker.io/openshift/origin-docker-registry' >image.txt && while read line; do docker pull $line ; done<image.txt
2.3拉取openshift git项目
git clone -b release-3.11 https://github.com/openshift/openshift-ansible.git
2.4安装ansible
wget https://buildlogs.centos.org/centos/7/paas/x86_64/openshift-origin311/Packages/a/ansible-2.6.5-1.el7.noarch.rpm yum localinstall ansible-2.6.5-1.el7.noarch.rpm
2.5编辑ansible hosts(在/etc/ansible/hosts添加如下内容)
[all]
all下放所有机器节点的名称
ocp-master
ocp-node01
ocp-node02
[OSEv3:children]
这里放openshfit的角色,这里有三个角色,master,node,etcd
masters
nodes
etcd
[OSEv3:vars]
这里是openshfit的安装参数
指定ansible使用ssh的用户为root
ansible_ssh_user=root
指定方式为origin
openshift_deployment_type=origin
指定版本为3.11
openshift_release=3.11
openshift_enable_service_catalog=false
openshift_clock_enabled=true
openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider'}]
openshift_disable_check=disk_availability,docker_storage,memory_availability,docker_image_availability
[masters]
master角色的机器名称包含
ocp-master
[etcd]
etcd角色的机器名称包含
ocp-master
[nodes]
node角色的机器名称包含
master openshift_node_group_name='node-config-all-in-one'
node01 openshift_node_group_name='node-config-compute'
node02 openshift_node_group_name='node-config-compute'
ocp-master openshift_node_group_name='node-config-master'
ocp-node01 openshift_node_group_name='node-config-compute'
ocp-node02 openshift_node_group_name='node-config-compute'
gluster[1:6].example.com openshift_node_group_name='node-config-compute-storage'
openshift_enable_service_catalog=false
openshift_hosted_registry_storage_kind=nfs
openshift_hosted_registry_storage_access_modes=['ReadWriteMany']
openshift_hosted_registry_storage_nfs_directory=/data/docker
openshift_hosted_registry_storage_nfs_options='*(rw,root_squash)'
openshift_hosted_registry_storage_volume_name=registry
openshift_hosted_registry_storage_volume_size=20Gi
openshiftclock_enabled=true
ansible_service_broker_install=false
2.6检查并执行ansible剧本
ansible-playbook playbooks/prerequisites.yml #检查(检查OK后,执行安装剧本) ansible-playbook ~/openshift-ansible/playbooks/deploy_cluster.yml #安装 (安装过程需要40分钟左右) 此时会提示一个报错,这时需要执行如下命令即可 oc label node ocp-master node-role.kubernetes.io/infra=true
2.7安装openshift web管理后台
ansible-playbook ~/openshift-ansible/playbooks/openshift-web-console/config.yml
2.8安装cockpit以及命令补全
yum install -y cockpit cockpit-docker cockpit-kubernetes &&systemctl start cockpit &&systemctl enable cockpit.socket && mkdir -p /usr/share/bash-completion/openshift oc completion bash >/usr/share/bash-completion/openshift/bash_completion echo "source /usr/share/bash-completion/openshift/bash_completion" >> ~/.bash_profile source ~/.bash_profile yum install bash-completion -y source /usr/share/bash-completion/bash_completion source <(kubectl completion bash) source ~/.bash_profile
2.9检查节点状态
[root@ocp-master mysqlsecret]# oc get nodes NAME STATUS ROLES AGE VERSION ocp-master Ready infra,master 1d v1.11.0+d4cacc0 ocp-node01 Ready compute 1d v1.11.0+d4cacc0 ocp-node02 Ready compute 1d v1.11.0+d4cacc0
2.10检查基础pod状态
[root@ocp-master mysqlsecret]# oc get pod NAME READY STATUS RESTARTS AGE docker-registry-1-sxpc4 1/1 Running 3 23h registry-console-1-ph8jc 1/1 Running 3 1d router-1-jmfcm 1/1 Running 3 23h
3.创建持久卷(PV)
前提需要部署NFS服务器(192.168.1.23)
[root@ocp-master yaml]# cat pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv001
labels:
name: pv001
type: nfs
spec:
nfs:
path: /data/v001
server: 192.168.1.23
capacity:
storage: 50Gi
accessModes:
- ReadWriteMany
- ReadWriteOnce
- ReadOnlyMany
persistentVolumeReclaimPolicy: Retain
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv002
labels:
name: nfs-pv002
type: nfs
spec:
nfs:
path: /data/v002
server: 192.168.1.23
capacity:
storage: 50Gi
accessModes:
- ReadWriteMany
- ReadWriteOnce
- ReadOnlyMany
persistentVolumeReclaimPolicy: Retain
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv003
labels:
name: nfs-pv003
type: nfs
spec:
nfs:
path: /data/v003
server: 192.168.1.23
capacity:
storage: 30Gi
accessModes:
- ReadWriteMany
- ReadWriteOnce
- ReadOnlyMany
persistentVolumeReclaimPolicy: Retain
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv004
labels:
name: nfs-pv004
type: nfs
spec:
nfs:
path: /data/v004
server: 192.168.1.23
capacity:
storage: 30Gi
accessModes:
- ReadWriteMany
- ReadWriteOnce
- ReadOnlyMany
persistentVolumeReclaimPolicy: Retain
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv005
labels:
name: nfs-pv005
type: nfs
spec:
nfs:
path: /data/v005
server: 192.168.1.23
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
- ReadWriteOnce
- ReadOnlyMany
persistentVolumeReclaimPolicy: Retain
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv006
labels:
name: nfs-pv006
type: nfs
spec:
nfs:
path: /data/v006
server: 192.168.1.23
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
- ReadWriteOnce
- ReadOnlyMany
persistentVolumeReclaimPolicy: Retain
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv007
labels:
name: nfs-pv007
type: nfs
spec:
nfs:
path: /data/v007
server: 192.168.1.23
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
- ReadWriteOnce
- ReadOnlyMany
persistentVolumeReclaimPolicy: Retain
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv008
labels:
name: nfs-pv008
type: nfs
spec:
nfs:
path: /data/v008
server: 192.168.1.23
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
- ReadWriteOnce
- ReadOnlyMany
persistentVolumeReclaimPolicy: Retain
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv009
labels:
name: nfs-pv009
type: nfs
spec:
nfs:
path: /data/v009
server: 192.168.1.23
capacity:
storage: 2Gi
accessModes:
- ReadWriteMany
- ReadWriteOnce
- ReadOnlyMany
persistentVolumeReclaimPolicy: Retain
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-pv010
labels:
name: nfs-pv010
type: nfs
spec:
nfs:
path: /data/v010
server: 192.168.1.23
capacity:
storage: 2Gi
accessModes:
- ReadWriteMany
- ReadWriteOnce
- ReadOnlyMany
persistentVolumeReclaimPolicy: Retain
kubectl create -f pv.yaml #执行创建
检查
[root@ocp-master yaml]# kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE nfs-pv001 50Gi RWO,ROX,RWX Retain Available 23h nfs-pv002 50Gi RWO,ROX,RWX Retain Available 23h nfs-pv003 30Gi RWO,ROX,RWX Retain Available 23h nfs-pv004 30Gi RWO,ROX,RWX Retain Available 23h nfs-pv005 10Gi RWO,ROX,RWX Retain Available 23h nfs-pv006 10Gi RWO,ROX,RWX Retain Available 23h nfs-pv007 5Gi RWO,ROX,RWX Retain Available 23h nfs-pv008 5Gi RWO,ROX,RWX Retain Available 23h nfs-pv009 2Gi RWO,ROX,RWX Retain Bound blog/blog-pvc 23h nfs-pv010 2Gi RWO,ROX,RWX Retain Bound blog/db-pvc 23h

搭建完毕
原创文章,作者:admin,如若转载,请注明出处:https://www.starz.top/2021/01/29/openshift%e7%8e%af%e5%a2%83%e9%83%a8%e7%bd%b2/
