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/