OpenShift3.11 社区版搭建

一、资源规划

HostnameIPOSCPUMemDisk
master192.168.78.131CentOS7.92vCPU4G60G
node1192.168.78.132CentOS7.92vCPU4G60G
node2192.168.78.133CentOS7.92vCPU4G60G

二、安装过程:

2.1 前期配置

开启所有节点的 SELinux (所有主机执行)
grep -v ^# /etc/selinux/config | grep -v ^$

# 显示如下则证明已经开启了 SELinux,否则照此修改配置,并重启主机
SELINUX=enforcing
SELINUXTYPE=targeted

确保所有的节点都已经开启 SELinux
在这里插入图片描述

所有节点关闭防火墙(所有主机执行)
systemctl stop firewalld && systemctl disable firewalld
修改 /etc/hosts文件(Master主机执行)
vi /etc/hosts

# 新增如下内容
192.168.78.131  master.lab.unicom.com  master
192.168.78.132  node1.lab.unicom.com  node1
192.168.78.133  node2.lab.unicom.com  node2
复制到其他节点(Master主机执行)
for i in 2 3;do scp /etc/hosts root@192.168.78.13$i:/etc;done
配置免密登录(Master主机执行)
ssh-keygen -t rsa -P ''
ssh-copy-id master
ssh-copy-id master.lab.unicom.com
复制到其他节点(Master主机执行)
for i in {1..3};do ssh-copy-id 192.168.26.13$i;done
for i in {1..2};do ssh-copy-id node$i;done
for i in {1..2};do ssh-copy-id node$i.lab.unicom.com;done

2.2 安装依赖包

安装 OpenShift 依赖的软件包(所有主机执行)
yum -y install wget git net-tools bind-utils iptables-services bridge-utils bash-completion kexec-tools sos psacct bash-completion.noarch python-passlib NetworkManager vim
安装docker(所有主机执行)
yum -y install docker-1.13.1
配置 Docker 镜像仓库地址(所有主机执行)
cat > /etc/docker/daemon.json<<EOF
{
  "registry-mirrors" : [
      "https://registry.docker-cn.com",
      "https://docker.mirrors.ustc.edu.cn",
      "http://hub-mirror.c.163.com",
      "https://cr.console.aliyun.com/",
      "https://0trl8ny5.mirror.aliyuncs.com"ps -ef
  ]
}
EOF
重启 Docker 使得配置地址生效(所有主机执行)
systemctl daemon-reload && systemctl restart docker && systemctl enable docker
Master 主机上安装 Ansible
yum -y install epel-release
yum -y install centos-release-ansible-28.noarch
yum list ansible --showduplicates
yum -y install ansible-2.8.6

# 查看ansible版本
ansible --version

2.3 安装/配置 openshift

Master 主机上下载安装 openshift-ansible-3.11.764-1.tar.gz

下载 openshift-ansible-3.11.764-1.tar.gz 安装包,解压后文件夹重命名

wget ttps://github.com/openshift/openshift-ansible/archive/refs/tags/openshift-ansible-3.11.764-1.tar.gz
tar -zxvf openshift-ansible-3.11.764-1.tar.gz
mv openshift-ansible-openshift-ansible-3.11.764-1/  openshift-ansible
编写ansible Inventory文件(Master 主机)
vim /etc/ansible/hosts

# 修改内容如下
[OSEv3:children]
masters
nodes
etcd

[OSEv3:vars]
ansible_ssh_user=root
# 使用origin社区版
openshift_deployment_type=origin
deployment_type=origin
# 指定安装版本
openshift_release=v3.11
# 指定默认域名,访问时需要使用该域名,无dns服务器时需要手动添加本地hosts文件
openshift_master_default_subdomain=lab.unicom.com
# 禁止磁盘、内存、镜像的检查
openshift_disable_check=disk_availability,docker_storage,memory_availability
# disk_availability: 报错信息是推荐的master磁盘空间剩余量大于40GB。测试环境无法满足;跳过检测
# memory_availability: 报错信息是推荐的master内存为16GB;node内存为8GB;测试环境无法满足;跳过检测
# docker_image_availability: 报错信息是需要的几个镜像未找到;选择跳过;装完集群后;在使用的时候再自行下载
# docker_storage: 报错信息是推荐选择一块磁盘空间存储镜像;这里选择跳过。采用docker默认的方式存储镜像
openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider'}]
openshift_master_htpasswd_file=/etc/origin/master/htpasswd
# ntp时间同步
openshift_clock_enabled=true
# 节点配额
openshift_node_groups.edits={'pods-per-core': ['10']}
# 主机组
[masters]
master openshift_schedulable=True
# 节点的主机组,包含region和infra
[nodes]
master openshift_node_groups.labels="{'region': 'infra'}"
node1 openshift_node_groups.labels="{'region': 'infra', 'zone': 'default'}"
node2 openshift_node_groups.labels="{'region': 'infra', 'zone': 'default'}"
master openshift_node_group_name='node-config-master'
node1 openshift_node_group_name='node-config-compute'
node2 openshift_node_group_name='node-config-compute'

# 至少有一个节点需要是node-config-infra
node2 openshift_node_group_name='node-config-infra'

[etcd]
master
部署前检测

# 提前创建密码保存文件,不然待会会报错
mkdir -p /etc/origin/master/
touch /etc/origin/master/htpasswd

[root@master ~]# ansible-playbook  -i  /etc/ansible/hosts  /root/openshift-ansible/playbooks/prerequisites.yml

# 执行结束后若无问题会显示localhost、master、node1、node2的failed=0,Initialization  : Complete (0:01:33)
# 若有问题,排错后多次执行
正式部署
ansible-playbook  -i  /etc/ansible/hosts  /root/openshift-ansible/playbooks/deploy_cluster.yml
# 部署过程中会出现pull faild发生retry,等待重试完成即可

三、openshift 验证

# 安装完成结果检查
oc get nodes

在这里插入图片描述
node2 节点的 roles 类型不对,需要将 node2 打上 compute 标签,因为它也是计算节点

oc label node node2 node-role.kubernetes.io/compute=true

再次检查
在这里插入图片描述

# 查看pods
oc get pods

在这里插入图片描述

使用管理员登录集群并创建管理员账号
oc login -u system:admin
# 检查登录用户
oc whoami 

# 创建管理员账号
htpasswd -b /etc/origin/master/htpasswd admin redhat

# 使用新用户登录集群
oc login -u admin -p redhat

# 检查登录用户
oc whoami 
# admin
使用浏览器访问 OpenShift Web Console

注意:需要提前为宿主机设置hosts

# OpenShift
192.168.78.131 master.lab.unicom.com

使用宿主机浏览器访问:https://master.lab.unicom.com:8443/
使用用户名密码(admin/redhat)访问即可

快速创建一个小的应用

注意:需要提前为宿主机设置hosts

# 用户登录
oc login -u admin -p redhat

# 创建项目、切换至该项目
oc new-project hello
oc project hello

# 拉取镜像
docker pull docker.io/openshift/hello-openshift

# 通过镜像创建应用
oc new-app docker.io/openshift/hello-openshift

在这里插入图片描述

# 获取pod 的详细信息
oc status

# 访问该服务
curl 172.30.223.69:8080

在这里插入图片描述

四、openshift常用操作命令

#通过CLI登陆openshift
oc login https://10.19.169.XX:8443 -u username -p password

#退出登陆
oc logout

#查看所有的proeject信息
oc projects

#创建新的project
oc new-project myproject

#切换project空间到myproject下
oc project myproject

#查看project下的服务状态
oc status

#查看project下的所有服务
oc get svc -n myproject

#查看project下的pod信息
oc get pods -n myproject

#获取project下服务的buildconfig信息,一个build就是一个把输入参数转化为输出结果的过程。通常,这个过程用于把source code转化为一个执行的image。
oc describe bc bcname

#获取project下服务的deploymentconfig信息,DeploymentConfig定义了在Openshift部署什么,如何运行。
oc describe dc dcname

#将pod内部服务对外暴露
oc expose svc servicename

#查看服务的build config日志
oc logs -f bc/servicename

#查看服务的deploy config日志
oc logs -f dc/servicename

#在project下基于jdk8镜像和GitLab代码 创建app,new-app 为微服务应用创建了相应的bc、dc和svc
oc new-app openshift/redhat-openjdk18-openshift~http://10.119.169.XX/ChinaTechnologyPlatform/XX.git --allow-missing-imagestream-tags --strategy=source

#根据is创建app
oc new-app -i openshift/custom-mysql:latest -p MYSQL_USER=workflow -p MYSQL_PASSWORD=Kpmg#1234 -p MYSQL_DATABASE=workflowdb -p MYSQL_ROOT_PASSWORD=Kpmg#1234 -p MYSQL_LOWER_CASE_TABLE_NAMES=1 --name=“mysqlserver” -n workflow-service-dev

#基于template模板创建应用
oc new-app --template=jenkins-persistent -n jenkins-pipeline

#查看project下的pod信息
oc get pods

#查看模板信息
oc get template

#openshift模板导出
oc export bc,dc,svc,is,route -o json –as-template=”test-template” > ~/test-template.yaml

#扩展容器pod数
oc scale dc service-name --replicas=5

#编辑template模板
oc edit template templatename

#登陆pod内部
oc exec podname -itbash -li

#创建template
可以通过openshift的web console台导入

#给pv 打上标签disktype=ssd
oc label pv pv002 disktype=ssd

#查看pv上的标签
oc get pv --show-labels

#回滚到最近部署成功的版本
oc rollout undo dc/dcname

#获取dc部署版本信息
oc rollout history dc/dcname

#回滚到指定的版本
oc rollout undo dc/dcname --to-revision=2

创建一个imagestream 并将内部镜像仓库的镜像同步到imagestream中
#创建imagestrem
oc create imagestream custom-mysql

#创建imagestream tag和内部镜像关联上
oc tag registry.example.com/custom-mysql:latest custom-mysql:latest

#同步已有镜像到imagestream
oc import-image custom-mysql:latest --insecure -n openshift
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值