一、资源规划
HostnameIPOSCPUMemDiskmaster192.168.78.131CentOS7.92vCPU4G60Gnode1192.168.78.132CentOS7.92vCPU4G60Gnode2192.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 验证
node2 节点的 roles 范例不对,需要将 node2 打上 compute 标签,因为它也是盘算节点
- oc label node node2 node-role.kubernetes.io/compute=true
复制代码 再次检查
利用管理员登录集群并创建管理员账号
- 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 -it – bash -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
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |