{"id":50587,"date":"2023-07-24T16:37:19","date_gmt":"2023-02-01T13:15:37","guid":{"rendered":"https:\/\/www.silicloud.com\/zh\/blog\/openshift-origin-v3-9-%e7%9a%84%e7%8e%af%e5%a2%83%e5%bb%ba%e7%ab%8b%e5%92%8c%e5%ba%94%e7%94%a8%e9%83%a8%e7%bd%b2%ef%bc%88%e5%89%8d%e7%af%87%ef%bc%89%e3%80%82\/"},"modified":"2024-04-30T15:08:17","modified_gmt":"2024-04-30T07:08:17","slug":"openshift-origin-v3-9-%e7%9a%84%e7%8e%af%e5%a2%83%e5%bb%ba%e7%ab%8b%e5%92%8c%e5%ba%94%e7%94%a8%e9%83%a8%e7%bd%b2%ef%bc%88%e5%89%8d%e7%af%87%ef%bc%89%e3%80%82","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/zh\/blog\/openshift-origin-v3-9-%e7%9a%84%e7%8e%af%e5%a2%83%e5%bb%ba%e7%ab%8b%e5%92%8c%e5%ba%94%e7%94%a8%e9%83%a8%e7%bd%b2%ef%bc%88%e5%89%8d%e7%af%87%ef%bc%89%e3%80%82\/","title":{"rendered":"OpenShift Origin v3.9 \u7684\u73af\u5883\u5efa\u7acb\u548c\u5e94\u7528\u90e8\u7f72\uff08\u524d\u7bc7\uff09"},"content":{"rendered":"<p>\u5f8c\u534a\u8acb\u81f3\u6b64\u8655\u3002<\/p>\n<h1>\u9996\u5148<\/h1>\n<p>\u56e0\u4e3a\u6211\u5df2\u7ecf\u5728OpenShift Origin v3.9\u4e2d\u5efa\u7acb\u4e86\u73af\u5883\uff0c\u5e76\u6210\u529f\u4eceGitHub\u90e8\u7f72\u4e86\u6211\u7684\u81ea\u5b9a\u4e49\u5e94\u7528\u7a0b\u5e8f\uff0c\u6240\u4ee5\u6211\u5c06\u5199\u4e0b\u6b64\u8fc7\u7a0b\u7684\u6b65\u9aa4\u3002<br \/>\n\u5728\u8fdb\u884c\u642d\u5efa\u4e4b\u524d\uff0c\u6211\u8fdb\u884c\u4e86\u5404\u79cd\u641c\u7d22\uff0c\u4f46\u627e\u5230\u7684\u793a\u4f8b\u8981\u4e48\u662f\u6700\u5c0f\u914d\u7f6e\uff08\u4e00\u4e2aMaster\u8282\u70b9\u548c\u4e24\u4e2aNode\u8282\u70b9\uff09\uff0c\u8981\u4e48\u53ea\u662f\u663e\u793aHello World\uff0c\u90fd\u4e0d\u591f\u5b9e\u7528\u3002<br \/>\n\u56e0\u6b64\uff0c\u6211\u51b3\u5b9a\u5199\u4e00\u4e2a\u66f4\u5b9e\u7528\u548c\u7cfb\u7edf\u5316\u7684\u4f8b\u5b50\u3002<br \/>\n\u867d\u7136\u5185\u5bb9\u5f88\u957f\uff0c\u4f46\u5927\u90e8\u5206\u662f\u5728OpenShift\u5b89\u88c5\u4e4b\u524d\u8fdb\u884c\u670d\u52a1\u5668\u8bbe\u7f6e\uff0c\u6240\u4ee5\u5e76\u4e0d\u96be\u3002\u524d\u534a\u90e8\u5206\u662f\u5173\u4e8eOpenShift\u7684\u5b89\u88c5\u6b65\u9aa4\uff0c\u540e\u534a\u90e8\u5206\u662f\u5173\u4e8e\u5e94\u7528\u7a0b\u5e8f\u7684\u90e8\u7f72\u3002<\/p>\n<h1>1. \u6784\u6210\u4e0e\u524d\u63d0<\/h1>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">KVM \u4e0a\u306e\u4eee\u60f3\u30de\u30b7\u30fc\u30f3\u306bOpenShift \u306e\u74b0\u5883\u3092\u69cb\u7bc9<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">Master, Infra Node, application Node \u305d\u308c\u305e\u308c3\u53f0\u305a\u3064<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">GlusterFS \u3067\u5185\u90e8\u30ec\u30b8\u30b9\u30c8\u30ea\u30fc\u3001\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u7528\u30c7\u30fc\u30bf\u3092\u4fdd\u5168<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u7269\u7406\u30de\u30b7\u30fc\u30f3\u3001\u4eee\u60f3\u30de\u30b7\u30fc\u30f3\u5168\u3066CentOS7<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u7269\u7406\u30de\u30b7\u30fc\u30f3\u306bVlan Interface, Bridge Interface \u305d\u308c\u305e\u308cvlan205, br205 \u3092\u4f5c\u6210<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u4eee\u60f3\u30de\u30b7\u30fc\u30f3\u306fks \u30d5\u30a1\u30a4\u30eb\u304b\u3089\u4f5c\u6210<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u4eee\u60f3\u30de\u30b7\u30fc\u30f3\u69cb\u7bc9\u306b\u306fCentOS-7-x86_64-DVD-1804.iso \u3092\u4f7f\u7528<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u4eee\u60f3\u30de\u30b7\u30fc\u30f3\u306edefault-zone \u306finternal \u3092\u6307\u5b9a<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<ul class=\"post-ul\">\n<li style=\"list-style-type: none;\">\n<ul class=\"post-ul\">\u69cb\u7bc9\u4f5c\u696d\u306f\u5168\u3066root \u3067\u884c\u3046\u3082\u306e\u3068\u3059\u308b<\/ul>\n<\/li>\n<\/ul>\n<p>[\u30de\u30b7\u30fc\u30f3\u540d] \u3068\u66f8\u3044\u3066\u3042\u3063\u305f\u3089\u305d\u306e\u30de\u30b7\u30fc\u30f3\u3067\u4f5c\u696d\u3059\u308b\u3068\u3044\u3046\u610f\u5473<\/p>\n<div><img decoding=\"async\" class=\"post-images\" title=\"\" src=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d92bd913a08637a6e3eac\/5-0.png\" alt=\"outline.png\" \/><\/div>\n<div>\n<div class=\"post-table\">\u30db\u30b9\u30c8\u540d\u5f79\u5272lb-01\u30ed\u30fc\u30c9\u30d0\u30e9\u30f3\u30b5\u30fc(HA Proxy)master-0[1:3]Master \u7528infra-0[1:3]Infra Node \u7528node-0[1:3]Application Node \u7528gfs-0[1:3]\u5185\u90e8\u30ec\u30b8\u30b9\u30c8\u30ea\u30fc\u7528GlusterFSgfs-0[4:6]\u30a2\u30d7\u30ea\u30b1\u30fc\u30b7\u30e7\u30f3\u7528GlusterFSansible-01\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u4f5c\u696d\u30b5\u30fc\u30d0\u30fcdns-01\u74b0\u5883\u5185\u306eDNS \u30b5\u30fc\u30d0\u30fcrepo-01origin \u30d1\u30c3\u30b1\u30fc\u30b8\u7528\u306e\u30ed\u30fc\u30ab\u30eb\u30ea\u30dd\u30b8\u30c8\u30ea(\u4efb\u610f)ntp-01NTP \u30b5\u30fc\u30d0\u30fc(\u4efb\u610f)<\/div>\n<\/div>\n<h1>2. \u51c6\u5907<\/h1>\n<h2>2-1. \u57df\u540d\u7cfb\u7d71\u8a3b\u518a<\/h2>\n<p>\u6ce8\u518c\u57df\u540d\u5e76\u8fdb\u884c DNS \u767b\u8bb0\u3002<br \/>\n\u5047\u8bbe\u6211\u4eec\u5728\u8fd9\u91cc\u6ce8\u518c\u4e86\u4e00\u4e2a\u540d\u4e3a example.com \u7684\u57df\u540d\uff0c\u5e76\u4f7f\u7528\u901a\u914d\u7b26 *.example.com \u8fdb\u884c\u4e86 DNS \u767b\u8bb0\u3002\u5b9e\u9645\u642d\u5efa\u65f6\uff0c\u8bf7\u5c06\u6240\u6709\u7684 example.com \u90e8\u5206\u66ff\u6362\u4e3a\u60a8\u81ea\u5df1\u73af\u5883\u4e2d\u7684\u5185\u5bb9\u3002<\/p>\n<h2>2-2. \u9632\u706b\u5899\u7aef\u53e3\u8f6c\u53d1\u8bbe\u7f6e<\/h2>\n<p>\u8bbe\u5b9a\u5c06\u6765\u81ea\u5916\u90e8\u7684TCP\u7aef\u53e380\u3001443\u30018443\u7684\u8bbf\u95ee\u76f4\u63a5\u8f6c\u53d1\u81f3lb-01\u7684\u76f8\u540c\u7aef\u53e3\u3002<\/p>\n<h2>2-3. \u5efa\u6784\u7269\u7406\u673a\u68b0<\/h2>\n<p>\u5728\u6700\u5c0f\u914d\u7f6e\u4e0b\u5b89\u88c5CentOS7\u5e76\u5b89\u88c5KVM\u3002<\/p>\n<pre class=\"post-pre\"><code>yum -y update\r\nyum -y groupinstall \"Virtualization Host\"\r\nyum -y install virt-install virt-top virt-clone\r\nsystemctl start libvirtd\r\nsystemctl enable libvirtd\r\n<\/code><\/pre>\n<p>\u521b\u5efa vlan \u548c bridge\u3002\u5c06 bond0 \u66f4\u6539\u4e3a\u9002\u5408\u81ea\u5df1\u73af\u5883\u7684\u540d\u79f0\u3002<\/p>\n<pre class=\"post-pre\"><code>nmcli c add type bridge ifname br205 con-name br205\r\nnmcli c mod br205 bridge.stp no\r\nnmcli c mod br205 ipv4.method disabled ipv6.method ignore\r\nnmcli c add type vlan ifname vlan205 con-name vlan205 dev bond0 id 205\r\nnmcli c mod vlan205 connection.master br205 connection.slave-type bridge\r\n<\/code><\/pre>\n<p>\u8bf7\u4e0b\u8f7dCentOS-7-x86_64-DVD-1804.iso\u5e76\u4fdd\u5b58\u81f3\/opt\/Linux\u76ee\u5f55\u4e2d\u3002<\/p>\n<h2>\u642d\u5efa\u5185\u90e8DNS\u670d\u52a1\u5668\u3002<\/h2>\n<p>[\u7269\u7406\u673a\u5668]<br \/>\n\u521b\u5efa\u4e00\u4e2a ks \u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code>cmdline\r\ninstall\r\nlang ja_JP.UTF-8\r\nkeyboard jp106\r\n\r\nnetwork --device eth0 --onboot yes --bootproto=static --ip=192.168.205.6 --netmask=255.255.255.224 --gateway=192.168.205.30 --nameserver=8.8.8.8 --noipv6\r\nnetwork --hostname=dns-01\r\n\r\nzerombr\r\nbootloader --location=mbr --append=\"crashkernel=auto biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200n8\"\r\n\r\nclearpart --linux --drives=vda\r\npart \/boot --fstype xfs --size=1024 --ondisk=vda\r\npart pv.1 --size=1024 --grow --ondisk=vda\r\nvolgroup centos pv.1\r\nlogvol swap --fstype swap --name=swap --vgname=centos --size=1024\r\nlogvol \/    --fstype xfs  --name=root --vgname=centos --size=1024 --grow\r\n\r\nrootpw --plaintext rootpassword\r\nuser --groups=wheel --name=user-01 --password=user-01password --plaintext\r\nauthconfig --enableshadow --passalgo=sha512\r\nselinux --enforcing\r\nfirstboot --disabled\r\ntimezone --utc Asia\/Tokyo\r\nreboot\r\n\r\n%packages --nobase\r\n%end\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u78c1\u76d8\u6620\u50cf\u3002<\/p>\n<pre class=\"post-pre\"><code>qemu-img create -f qcow2 \/var\/lib\/libvirt\/images\/dns-01.qcow2 8G\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u865a\u62df\u673a\u3002<\/p>\n<pre class=\"post-pre\"><code>virt-install --connect=qemu:\/\/\/system \\\r\n --name=dns-01 \\\r\n --vcpus=1 \\\r\n --ram=1024 \\\r\n --accelerate \\\r\n --hvm \\\r\n --disk \/var\/lib\/libvirt\/images\/dns-01.qcow2,size=8,format=qcow2,bus=virtio \\\r\n --location='\/opt\/Linux\/CentOS-7-x86_64-DVD-1804.iso' \\\r\n --network bridge=br205,model=virtio \\\r\n --nographics \\\r\n --initrd-inject=.\/dns-01.ks \\\r\n --extra-args='ks=file:\/dns-01.ks biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200n8' \\\r\n --os-type=linux \\\r\n --os-variant=centos7.0 \\\r\n --arch=x86_64\r\n<\/code><\/pre>\n<p>[dns-01]<br \/>\n\u5b89\u88c5 firewalld \u5e76\u914d\u7f6e dnsmasq\u3002<\/p>\n<pre class=\"post-pre\"><code>yum -y update\r\n\r\nnmcli c mod eth0 connection.zone internal\r\nfirewall-cmd --set-default-zone=internal\r\nfirewall-cmd --zone=internal --add-service=dns --permanent\r\nfirewall-cmd --zone=internal --remove-service=mdns --permanent\r\nfirewall-cmd --zone=internal --remove-service=samba-client --permanent\r\nfirewall-cmd --zone=internal --remove-service=dhcpv6-client --permanent\r\n\r\nyum -y install dnsmasq\r\n\r\nreboot\r\n<\/code><\/pre>\n<p>\u5728\u4e3b\u673a\u6587\u4ef6\u4e2d\u6dfb\u52a0\u5185\u5bb9\u3002<\/p>\n<pre class=\"post-pre\"><code>192.168.205.1  lb-01     lb-01.example.com console console.example.com\r\n192.168.205.3  ansible   ansible.example.com\r\n192.168.205.6  dns-01    dns-01.example.com\r\n192.168.205.8  repo-01   repo-01.example.com\r\n192.168.205.9  ntp-01    ntp-01.example.com\r\n192.168.205.11 master-01 master-01.example.com\r\n192.168.205.12 master-02 master-02.example.com\r\n192.168.205.13 master-03 master-03.example.com\r\n192.168.205.14 infra-01  infra-01.example.com\r\n192.168.205.15 infra-02  infra-02.example.com\r\n192.168.205.16 infra-03  infra-03.example.com\r\n192.168.205.17 node-01   node-01.example.com\r\n192.168.205.18 node-02   node-02.example.com\r\n192.168.205.19 node-03   node-03.example.com\r\n192.168.205.21 gfs-01    gfs-01.example.com\r\n192.168.205.22 gfs-02    gfs-02.example.com\r\n192.168.205.23 gfs-03    gfs-03.example.com\r\n192.168.205.24 gfs-04    gfs-04.example.com\r\n192.168.205.25 gfs-05    gfs-05.example.com\r\n192.168.205.26 gfs-06    gfs-06.example.com\r\n<\/code><\/pre>\n<p>\u7f16\u8f91\u5e76\u542f\u52a8dnsmasq\u7684\u914d\u7f6e\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"n\">port<\/span>=<span class=\"m\">53<\/span>\r\n<span class=\"n\">domain<\/span>-<span class=\"n\">needed<\/span>\r\n<span class=\"n\">bogus<\/span>-<span class=\"n\">priv<\/span>\r\n<span class=\"n\">resolv<\/span>-<span class=\"n\">file<\/span>=\/<span class=\"n\">etc<\/span>\/<span class=\"n\">dnsmasq<\/span>.<span class=\"n\">resolv<\/span>.<span class=\"n\">conf<\/span>\r\n<span class=\"n\">strict<\/span>-<span class=\"n\">order<\/span>\r\n<span class=\"n\">local<\/span>=\/<span class=\"n\">example<\/span>.<span class=\"n\">com<\/span>\/\r\n<span class=\"n\">expand<\/span>-<span class=\"n\">hosts<\/span>\r\n<span class=\"n\">domain<\/span>=<span class=\"n\">example<\/span>.<span class=\"n\">com<\/span>\r\n<span class=\"n\">conf<\/span>-<span class=\"n\">dir<\/span>=\/<span class=\"n\">etc<\/span>\/<span class=\"n\">dnsmasq<\/span>.<span class=\"n\">d<\/span>,.<span class=\"n\">rpmnew<\/span>,.<span class=\"n\">rpmsave<\/span>,.<span class=\"n\">rpmorig<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"n\">nameserver<\/span> <span class=\"m\">8<\/span>.<span class=\"m\">8<\/span>.<span class=\"m\">8<\/span>.<span class=\"m\">8<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>systemctl start dnsmasq\r\nsystemctl enable dnsmasq\r\n<\/code><\/pre>\n<p>\u7f16\u8f91hosts\u6587\u4ef6\u540e\uff0c\u9700\u8981\u91cd\u65b0\u542f\u52a8dnsmasq\u3002<\/p>\n<h2>\u521b\u5efa\u672c\u5730\u4ee3\u7801\u5e93\u3002<\/h2>\n<p>\u867d\u7136\u6ca1\u6709\u95ee\u9898\uff0c\u4f46\u539f\u59cb\u76f8\u5173\u7684\u8f6f\u4ef6\u5305\u4e0b\u8f7d\u53ef\u80fd\u9700\u8981\u8d85\u8fc7\u4e00\u4e2a\u5c0f\u65f6\u7684\u65f6\u95f4\u3002\u56e0\u4e3a\u4e00\u5f00\u59cb\u53ef\u80fd\u8981\u53cd\u590d\u521b\u5efa\u548c\u7834\u574f\u73af\u5883\uff0c\u6240\u4ee5\u5efa\u8bae\u63d0\u524d\u521b\u5efa\u4ec5\u5305\u542b\u539f\u59cb\u76f8\u5173\u8f6f\u4ef6\u5305\u7684\u672c\u5730\u4ed3\u5e93\uff0c\u4ee5\u8282\u7701\u65f6\u95f4\u3002<\/p>\n<p>\u521b\u5efa\u4e00\u4e2a\u7269\u7406\u673a\u6587\u4ef6\u7684KS\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code>cmdline\r\ninstall\r\nlang ja_JP.UTF-8\r\nkeyboard jp106\r\n\r\nnetwork --device eth0 --onboot yes --bootproto=static --ip=192.168.205.8 --netmask=255.255.255.224 --gateway=192.168.205.30 --nameserver=192.168.205.6 --noipv6\r\nnetwork --hostname=repo-01\r\n\r\nzerombr\r\nbootloader --location=mbr --append=\"crashkernel=auto biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200n8\"\r\n\r\nclearpart --linux --drives=vda\r\npart \/boot --fstype xfs --size=1024 --ondisk=vda\r\npart pv.1 --size=1024 --grow --ondisk=vda\r\nvolgroup centos pv.1\r\nlogvol swap --fstype swap --name=swap --vgname=centos --size=1024\r\nlogvol \/    --fstype xfs  --name=root --vgname=centos --size=1024 --grow\r\n\r\nrootpw --plaintext rootpassword\r\nuser --groups=wheel --name=user-01 --password=user-01password --plaintext\r\nauthconfig --enableshadow --passalgo=sha512\r\nselinux --enforcing\r\nfirstboot --disabled\r\ntimezone --utc Asia\/Tokyo\r\nreboot\r\n\r\n%packages --nobase\r\n%end\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u78c1\u76d8\u6620\u50cf\u3002<\/p>\n<pre class=\"post-pre\"><code>qemu-img create -f qcow2 \/var\/lib\/libvirt\/images\/repo-01.qcow2 8G\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u865a\u62df\u673a\u3002<\/p>\n<pre class=\"post-pre\"><code>virt-install --connect=qemu:\/\/\/system \\\r\n --name=repo-01 \\\r\n --vcpus=1 \\\r\n --ram=1024 \\\r\n --accelerate \\\r\n --hvm \\\r\n --disk \/var\/lib\/libvirt\/images\/repo-01.qcow2,size=8,format=qcow2,bus=virtio \\\r\n --location='\/opt\/Linux\/CentOS-7-x86_64-DVD-1804.iso' \\\r\n --network bridge=br205,model=virtio \\\r\n --nographics \\\r\n --initrd-inject=.\/repo-01.ks \\\r\n --extra-args='ks=file:\/repo-01.ks biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200n8' \\\r\n --os-type=linux \\\r\n --os-variant=centos7.0 \\\r\n --arch=x86_64\r\n<\/code><\/pre>\n<p>[repo-01]<br \/>\n\u8fdb\u884cfirewalld\u7684\u8bbe\u7f6e\uff0c\u5e76\u5b89\u88c5\u6240\u9700\u7684\u672c\u5730\u4ed3\u5e93\u5305\u3002<\/p>\n<pre class=\"post-pre\"><code>yum -y update\r\n\r\nnmcli c mod eth0 connection.zone internal\r\nfirewall-cmd --set-default-zone=internal\r\nfirewall-cmd --zone=internal --add-service=http --permanent\r\nfirewall-cmd --zone=internal --remove-service=mdns --permanent\r\nfirewall-cmd --zone=internal --remove-service=samba-client --permanent\r\nfirewall-cmd --zone=internal --remove-service=dhcpv6-client --permanent\r\n\r\nyum install -y httpd yum-utils createrepo centos-release-openshift-origin39 \r\nsystemctl enable httpd\r\n\r\nreboot\r\n<\/code><\/pre>\n<p>\u4e3a\u4e86\u4e0e\u7279\u5b9a\u539f\u4ef6\u76f8\u5173\u7684\u5305\u8fdb\u884c\u4e0b\u8f7d\u5e76\u521b\u5efa\u8f6f\u4ef6\u4ed3\u5e93\u3002<\/p>\n<pre class=\"post-pre\"><code>mkdir \/var\/www\/html\/repo\r\ncreaterepo --database \/var\/www\/html\/repo\r\nyum install -y --downloadonly --downloaddir=\/var\/www\/html\/repo origin origin-clients origin-master origin-node origin-sdn-ovs\r\ncreaterepo --update \/var\/www\/html\/repo\r\n<\/code><\/pre>\n<h2>2-6. NTP\u670d\u52a1\u5668<\/h2>\n<p>\u5373\u4f7f\u6ca1\u6709\u8fd9\u4e2a\u4e5f\u53ef\u4ee5\u5de5\u4f5c\uff0c\u4f46\u5982\u679c\u8981\u521b\u5efa\uff0c\u5e94\u8be5\u4f7f\u7528\u4e00\u79cd\u666e\u904d\u7684\u65b9\u6cd5\u8fdb\u884c\u521b\u5efa\u3002<br \/>\n\u521b\u5efa\u65b9\u6cd5\u4ea4\u7ed9\u5176\u4ed6\u6587\u7ae0\u3002<br \/>\n\u540e\u7eed\u6b65\u9aa4\u662f\u57fa\u4e8e\u5df2\u521b\u5efa\u7684\u60c5\u51b5\u4e0b\u7684\u3002<\/p>\n<h1>3. \u521b\u5efa OpenShift \u8fd0\u884c\u865a\u62df\u673a<\/h1>\n<h2>3-1. lb-01<\/h2>\n<p>3-1. \u78c5 -01<\/p>\n<p>[\u7269\u7406\u673a\u5668]<br \/>\n\u521b\u5efa\u4e00\u4e2aks\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code>cmdline\r\ninstall\r\nlang ja_JP.UTF-8\r\nkeyboard jp106\r\n\r\nnetwork --device eth0 --onboot yes --bootproto=static --ip=192.168.205.1 --netmask=255.255.255.224 --gateway=192.168.205.30 --nameserver=192.168.205.6 --noipv6\r\nnetwork --hostname=lb-01\r\n\r\nzerombr\r\nbootloader --location=mbr --append=\"crashkernel=auto biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200n8\"\r\n\r\nclearpart --linux --drives=vda\r\npart \/boot --fstype xfs --size=1024 --ondisk=vda\r\npart pv.1 --size=1024 --grow --ondisk=vda\r\nvolgroup centos pv.1\r\nlogvol swap --fstype swap --name=swap --vgname=centos --size=1024\r\nlogvol \/    --fstype xfs  --name=root --vgname=centos --size=1024 --grow\r\n\r\nrootpw --plaintext rootpassword\r\nuser --groups=wheel --name=user-01 --password=user-01password --plaintext\r\nauthconfig --enableshadow --passalgo=sha512\r\nselinux --enforcing\r\nfirstboot --disabled\r\ntimezone --utc Asia\/Tokyo\r\nreboot\r\n\r\n%packages --nobase\r\n%end\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u78c1\u76d8\u6620\u50cf\u3002<\/p>\n<pre class=\"post-pre\"><code>qemu-img create -f qcow2 \/var\/lib\/libvirt\/images\/lb-01.qcow2 8G\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u865a\u62df\u673a\u3002<\/p>\n<pre class=\"post-pre\"><code>virt-install --connect=qemu:\/\/\/system \\\r\n --name=lb-01 \\\r\n --vcpus=2 \\\r\n --ram=2048 \\\r\n --accelerate \\\r\n --hvm \\\r\n --disk \/var\/lib\/libvirt\/images\/lb-01.qcow2,size=8,format=qcow2,bus=virtio \\\r\n --location='\/opt\/Linux\/CentOS-7-x86_64-DVD-1804.iso' \\\r\n --network bridge=br205,model=virtio \\\r\n --nographics \\\r\n --initrd-inject=.\/lb-01.ks \\\r\n --extra-args='ks=file:\/lb-01.ks biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200n8' \\\r\n --os-type=linux \\\r\n --os-variant=centos7.0 \\\r\n --arch=x86_64\r\n<\/code><\/pre>\n<h2>3-2 \u4e3b-01<\/h2>\n<p>[\u7269\u7406\u673a\u5668]<br \/>\n\u521b\u5efaks\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code>cmdline\r\ninstall\r\nlang ja_JP.UTF-8\r\nkeyboard jp106\r\n\r\nnetwork --device eth0 --onboot yes --bootproto=static --ip=192.168.205.11 --netmask=255.255.255.224 --gateway=192.168.205.30 --nameserver=192.168.205.6 --noipv6\r\nnetwork --hostname=master-01\r\n\r\nzerombr\r\nbootloader --location=mbr --append=\"crashkernel=auto biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200n8\"\r\n\r\nclearpart --linux --drives=vda\r\npart \/boot --fstype xfs --size=1024 --ondisk=vda\r\npart pv.1 --size=65536 --ondisk=vda\r\nvolgroup centos pv.1\r\nlogvol \/ --fstype xfs  --name=root --vgname=centos --size=1024 --grow\r\n\r\nrootpw --plaintext rootpassword\r\nuser --groups=wheel --name=user-01 --password=user-01password --plaintext\r\nauthconfig --enableshadow --passalgo=sha512\r\nselinux --enforcing\r\nfirstboot --disabled\r\ntimezone --utc Asia\/Tokyo\r\nreboot\r\n\r\n%packages --nobase\r\n%end\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u78c1\u76d8\u955c\u50cf\u3002<\/p>\n<pre class=\"post-pre\"><code>qemu-img create -f qcow2 \/var\/lib\/libvirt\/images\/master-01.qcow2 128G\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u865a\u62df\u673a\u3002<\/p>\n<pre class=\"post-pre\"><code>virt-install --connect=qemu:\/\/\/system \\\r\n --name=master-01 \\\r\n --vcpus=8 \\\r\n --ram=24576 \\\r\n --accelerate \\\r\n --hvm \\\r\n --disk \/var\/lib\/libvirt\/images\/master-01.qcow2,size=128,format=qcow2,bus=virtio \\\r\n --location='\/opt\/Linux\/CentOS-7-x86_64-DVD-1804.iso' \\\r\n --network bridge=br205,model=virtio \\\r\n --nographics \\\r\n --initrd-inject=.\/master-01.ks \\\r\n --extra-args='ks=file:\/master-01.ks biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200n8' \\\r\n --os-type=linux \\\r\n --os-variant=centos7.0 \\\r\n --arch=x86_64\r\n<\/code><\/pre>\n<p>\u4f7f\u7528\u4e0d\u540c\u7684\u4e3b\u673a\u540d\u548cIP\u5730\u5740\u521b\u5efa\u865a\u62df\u673amaster-02\u548cmaster-03\u3002<\/p>\n<h2>3-3. \u57fa\u7840\u8bbe\u65bd-01<\/h2>\n<p>\u521b\u5efa\u7269\u7406\u673a\u5668<br \/>\n\u521b\u5efaKS\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code>cmdline\r\ninstall\r\nlang ja_JP.UTF-8\r\nkeyboard jp106\r\n\r\nnetwork --device eth0 --onboot yes --bootproto=static --ip=192.168.205.14 --netmask=255.255.255.224 --gateway=192.168.205.30 --nameserver=192.168.205.6 --noipv6\r\nnetwork --hostname=infra-01\r\n\r\nzerombr\r\nbootloader --location=mbr --append=\"crashkernel=auto biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200n8\"\r\n\r\nclearpart --linux --drives=vda\r\npart \/boot --fstype xfs --size=1024 --ondisk=vda\r\npart pv.1 --size=32768 --ondisk=vda\r\nvolgroup centos pv.1\r\nlogvol \/ --fstype xfs  --name=root --vgname=centos --size=1024 --grow\r\n\r\nrootpw --plaintext rootpassword\r\nuser --groups=wheel --name=user-01 --password=user-01password --plaintext\r\nauthconfig --enableshadow --passalgo=sha512\r\nselinux --enforcing\r\nfirstboot --disabled\r\ntimezone --utc Asia\/Tokyo\r\nreboot\r\n\r\n%packages --nobase\r\n%end\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u78c1\u76d8\u6620\u50cf\u3002<\/p>\n<pre class=\"post-pre\"><code>qemu-img create -f qcow2 \/var\/lib\/libvirt\/images\/infra-01.qcow2 96G\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u865a\u62df\u673a\u3002<\/p>\n<pre class=\"post-pre\"><code>virt-install --connect=qemu:\/\/\/system \\\r\n --name=infra-01 \\\r\n --vcpus=8 \\\r\n --ram=16384 \\\r\n --accelerate \\\r\n --hvm \\\r\n --disk \/var\/lib\/libvirt\/images\/infra-01.qcow2,size=96,format=qcow2,bus=virtio \\\r\n --location='\/opt\/Linux\/CentOS-7-x86_64-DVD-1804.iso' \\\r\n --network bridge=br205,model=virtio \\\r\n --nographics \\\r\n --initrd-inject=.\/infra-01.ks \\\r\n --extra-args='ks=file:\/infra-01.ks biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200n8' \\\r\n --os-type=linux \\\r\n --os-variant=centos7.0 \\\r\n --arch=x86_64\r\n<\/code><\/pre>\n<p>\u66f4\u6539\u4e3b\u673a\u540d\u548cIP\u5730\u5740\uff0c\u521b\u5efainfra-02\uff0c03\uff0cnode-01\uff0c02\uff0c03\u7684\u865a\u62df\u673a\u3002<\/p>\n<h2>3-4. \u4e0d\u540c\u4eba\u7684\u8eab\u4efd\u8bc1<\/h2>\n<p>\u521b\u5efa\u4e00\u4e2a\u7269\u7406\u673a\u5668\u7684ks\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code>cmdline\r\ninstall\r\nlang ja_JP.UTF-8\r\nkeyboard jp106\r\n\r\nnetwork --device eth0 --onboot yes --bootproto=static --ip=192.168.205.21 --netmask=255.255.255.224 --gateway=192.168.205.30 --nameserver=192.168.205.6 --noipv6\r\nnetwork --hostname=gfs-01\r\n\r\nzerombr\r\nbootloader --location=mbr --append=\"crashkernel=auto biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200n8\"\r\n\r\nclearpart --linux --drives=vda\r\npart \/boot --fstype xfs --size=1024 --ondisk=vda\r\npart pv.1 --size=8192 --ondisk=vda\r\nvolgroup centos pv.1\r\nlogvol \/ --fstype xfs  --name=root --vgname=centos --size=1024 --grow\r\n\r\nrootpw --plaintext rootpassword\r\nuser --groups=wheel --name=user-01 --password=user-01password --plaintext\r\nauthconfig --enableshadow --passalgo=sha512\r\nselinux --enforcing\r\nfirstboot --disabled\r\ntimezone --utc Asia\/Tokyo\r\nreboot\r\n\r\n%packages --nobase\r\n%end\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u78c1\u76d8\u6620\u50cf\u3002<\/p>\n<pre class=\"post-pre\"><code>qemu-img create -f qcow2 \/var\/lib\/libvirt\/images\/gfs-01.qcow2 200G\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u865a\u62df\u673a\u3002<\/p>\n<pre class=\"post-pre\"><code>virt-install --connect=qemu:\/\/\/system \\\r\n --name=gfs-01 \\\r\n --vcpus=2 \\\r\n --ram=8192 \\\r\n --accelerate \\\r\n --hvm \\\r\n --disk \/var\/lib\/libvirt\/images\/gfs-01.qcow2,size=200,format=qcow2,bus=virtio \\\r\n --location='\/opt\/Linux\/CentOS-7-x86_64-DVD-1804.iso' \\\r\n --network bridge=br205,model=virtio \\\r\n --nographics \\\r\n --initrd-inject=.\/gfs-01.ks \\\r\n --extra-args='ks=file:\/gfs-01.ks biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200n8' \\\r\n --os-type=linux \\\r\n --os-variant=centos7.0 \\\r\n --arch=x86_64\r\n<\/code><\/pre>\n<p>\u66f4\u6539\u4e3b\u673a\u540d\u548cIP\u5730\u5740\u4ee5\u521b\u5efagfs-02\uff0c03\uff0c04\uff0c05\uff0c06\u7684\u865a\u62df\u673a\u3002<\/p>\n<h1>\u521b\u5efa\u548c\u8bbe\u7f6e\u4f5c\u4e1a\u670d\u52a1\u5668<\/h1>\n<h2>4-1.\u521b\u5efaansible-01<\/h2>\n<p>\u521b\u5efa\u4e00\u4e2a\u7269\u7406\u673a\u5236\u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code>cmdline\r\ninstall\r\nlang ja_JP.UTF-8\r\nkeyboard jp106\r\n\r\nnetwork --device eth0 --onboot yes --bootproto=static --ip=192.168.205.3 --netmask=255.255.255.224 --gateway=192.168.205.30 --nameserver=192.168.205.6 --noipv6\r\nnetwork --hostname=ansible-01\r\n\r\nzerombr\r\nbootloader --location=mbr --append=\"crashkernel=auto biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200n8\"\r\n\r\nclearpart --linux --drives=vda\r\npart \/boot --fstype xfs --size=1024 --ondisk=vda\r\npart pv.1 --size=1024 --grow --ondisk=vda\r\nvolgroup centos pv.1\r\nlogvol swap --fstype swap --name=swap --vgname=centos --size=1024\r\nlogvol \/    --fstype xfs  --name=root --vgname=centos --size=1024 --grow\r\n\r\nrootpw --plaintext rootpassword\r\nuser --groups=wheel --name=user-01 --password=user-01password --plaintext\r\nauthconfig --enableshadow --passalgo=sha512\r\nselinux --enforcing\r\nfirstboot --disabled\r\ntimezone --utc Asia\/Tokyo\r\nreboot\r\n\r\n%packages --nobase\r\n%end\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u78c1\u76d8\u955c\u50cf\u3002<\/p>\n<pre class=\"post-pre\"><code>qemu-img create -f qcow2 \/var\/lib\/libvirt\/images\/ansible-01.qcow2 8G\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u865a\u62df\u673a\u3002<\/p>\n<pre class=\"post-pre\"><code>virt-install --connect=qemu:\/\/\/system \\\r\n --name=ansible-01 \\\r\n --vcpus=1 \\\r\n --ram=1024 \\\r\n --accelerate \\\r\n --hvm \\\r\n --disk \/var\/lib\/libvirt\/images\/ansible-01.qcow2,size=8,format=qcow2,bus=virtio \\\r\n --location='\/opt\/Linux\/CentOS-7-x86_64-DVD-1804.iso' \\\r\n --network bridge=br205,model=virtio \\\r\n --nographics \\\r\n --initrd-inject=.\/ansible-01.ks \\\r\n --extra-args='ks=file:\/ansible-01.ks biosdevname=0 net.ifnames=0 console=tty0 console=ttyS0,115200n8' \\\r\n --os-type=linux \\\r\n --os-variant=centos7.0 \\\r\n --arch=x86_64\r\n<\/code><\/pre>\n<p>[ansible-01]<br \/>\n\u5b89\u88c5 firewalld \u5e76\u8fdb\u884c\u914d\u7f6e\u8bbe\u7f6e\uff0c\u5b89\u88c5\u6240\u9700\u7684\u8f6f\u4ef6\u5305\u3002<\/p>\n<pre class=\"post-pre\"><code>yum -y update\r\n\r\nnmcli c mod eth0 connection.zone internal\r\nfirewall-cmd --set-default-zone=internal\r\nfirewall-cmd --zone=internal --remove-service=mdns --permanent\r\nfirewall-cmd --zone=internal --remove-service=samba-client --permanent\r\nfirewall-cmd --zone=internal --remove-service=dhcpv6-client --permanent\r\n\r\nyum install -y git epel-release python2-passlib httpd-tools java-1.8.0-openjdk-headless patch\r\nyum install -y --enablerepo=epel ansible pyOpenSSL\r\n\r\nreboot\r\n<\/code><\/pre>\n<h2>4-2. \u914d\u7f6e OpenShift \u64cd\u4f5c\u865a\u62df\u673a\u7684\u8bbe\u7f6e\u3002<\/h2>\n<p>[ansible-01]<br \/>\n\u521b\u5efa\u6ca1\u6709\u5bc6\u7801\u7684\u5bc6\u94a5\u3002<\/p>\n<pre class=\"post-pre\"><code>ssh-keygen\r\n<\/code><\/pre>\n<p>\u53d1\u9001\u5bc6\u94a5\u7ed9\u5404\u4e2a\u670d\u52a1\u5668\u3002<\/p>\n<pre class=\"post-pre\"><code>ssh-copy-id -i ~\/.ssh\/id_rsa.pub lb-01\r\nssh-copy-id -i ~\/.ssh\/id_rsa.pub master-01\r\nssh-copy-id -i ~\/.ssh\/id_rsa.pub master-02\r\nssh-copy-id -i ~\/.ssh\/id_rsa.pub master-03\r\nssh-copy-id -i ~\/.ssh\/id_rsa.pub infra-01\r\nssh-copy-id -i ~\/.ssh\/id_rsa.pub infra-02\r\nssh-copy-id -i ~\/.ssh\/id_rsa.pub infra-03\r\nssh-copy-id -i ~\/.ssh\/id_rsa.pub node-01\r\nssh-copy-id -i ~\/.ssh\/id_rsa.pub node-02\r\nssh-copy-id -i ~\/.ssh\/id_rsa.pub node-03\r\nssh-copy-id -i ~\/.ssh\/id_rsa.pub gfs-01\r\nssh-copy-id -i ~\/.ssh\/id_rsa.pub gfs-02\r\nssh-copy-id -i ~\/.ssh\/id_rsa.pub gfs-03\r\nssh-copy-id -i ~\/.ssh\/id_rsa.pub gfs-04\r\nssh-copy-id -i ~\/.ssh\/id_rsa.pub gfs-05\r\nssh-copy-id -i ~\/.ssh\/id_rsa.pub gfs-06\r\n<\/code><\/pre>\n<h3>4-2-1. lb-01\u7684\u8bbe\u7f6e<\/h3>\n<p>[ansible-01]<br \/>\n\u8fdb\u884cyum\u66f4\u65b0<\/p>\n<pre class=\"post-pre\"><code>for host in lb-01;\r\n    do ssh ${host} 'yum -y update'\r\n    done\r\n<\/code><\/pre>\n<p>\u9632\u706b\u5899\u3001\u65f6\u95f4\u540c\u6b65\u5668\u3001ifcfg-eth0 \u7684\u8bbe\u7f6e\u3002<\/p>\n<pre class=\"post-pre\"><code>for host in lb-01 ;\r\n    do ssh ${host} 'nmcli c mod eth0 connection.zone internal; \\\r\n                    firewall-cmd --set-default-zone=internal; \\\r\n                    firewall-cmd --zone=internal --add-service=http --permanent; \\\r\n                    firewall-cmd --zone=internal --add-service=https --permanent; \\\r\n                    firewall-cmd --zone=internal --remove-service=mdns --permanent; \\\r\n                    firewall-cmd --zone=internal --remove-service=samba-client --permanent; \\\r\n                    firewall-cmd --zone=internal --remove-service=dhcpv6-client --permanent; \\\r\n                    sed -i -e \"\/server\/s\/^\/#\/\" \/etc\/chrony.conf; \\\r\n                    sed -i -e \"s\/server 3\\.centos\\.pool\\.ntp\\.org iburst\/server 3.centos.pool.ntp.org iburst\\nserver 192.168.205.9 iburst\\nport 0\/\" \/etc\/chrony.conf; \\\r\n                    sed -i -e \"\/HWADDR\/s\/^\/#\/\" \/etc\/sysconfig\/network-scripts\/ifcfg-eth0; \\\r\n                    sed -i -e \"\/UUID\/s\/^\/#\/\" \/etc\/sysconfig\/network-scripts\/ifcfg-eth0; \\\r\n                    sed -i -e \"\\$aDOMAIN=example.com\" \/etc\/sysconfig\/network-scripts\/ifcfg-eth0;'\r\n    done\r\n<\/code><\/pre>\n<p>\u91cd\u65b0\u542f\u52a8\u3002<\/p>\n<pre class=\"post-pre\"><code>for host in lb-01;\r\n    do ssh ${host} 'reboot'\r\n    done\r\n<\/code><\/pre>\n<h3>4-2-2. \u5e08\u5085\u3001\u57fa\u7840\u8bbe\u65bd\u3001\u8282\u70b9\u7684\u8bbe\u7f6e<\/h3>\n<p>\u8bf7\u8fdb\u884cyum\u66f4\u65b0\u3002<\/p>\n<pre class=\"post-pre\"><code>for host in master-01 \\\r\n    master-02 \\\r\n    master-03 \\\r\n    infra-01 \\\r\n    infra-02 \\\r\n    infra-03 \\\r\n    node-01 \\\r\n    node-02 \\\r\n    node-03;\r\n    do ssh ${host} 'yum -y update'\r\n    done\r\n<\/code><\/pre>\n<p>\u706b\u7246\u3001\u6642\u9418\u4f3a\u670d\u5668\u3001\u4ee5\u53caifcfg-eth0\u7684\u914d\u7f6e\u8a2d\u5b9a\u3002<\/p>\n<pre class=\"post-pre\"><code>for host in master-01 \\\r\n    master-02 \\\r\n    master-03 \\\r\n    infra-01 \\\r\n    infra-02 \\\r\n    infra-03 \\\r\n    node-01 \\\r\n    node-02 \\\r\n    node-03;\r\n    do ssh ${host} 'nmcli c mod eth0 connection.zone internal; \\\r\n                    firewall-cmd --set-default-zone=internal; \\\r\n                    firewall-cmd --zone=internal --remove-service=mdns --permanent; \\\r\n                    firewall-cmd --zone=internal --remove-service=samba-client --permanent; \\\r\n                    firewall-cmd --zone=internal --remove-service=dhcpv6-client --permanent; \\\r\n                    sed -i -e \"\/server\/s\/^\/#\/\" \/etc\/chrony.conf; \\\r\n                    sed -i -e \"s\/server 3\\.centos\\.pool\\.ntp\\.org iburst\/server 3.centos.pool.ntp.org iburst\\nserver 192.168.205.9 iburst\\nport 0\/\" \/etc\/chrony.conf; \\\r\n                    sed -i -e \"\/HWADDR\/s\/^\/#\/\" \/etc\/sysconfig\/network-scripts\/ifcfg-eth0; \\\r\n                    sed -i -e \"\/UUID\/s\/^\/#\/\" \/etc\/sysconfig\/network-scripts\/ifcfg-eth0; \\\r\n                    sed -i -e \"\\$aDOMAIN=example.com\" \/etc\/sysconfig\/network-scripts\/ifcfg-eth0;'\r\n    done\r\n<\/code><\/pre>\n<p>\u5b89\u88c5\u5fc5\u8981\u7684\u8f6f\u4ef6\u5305\u3002<\/p>\n<p>Note: The translation assumes that the phrase &#8220;\u5fc5\u8981\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb&#8221; is written in Japanese and not in Chinese.<\/p>\n<pre class=\"post-pre\"><code>for host in master-01 \\\r\n    master-02 \\\r\n    master-03 \\\r\n    infra-01 \\\r\n    infra-02 \\\r\n    infra-03 \\\r\n    node-01 \\\r\n    node-02 \\\r\n    node-03;\r\n    do ssh ${host} 'yum -y install wget git net-tools bind-utils yum-utils iptables-services bridge-utils bash-completion kexec-tools sos psacct'\r\n    done\r\n<\/code><\/pre>\n<p>\u521b\u5efa VDA3\u3002<\/p>\n<pre class=\"post-pre\"><code>for host in master-01 \\\r\n    master-02 \\\r\n    master-03 \\\r\n    infra-01 \\\r\n    infra-02 \\\r\n    infra-03 \\\r\n    node-01 \\\r\n    node-02 \\\r\n    node-03;\r\n    do ssh ${host} 'echo -e \"n\\np\\n3\\n\\n\\nt\\n3\\n8e\\nw\\n\" | fdisk \/dev\/vda'\r\n    done\r\n<\/code><\/pre>\n<p>\u91cd\u65b0\u542f\u52a8\u3002<\/p>\n<pre class=\"post-pre\"><code>for host in master-01 \\\r\n    master-02 \\\r\n    master-03 \\\r\n    infra-01 \\\r\n    infra-02 \\\r\n    infra-03 \\\r\n    node-01 \\\r\n    node-02 \\\r\n    node-03;\r\n    do ssh ${host} 'reboot'\r\n    done\r\n<\/code><\/pre>\n<p>\u5b89\u88c5Docker\u3002<\/p>\n<pre class=\"post-pre\"><code>for host in master-01 \\\r\n    master-02 \\\r\n    master-03 \\\r\n    infra-01 \\\r\n    infra-02 \\\r\n    infra-03 \\\r\n    node-01 \\\r\n    node-02 \\\r\n    node-03;\r\n    do ssh ${host} 'vgcreate docker-vg \/dev\/vda3; \\\r\n                    yum -y install docker-1.13.1; \\\r\n                    rpm -V docker-1.13.1; \\\r\n                    echo \"VG=docker-vg\" &gt; \/etc\/sysconfig\/docker-storage-setup; \\\r\n                    docker-storage-setup; \\\r\n                    systemctl start docker; \\\r\n                    systemctl enable docker;'\r\n    done\r\n<\/code><\/pre>\n<p>\u4ec5\u6dfb\u52a0\u4e3b\u8981\u7684\u9644\u52a0\u5305\u3002<\/p>\n<pre class=\"post-pre\"><code>for host in master-01 \\\r\n    master-02 \\\r\n    master-03;\r\n    do ssh ${host} \"yum -y install centos-release-gluster httpd-tools\"\r\n    done\r\n<\/code><\/pre>\n<p>\u5982\u679c\u642d\u5efa\u4e86\u672c\u5730\u4ee3\u7801\u5e93\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u64cd\u4f5c\u3002<\/p>\n<pre class=\"post-pre\"><code>for host in master-01 \\\r\n    master-02 \\\r\n    master-03 \\\r\n    infra-01 \\\r\n    infra-02 \\\r\n    infra-03 \\\r\n    node-01 \\\r\n    node-02 \\\r\n    node-03;\r\n    do ssh ${host} 'yum -y install yum-plugin-priorities; \\\r\n                    echo -e \"[local]\\nname=Local Repo\\nbaseurl=http:\/\/192.168.205.8\/repo\\ngpgcheck=0\\npriority=1\" &gt; \/etc\/yum.repos.d\/local.repo; \\\r\n                    yum clean all;'\r\n    done\r\n<\/code><\/pre>\n<h3>4-2-3. \u5efa\u7acb gfs \u7684\u914d\u7f6e<\/h3>\n<p>[ansible-01]<br \/>\n\u6267\u884cyum update\u547d\u4ee4\u8fdb\u884c\u66f4\u65b0\u3002<\/p>\n<pre class=\"post-pre\"><code>for host in gfs-01 \\\r\n    gfs-02 \\\r\n    gfs-03 \\\r\n    gfs-04 \\\r\n    gfs-05 \\\r\n    gfs-06;\r\n    do ssh ${host} 'yum -y update'\r\n    done\r\n<\/code><\/pre>\n<p>\u9632\u706b\u7246d\u3001chrony\u3001ifcfg-eth0\u3001SELinux\u7684\u8a2d\u5b9a\u3002<\/p>\n<pre class=\"post-pre\"><code>for host in gfs-01 \\\r\n    gfs-02 \\\r\n    gfs-03 \\\r\n    gfs-04 \\\r\n    gfs-05 \\\r\n    gfs-06;\r\n    do ssh ${host} 'nmcli c mod eth0 connection.zone internal; \\\r\n                    firewall-cmd --set-default-zone=internal; \\\r\n                    firewall-cmd --permanent --zone=internal --add-rich-rule=\"rule family=\"ipv4\" source address=\"192.168.205.0\/27\" accept\"; \\\r\n                    firewall-cmd --zone=internal --remove-service=mdns --permanent; \\\r\n                    firewall-cmd --zone=internal --remove-service=samba-client --permanent; \\\r\n                    firewall-cmd --zone=internal --remove-service=dhcpv6-client --permanent; \\\r\n                    sed -i -e \"\/server\/s\/^\/#\/\" \/etc\/chrony.conf; \\\r\n                    sed -i -e \"s\/server 3\\.centos\\.pool\\.ntp\\.org iburst\/server 3.centos.pool.ntp.org iburst\\nserver 192.168.205.9 iburst\\nport 0\/\" \/etc\/chrony.conf; \\\r\n                    sed -i -e \"\/HWADDR\/s\/^\/#\/\" \/etc\/sysconfig\/network-scripts\/ifcfg-eth0; \\\r\n                    sed -i -e \"\/UUID\/s\/^\/#\/\" \/etc\/sysconfig\/network-scripts\/ifcfg-eth0; \\\r\n                    sed -i -e \"\\$aDOMAIN=example.com\" \/etc\/sysconfig\/network-scripts\/ifcfg-eth0; \\\r\n                    setsebool -P virt_sandbox_use_fusefs on; \\\r\n                    setsebool -P virt_use_fusefs on;'\r\n    done\r\n<\/code><\/pre>\n<p>\u5b89\u88c5 GlusterFS\u3002<\/p>\n<pre class=\"post-pre\"><code>for host in gfs-01 \\\r\n    gfs-02 \\\r\n    gfs-03 \\\r\n    gfs-04 \\\r\n    gfs-05 \\\r\n    gfs-06;\r\n    do ssh ${host} 'yum -y install centos-release-gluster; \\\r\n                    yum -y install glusterfs-server gluster-block; \\\r\n                    systemctl enable glusterd; \\\r\n                    systemctl enable gluster-blockd;'\r\n    done\r\n<\/code><\/pre>\n<p>\u7f16\u8f91logrotate\u914d\u7f6e\u3002<br \/>\n\u7531\u4e8eGlusterFS\u7684\u65e5\u5fd7\u4e00\u6b21\u6027\u8fbe\u5230\u4e86\u6570GB\uff0c\u5e76\u4e14\u5206\u533a\u4f7f\u7528\u7387\u8fbe\u5230\u4e86100%\uff0c\u6240\u4ee5\u6211\u4eec\u51b3\u5b9a\u5c06\u65e5\u5fd7\u6587\u4ef6\u6309\u65e5\u5206\u5272\u3002<\/p>\n<pre class=\"post-pre\"><code>for host in gfs-01 \\\r\n    gfs-02 \\\r\n    gfs-03 \\\r\n    gfs-04 \\\r\n    gfs-05 \\\r\n    gfs-06;\r\n    do ssh ${host} 'sed -i -e \"s\/weekly\/daily\/\" \/etc\/logrotate.d\/glusterfs;'\r\ndone\r\n<\/code><\/pre>\n<p>\u521b\u5efaVDA3\u3002<\/p>\n<pre class=\"post-pre\"><code>for host in gfs-01 \\\r\n    gfs-02 \\\r\n    gfs-03 \\\r\n    gfs-04 \\\r\n    gfs-05 \\\r\n    gfs-06;\r\n    do ssh ${host} 'echo -e \"n\\np\\n3\\n\\n\\nt\\n3\\n8e\\nw\\n\" | fdisk \/dev\/vda'\r\n    done\r\n<\/code><\/pre>\n<p>\u91cd\u542f\u3002<\/p>\n<pre class=\"post-pre\"><code>for host in gfs-01 \\\r\n    gfs-02 \\\r\n    gfs-03 \\\r\n    gfs-04 \\\r\n    gfs-05 \\\r\n    gfs-06;\r\n    do ssh ${host} 'reboot'\r\n    done\r\n<\/code><\/pre>\n<h3>4-2-4. \u542f\u52a8\u786e\u8ba4\u548c\u5907\u4efd<\/h3>\n<p>[ansible-01]<br \/>\n\u8bf7\u786e\u8ba4\u662f\u5426\u663e\u793a\u4e3a\u5168\u90e8\u6d3b\u52a8\u3002<\/p>\n<pre class=\"post-pre\"><code>for host in master-01 \\\r\n    master-02 \\\r\n    master-03 \\\r\n    infra-01 \\\r\n    infra-02 \\\r\n    infra-03 \\\r\n    node-01 \\\r\n    node-02 \\\r\n    node-03;\r\n    do ssh ${host} \"systemctl is-active docker;\"\r\n    done\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code>for host in gfs-01 \\\r\n    gfs-02 \\\r\n    gfs-03 \\\r\n    gfs-04 \\\r\n    gfs-05 \\\r\n    gfs-06;\r\n    do ssh ${host} \"systemctl is-active glusterd; systemctl is-active gluster-blockd;\"\r\n    done\r\n<\/code><\/pre>\n<p>\u5982\u679c\u4f60\u5df2\u7ecf\u5b8c\u6210\u4e86\u8fd9\u4e00\u6b65\uff0c\u5f3a\u70c8\u5efa\u8bae\u4f60\u5173\u95edOpenShift\u865a\u62df\u673a\u5e76\u5907\u4efd\u78c1\u76d8\u955c\u50cf\u6587\u4ef6\u3002\u5982\u679c\u8981\u5378\u8f7dOpenShift\u5e76\u91cd\u65b0\u5b89\u88c5\uff0c\u5378\u8f7d\u53ef\u80fd\u4f1a\u5931\u8d25\u5e76\u7559\u4e0b\u5783\u573e\u6216\u5220\u9664\u4e00\u4e9b\u5fc5\u8981\u7684\u5185\u5bb9\uff0c\u56e0\u6b64\u6700\u53ef\u9760\u7684\u65b9\u6cd5\u662f\u7528\u65b0\u7684\u865a\u62df\u673a\u78c1\u76d8\u955c\u50cf\u6587\u4ef6\u66ff\u6362\u539f\u6709\u7684\u3002<\/p>\n<p>\u5982\u679c\u8981\u4e00\u952e\u5173\u95ed\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u64cd\u4f5c\u3002<\/p>\n<pre class=\"post-pre\"><code>for host in lb-01 \\\r\n    master-01 \\\r\n    master-02 \\\r\n    master-03 \\\r\n    infra-01 \\\r\n    infra-02 \\\r\n    infra-03 \\\r\n    node-01 \\\r\n    node-02 \\\r\n    node-03 \\\r\n    gfs-01 \\\r\n    gfs-02 \\\r\n    gfs-03 \\\r\n    gfs-04 \\\r\n    gfs-05 \\\r\n    gfs-06;\r\n    do ssh ${host} 'shutdown -h now'\r\n    done\r\n<\/code><\/pre>\n<h1>5. \u5b89\u88c5 OpenShift<\/h1>\n<h2>5-1. \u5b89\u88c5<\/h2>\n<p>[\u81ea\u52a8\u5316-01]<\/p>\n<p>\u4e0b\u8f7d OpenShift \u7684 Ansible yaml \u6587\u4ef6\u3002<\/p>\n<pre class=\"post-pre\"><code>git clone https:\/\/github.com\/openshift\/openshift-ansible\r\ncd openshift-ansible\r\ngit checkout release-3.9\r\n<\/code><\/pre>\n<p>\u7f16\u8f91yaml\u6587\u4ef6\u3002<br \/>\n\u6839\u636e2018\/10\/12\u7684\u786e\u8ba4\uff0c\u4f3c\u4e4e\u5df2\u7ecf\u8fdb\u884c\u4e86\u4fee\u6b63\u3002<br \/>\n\u56e0\u6b64\uff0c\u5728\u8fd9\u91cc\u4e0d\u9700\u8981\u8fdb\u884c\u4fee\u6b63\uff0c\u4f46\u4e3a\u4e86\u4ee5\u9632\u4e07\u4e00\uff0c\u6211\u4f1a\u5728\u6587\u7ae0\u4e2d\u7559\u4e0b\u8bb0\u5f55\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"na\">resturl<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">http:\/\/{%<\/span> <span class=\"s\">if<\/span> <span class=\"s\">glusterfs_heketi_is_native<\/span> <span class=\"s\">%}{{<\/span> <span class=\"s\">glusterfs_heketi_route<\/span> <span class=\"s\">}}{%<\/span> <span class=\"s\">else<\/span> <span class=\"s\">%}{{<\/span> <span class=\"s\">glusterfs_heketi_url<\/span> <span class=\"s\">}}:{{<\/span> <span class=\"s\">glusterfs_heketi_port<\/span> <span class=\"s\">}}{%<\/span> <span class=\"s\">endif<\/span> <span class=\"s\">%}\"<\/span>\r\n<span class=\"s\">\u2193<\/span>\r\n<span class=\"na\">resturl<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">http:\/\/{%<\/span> <span class=\"s\">if<\/span> <span class=\"s\">glusterfs_heketi_is_native<\/span> <span class=\"s\">%}heketi-{{<\/span> <span class=\"s\">glusterfs_name<\/span> <span class=\"s\">}}.{{<\/span> <span class=\"s\">glusterfs_namespace<\/span> <span class=\"s\">}}.svc.cluster.local:8080{%<\/span> <span class=\"s\">else<\/span> <span class=\"s\">%}{{<\/span> <span class=\"s\">glusterfs_heketi_url<\/span> <span class=\"s\">}}:{{<\/span> <span class=\"s\">glusterfs_heketi_port<\/span> <span class=\"s\">}}{%<\/span> <span class=\"s\">endif<\/span> <span class=\"s\">%}\"<\/span>\r\n<\/code><\/pre>\n<pre class=\"post-pre\"><code><span class=\"na\">resturl<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">http:\/\/{%<\/span> <span class=\"s\">if<\/span> <span class=\"s\">glusterfs_heketi_is_native<\/span> <span class=\"s\">%}{{<\/span> <span class=\"s\">glusterfs_heketi_route<\/span> <span class=\"s\">}}{%<\/span> <span class=\"s\">else<\/span> <span class=\"s\">%}{{<\/span> <span class=\"s\">glusterfs_heketi_url<\/span> <span class=\"s\">}}:{{<\/span> <span class=\"s\">glusterfs_heketi_port<\/span> <span class=\"s\">}}{%<\/span> <span class=\"s\">endif<\/span> <span class=\"s\">%}\"<\/span>\r\n<span class=\"s\">\u2193<\/span>\r\n<span class=\"na\">resturl<\/span><span class=\"pi\">:<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">http:\/\/{%<\/span> <span class=\"s\">if<\/span> <span class=\"s\">glusterfs_heketi_is_native<\/span> <span class=\"s\">%}heketi-{{<\/span> <span class=\"s\">glusterfs_name<\/span> <span class=\"s\">}}.{{<\/span> <span class=\"s\">glusterfs_namespace<\/span> <span class=\"s\">}}.svc.cluster.local:8080{%<\/span> <span class=\"s\">else<\/span> <span class=\"s\">%}{{<\/span> <span class=\"s\">glusterfs_heketi_url<\/span> <span class=\"s\">}}:{{<\/span> <span class=\"s\">glusterfs_heketi_port<\/span> <span class=\"s\">}}{%<\/span> <span class=\"s\">endif<\/span> <span class=\"s\">%}\"<\/span>\r\n<\/code><\/pre>\n<p>\u521b\u5efa\u5e93\u5b58\u6587\u4ef6\u3002<br \/>\n\u901a\u8fc7openshift_hosted_registry_storage_volume_size\u7684\u503c\u6765\u66f4\u6539\u5185\u90e8\u6ce8\u518c\u8868\u7684\u5927\u5c0f\u3002<\/p>\n<pre class=\"post-pre\"><code>[masters]\r\nmaster-0[1:3].example.com\r\n\r\n[etcd]\r\nmaster-0[1:3].example.com\r\n\r\n[nodes]\r\nmaster-0[1:3].example.com\r\ninfra-0[1:3].example.com openshift_node_labels=\"{'region': 'infra', 'zone': 'default', 'node-role.kubernetes.io\/infra': 'true'}\"\r\nnode-0[1:3].example.com openshift_node_labels=\"{'region': 'primary', 'zone': 'default'}\"\r\n\r\n[lb]\r\nconsole.example.com\r\n\r\n[glusterfs]\r\ngfs-04.example.com glusterfs_ip=192.168.205.24 glusterfs_devices='[ \"\/dev\/vda3\" ]'\r\ngfs-05.example.com glusterfs_ip=192.168.205.25 glusterfs_devices='[ \"\/dev\/vda3\" ]'\r\ngfs-06.example.com glusterfs_ip=192.168.205.26 glusterfs_devices='[ \"\/dev\/vda3\" ]'\r\n\r\n[glusterfs_registry]\r\ngfs-01.example.com glusterfs_ip=192.168.205.21 glusterfs_devices='[ \"\/dev\/vda3\" ]'\r\ngfs-02.example.com glusterfs_ip=192.168.205.22 glusterfs_devices='[ \"\/dev\/vda3\" ]'\r\ngfs-03.example.com glusterfs_ip=192.168.205.23 glusterfs_devices='[ \"\/dev\/vda3\" ]'\r\n\r\n[OSEv3:children]\r\nmasters\r\nnodes\r\netcd\r\nlb\r\nglusterfs\r\nglusterfs_registry\r\n\r\n[OSEv3:vars]\r\nansible_user=root\r\nansible_become=yes\r\nos_firewall_use_firewalld=true\r\nopenshift_deployment_type=origin\r\nopenshift_release=v3.9\r\nopenshift_master_default_subdomain=app.example.com\r\nopenshift_master_cluster_method=native\r\nopenshift_master_cluster_hostname=console.example.com\r\nopenshift_master_cluster_public_hostname=console.example.com\r\nopenshift_master_logging_public_url=https:\/\/kibana.example.com\r\nopenshift_disable_check=memory_availability,disk_availability,package_version,docker_image_availability\r\nopenshift_docker_options=\"--insecure-registry=172.30.0.0\/16 --selinux-enabled --log-opt max-size=1M --log-opt max-file=3\"\r\nopenshift_router_selector=\"region=infra\"\r\nopenshift_enable_service_catalog=true\r\nansible_service_broker_install=false\r\ndebug_level=2\r\nopenshift_master_dynamic_provisioning_enabled=true\r\n\r\n# registry\r\nopenshift_hosted_registry_replicas=3\r\nopenshift_hosted_registry_selector=\"region=infra\"\r\nopenshift_hosted_registry_storage_kind=glusterfs\r\nopenshift_hosted_registry_storage_volume_size=64Gi\r\n\r\n# CNS storage for applications\r\nopenshift_storage_glusterfs_is_native=false\r\nopenshift_storage_glusterfs_namespace=app-glusterfs\r\nopenshift_storage_glusterfs_name=storage\r\nopenshift_storage_glusterfs_storageclass=true\r\nopenshift_storage_glusterfs_block_deploy=false\r\n\r\nopenshift_storage_glusterfs_heketi_is_native=true\r\nopenshift_storage_glusterfs_heketi_executor=ssh\r\nopenshift_storage_glusterfs_heketi_ssh_port=22\r\nopenshift_storage_glusterfs_heketi_ssh_user=root\r\nopenshift_storage_glusterfs_heketi_ssh_sudo=false\r\nopenshift_storage_glusterfs_heketi_ssh_keyfile=\"\/root\/.ssh\/id_rsa\"\r\n\r\n# CNS storage for OpenShift infrastructure \r\nopenshift_storage_glusterfs_is_native=false \r\nopenshift_storage_glusterfs_registry_namespace=infra-glusterfs\r\nopenshift_storage_glusterfs_registry_name=registry\r\nopenshift_storage_glusterfs_registry_block_deploy=true\r\nopenshift_storage_glusterfs_registry_block_storageclass=true\r\nopenshift_storage_glusterfs_registry_block_storageclass_default=true\r\n\r\nopenshift_storage_glusterfs_registry_heketi_is_native=true\r\nopenshift_storage_glusterfs_registry_heketi_executor=ssh\r\nopenshift_storage_glusterfs_registry_heketi_ssh_port=22\r\nopenshift_storage_glusterfs_registry_heketi_ssh_user=root\r\nopenshift_storage_glusterfs_registry_heketi_ssh_sudo=false\r\nopenshift_storage_glusterfs_registry_heketi_ssh_keyfile=\"\/root\/.ssh\/id_rsa\"\r\n<\/code><\/pre>\n<p>\u63d0\u524d\u786e\u8ba4\u3002<br \/>\n\u5efa\u8bae\u5728\u4fdd\u5b58\u6807\u51c6\u8f93\u51fa\u4f5c\u4e3a\u65e5\u5fd7\u7684\u540c\u65f6\u8fdb\u884c\u64cd\u4f5c\u3002<br \/>\n\u5982\u679c\u51fa\u73b0\u9519\u8bef\uff0c\u8bf7\u67e5\u770b\u65e5\u5fd7\u5e76\u4fee\u6b63\u76f8\u5e94\u90e8\u5206\u3002<br \/>\n\u91cd\u590d\u6b64\u8fc7\u7a0b\u76f4\u5230\u6ca1\u6709\u51fa\u73b0\u9519\u8bef\u4e3a\u6b62\u3002<\/p>\n<pre class=\"post-pre\"><code>ansible-playbook -i inventory\/hosts playbooks\/prerequisites.yml -vvv\r\n<\/code><\/pre>\n<p>\u5b89\u88c5\u3002<br \/>\n\u5efa\u8bae\u5728\u6267\u884c\u8fc7\u7a0b\u4e2d\u5c06\u6807\u51c6\u8f93\u51fa\u4fdd\u5b58\u4e3a\u65e5\u5fd7\u3002<\/p>\n<pre class=\"post-pre\"><code>ansible-playbook -i inventory\/hosts playbooks\/deploy_cluster.yml -vvv\r\n<\/code><\/pre>\n<p>\u5982\u679c\u9047\u5230\u9519\u8bef\uff0c\u8bf7\u5c06\u5176\u56de\u6eda\u81f3\u5907\u4efd\u7684OpenShift\u64cd\u4f5c\u865a\u62df\u673a\u5e76\u8fdb\u884c\u4fee\u6b63\uff0c\u7136\u540e\u4eceprerequisites.yml\u91cd\u65b0\u6267\u884c\u3002<br \/>\n\u5982\u679c\u4e0d\u8fdb\u884c\u56de\u6eda\uff0c\u91cd\u65b0\u6267\u884cdeploy_cluster.yml\u4e5f\u65e0\u6cd5\u6210\u529f\u3002<\/p>\n<h2>5-2. \u7528\u6237\u521b\u5efa<\/h2>\n<p>[\u4e3b\u63a7-01]<br \/>\n\u521b\u5efa\u8d26\u53f7\u3002<\/p>\n<pre class=\"post-pre\"><code>htpasswd -b -c \/etc\/origin\/master\/htpasswd &lt;user&gt; &lt;password&gt;\r\n<\/code><\/pre>\n<p>\u7ed9\u521b\u5efa\u7684\u7528\u6237\u5206\u914d\u7ba1\u7406\u5458\u6743\u9650\u3002<\/p>\n<pre class=\"post-pre\"><code>oadm policy add-cluster-role-to-user cluster-admin &lt;user&gt;\r\n<\/code><\/pre>\n<h2>5-3. HA Proxy \u7684\u914d\u7f6e<\/h2>\n<p>\u5728HA Proxy\u4e0a\u65b0\u589e\u914d\u7f6e\u3002<br \/>\n\u65b0\u589e\u914d\u7f6e\u5c06\u7aef\u53e380\u548c443\u7684\u8bbf\u95ee\u8f6c\u53d1\u81f3infra-01\uff0c02\u548c03\u3002<\/p>\n<pre class=\"post-pre\"><code><span class=\"n\">frontend<\/span>  <span class=\"n\">router<\/span>-<span class=\"n\">http<\/span>\r\n    <span class=\"n\">bind<\/span> *:<span class=\"m\">80<\/span>\r\n    <span class=\"n\">default_backend<\/span> <span class=\"n\">router<\/span>-<span class=\"n\">http<\/span>\r\n    <span class=\"n\">mode<\/span> <span class=\"n\">tcp<\/span>\r\n    <span class=\"n\">option<\/span> <span class=\"n\">tcplog<\/span>\r\n\r\n<span class=\"n\">backend<\/span> <span class=\"n\">router<\/span>-<span class=\"n\">http<\/span>\r\n    <span class=\"n\">balance<\/span> <span class=\"n\">source<\/span>\r\n    <span class=\"n\">mode<\/span> <span class=\"n\">tcp<\/span>\r\n    <span class=\"n\">server<\/span>      <span class=\"n\">router1<\/span> <span class=\"m\">192<\/span>.<span class=\"m\">168<\/span>.<span class=\"m\">205<\/span>.<span class=\"m\">14<\/span>:<span class=\"m\">80<\/span> <span class=\"n\">check<\/span>\r\n    <span class=\"n\">server<\/span>      <span class=\"n\">router2<\/span> <span class=\"m\">192<\/span>.<span class=\"m\">168<\/span>.<span class=\"m\">205<\/span>.<span class=\"m\">15<\/span>:<span class=\"m\">80<\/span> <span class=\"n\">check<\/span>\r\n    <span class=\"n\">server<\/span>      <span class=\"n\">router3<\/span> <span class=\"m\">192<\/span>.<span class=\"m\">168<\/span>.<span class=\"m\">205<\/span>.<span class=\"m\">16<\/span>:<span class=\"m\">80<\/span> <span class=\"n\">check<\/span>\r\n\r\n<span class=\"n\">frontend<\/span>  <span class=\"n\">router<\/span>-<span class=\"n\">https<\/span>\r\n    <span class=\"n\">bind<\/span> *:<span class=\"m\">443<\/span>\r\n    <span class=\"n\">default_backend<\/span> <span class=\"n\">router<\/span>-<span class=\"n\">https<\/span>\r\n    <span class=\"n\">mode<\/span> <span class=\"n\">tcp<\/span>\r\n    <span class=\"n\">option<\/span> <span class=\"n\">tcplog<\/span>\r\n\r\n<span class=\"n\">backend<\/span> <span class=\"n\">router<\/span>-<span class=\"n\">https<\/span>\r\n    <span class=\"n\">balance<\/span> <span class=\"n\">source<\/span>\r\n    <span class=\"n\">mode<\/span> <span class=\"n\">tcp<\/span>\r\n    <span class=\"n\">server<\/span>      <span class=\"n\">router1<\/span> <span class=\"m\">192<\/span>.<span class=\"m\">168<\/span>.<span class=\"m\">205<\/span>.<span class=\"m\">14<\/span>:<span class=\"m\">443<\/span> <span class=\"n\">check<\/span>\r\n    <span class=\"n\">server<\/span>      <span class=\"n\">router2<\/span> <span class=\"m\">192<\/span>.<span class=\"m\">168<\/span>.<span class=\"m\">205<\/span>.<span class=\"m\">15<\/span>:<span class=\"m\">443<\/span> <span class=\"n\">check<\/span>\r\n    <span class=\"n\">server<\/span>      <span class=\"n\">router3<\/span> <span class=\"m\">192<\/span>.<span class=\"m\">168<\/span>.<span class=\"m\">205<\/span>.<span class=\"m\">16<\/span>:<span class=\"m\">443<\/span> <span class=\"n\">check<\/span>\r\n<\/code><\/pre>\n<p>\u91cd\u65b0\u542f\u52a8 HA Proxy<\/p>\n<pre class=\"post-pre\"><code>systemctl restart haproxy\r\n<\/code><\/pre>\n<h2>5-4. \u786e\u8ba4<\/h2>\n<p>\u8bf7\u5c1d\u8bd5\u4f7f\u7528\u5728https:\/\/console.example.com:8443\u4e0a\u521b\u5efa\u7684\u5e10\u6237\u767b\u5f55\u5e76\u786e\u8ba4\u662f\u5426\u6210\u529f\u3002<\/p>\n<h2>5-5. \u5b89\u88c5\u6307\u6807\u548c\u65e5\u5fd7\u8bb0\u5f55<\/h2>\n<p>\u5728 inventory \u6587\u4ef6\u4e2d\u6dfb\u52a0\u4e86\u6709\u5173\u5ea6\u91cf\u548c\u65e5\u5fd7\u5b89\u88c5\u5b9a\u4e49\u7684\u5185\u5bb9\u3002<\/p>\n<pre class=\"post-pre\"><code># metrics\r\nopenshift_metrics_install_metrics=true\r\nopenshift_metrics_hawkular_nodeselector={\"region\":\"infra\"}\r\nopenshift_metrics_cassandra_nodeselector={\"region\":\"infra\"}\r\nopenshift_metrics_heapster_nodeselector={\"region\":\"infra\"} \r\nopenshift_metrics_cassandra_pvc_size=8Gi\r\nopenshift_metrics_storage_kind=dynamic\r\nopenshift_metrics_cassanda_pvc_storage_class_name=glusterfs-registry-block\r\nopenshift_metrics_hawkular_hostname=hawkular-metrics.example.com\r\nopenshift_metrics_image_version=latest\r\n\r\n# logging\r\nopenshift_logging_install_logging=true\r\nopenshift_logging_es_cluster_size=3  \r\nopenshift_logging_es_nodeselector={\"region\":\"infra\"}\r\nopenshift_logging_kibana_nodeselector={\"region\":\"infra\"}\r\nopenshift_logging_curator_nodeselector={\"region\":\"infra\"}\r\nopenshift_logging_storage_kind=dynamic\r\nopenshift_logging_es_pvc_size=8Gi   \r\nopenshift_logging_es_pvc_dynamic=true\r\nopenshift_logging_es_pvc_storage_class_name=glusterfs-registry-block\r\nopenshift_logging_image_version=latest\r\n<\/code><\/pre>\n<p>\u6267\u884cmetrics\u548clogging\u7684\u5b89\u88c5\u7528Playbook\u3002<\/p>\n<pre class=\"post-pre\"><code>ansible-playbook -i inventory\/hosts playbooks\/openshift-metrics\/config.yml -vvv\r\nansible-playbook -i inventory\/hosts playbooks\/openshift-logging\/config.yml -vvv\r\n<\/code><\/pre>\n<p>\u6307\u6807\u548c\u65e5\u5fd7\u5206\u522b\u90e8\u7f72\u5728\u540d\u4e3aopenshift-infra\u548clogging\u7684\u9879\u76ee\u4e2d\u7684\u4e13\u7528\u5bb9\u5668\u4e2d\u3002<br \/>\n\u7136\u800c\uff0c\u5728\u6700\u540e\u786e\u8ba4\u672c\u6587\u5185\u5bb9\u4e4b\u524d\uff0c\u4e3a\u4e86\u9a8c\u8bc1\uff0c\u6211\u5c1d\u8bd5\u8fdb\u884c\u4e86\u6240\u6709\u7684\u5b89\u88c5\u5de5\u4f5c\uff0c\u4f46\u662f\u4e24\u8005\u7684\u5bb9\u5668\u90e8\u7f72\u90fd\u5931\u8d25\u4e86\u3002\u4e4b\u524d\u6307\u6807\u7684\u90e8\u7f72\u6210\u529f\u4e86\u4e00\u6bb5\u65f6\u95f4\u3002<br \/>\n\u8fd9\u4e24\u4e2a\u5bf9\u4e8e\u81ea\u5df1\u7684\u5e94\u7528\u7a0b\u5e8f\u7684\u90e8\u7f72\u548c\u8fd0\u884c\u6ca1\u6709\u4efb\u4f55\u5f71\u54cd\u3002<\/p>\n<p>\u5982\u679c\u8981\u5378\u8f7d\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u64cd\u4f5c\u3002<\/p>\n<pre class=\"post-pre\"><code>ansible-playbook -i inventory\/hosts playbooks\/openshift-metrics\/config.yml -e openshift_metrics_install_metrics=false\r\nansible-playbook -i inventory\/hosts playbooks\/openshift-logging\/config.yml -e openshift_logging_install_logging=false\r\n<\/code><\/pre>\n<h1>\u603b\u7ed3<\/h1>\n<p>\u80fd\u591f\u5728\u4f4d\u4e8eKVM\u4e0a\u7684CentOS7\u865a\u62df\u673a\u7684\u8001\u65e7\u57fa\u7840\u8bbe\u65bd\u4e0a\u6210\u529f\u5b89\u88c5OpenShift\u3002<br \/>\n\u5c3d\u7ba1\u6211\u4eec\u4e0d\u786e\u5b9ametrics\u548clogging\u7684\u6b63\u786e\u5b89\u88c5\u65b9\u6cd5\uff0c\u4f46\u5373\u4f7f\u6ca1\u6709\u5b83\u4eec\u4e5f\u53ef\u4ee5\u8fd0\u884c\uff0c\u56e0\u6b64\u6211\u4eec\u5c06\u7ee7\u7eed\u90e8\u7f72\u81ea\u5df1\u7684\u5e94\u7528\u7a0b\u5e8f\u3002<br \/>\n\u5982\u679c\u6709\u4eba\u77e5\u9053metrics\u548clogging\u7684\u6b63\u786e\u5b89\u88c5\u65b9\u6cd5\uff0c\u8bf7\u544a\u8bc9\u6211\u3002<\/p>\n<p>\u9019\u88e1\u662f\u5f8c\u7de8\u3002<\/p>\n<h1>\u8bf7\u63d0\u4f9b\u4ee5\u4e0b\u8d44\u6599\u7684\u53c2\u8003<\/h1>\n<p>\u5148\u51b3\u6761\u4ef6<br \/>\n\u4e3b\u673a\u51c6\u5907<br \/>\n\u9ad8\u7ea7\u5b89\u88c5<br \/>\n\u4f7f\u7528GlusterFS\u8fdb\u884c\u6301\u4e45\u5b58\u50a8<br \/>\n\u5bb9\u5668\u539f\u751f\u5b58\u50a8 3.9<br \/>\n\u4f7f\u7528heketi\u7684\u670d\u52a1\u540d\u4f5c\u4e3aURL<br \/>\nOpenShift Origin 3.9\u7684\u6307\u6807\u5931\u8d25\uff0c\u539f\u56e0\u662f\u56fe\u50cf\u6807\u7b7e\u4e0d\u6b63\u786e\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5f8c\u534a\u8acb\u81f3\u6b64\u8655\u3002 \u9996\u5148 \u56e0\u4e3a\u6211\u5df2\u7ecf\u5728OpenShift Origin v3.9\u4e2d\u5efa\u7acb\u4e86\u73af\u5883\uff0c\u5e76\u6210\u529f\u4eceGitHub [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-50587","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>OpenShift Origin v3.9 \u7684\u73af\u5883\u5efa\u7acb\u548c\u5e94\u7528\u90e8\u7f72\uff08\u524d\u7bc7\uff09 - Blog - Silicon Cloud<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/zh\/blog\/openshift-origin-v3-9-\u7684\u73af\u5883\u5efa\u7acb\u548c\u5e94\u7528\u90e8\u7f72\uff08\u524d\u7bc7\uff09\u3002\/\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OpenShift Origin v3.9 \u7684\u73af\u5883\u5efa\u7acb\u548c\u5e94\u7528\u90e8\u7f72\uff08\u524d\u7bc7\uff09\" \/>\n<meta property=\"og:description\" content=\"\u5f8c\u534a\u8acb\u81f3\u6b64\u8655\u3002 \u9996\u5148 \u56e0\u4e3a\u6211\u5df2\u7ecf\u5728OpenShift Origin v3.9\u4e2d\u5efa\u7acb\u4e86\u73af\u5883\uff0c\u5e76\u6210\u529f\u4eceGitHub [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/zh\/blog\/openshift-origin-v3-9-\u7684\u73af\u5883\u5efa\u7acb\u548c\u5e94\u7528\u90e8\u7f72\uff08\u524d\u7bc7\uff09\u3002\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-01T13:15:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-30T07:08:17+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d92bd913a08637a6e3eac\/5-0.png\" \/>\n<meta name=\"author\" content=\"\u6e05, \u626c\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u6e05, \u626c\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/openshift-origin-v3-9-%e7%9a%84%e7%8e%af%e5%a2%83%e5%bb%ba%e7%ab%8b%e5%92%8c%e5%ba%94%e7%94%a8%e9%83%a8%e7%bd%b2%ef%bc%88%e5%89%8d%e7%af%87%ef%bc%89%e3%80%82\/\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/openshift-origin-v3-9-%e7%9a%84%e7%8e%af%e5%a2%83%e5%bb%ba%e7%ab%8b%e5%92%8c%e5%ba%94%e7%94%a8%e9%83%a8%e7%bd%b2%ef%bc%88%e5%89%8d%e7%af%87%ef%bc%89%e3%80%82\/\",\"name\":\"OpenShift Origin v3.9 \u7684\u73af\u5883\u5efa\u7acb\u548c\u5e94\u7528\u90e8\u7f72\uff08\u524d\u7bc7\uff09 - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\"},\"datePublished\":\"2023-02-01T13:15:37+00:00\",\"dateModified\":\"2024-04-30T07:08:17+00:00\",\"author\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/cb5556d2501da73d864cac945e8d9461\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/openshift-origin-v3-9-%e7%9a%84%e7%8e%af%e5%a2%83%e5%bb%ba%e7%ab%8b%e5%92%8c%e5%ba%94%e7%94%a8%e9%83%a8%e7%bd%b2%ef%bc%88%e5%89%8d%e7%af%87%ef%bc%89%e3%80%82\/#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/zh\/blog\/openshift-origin-v3-9-%e7%9a%84%e7%8e%af%e5%a2%83%e5%bb%ba%e7%ab%8b%e5%92%8c%e5%ba%94%e7%94%a8%e9%83%a8%e7%bd%b2%ef%bc%88%e5%89%8d%e7%af%87%ef%bc%89%e3%80%82\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/openshift-origin-v3-9-%e7%9a%84%e7%8e%af%e5%a2%83%e5%bb%ba%e7%ab%8b%e5%92%8c%e5%ba%94%e7%94%a8%e9%83%a8%e7%bd%b2%ef%bc%88%e5%89%8d%e7%af%87%ef%bc%89%e3%80%82\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.silicloud.com\/zh\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"OpenShift Origin v3.9 \u7684\u73af\u5883\u5efa\u7acb\u548c\u5e94\u7528\u90e8\u7f72\uff08\u524d\u7bc7\uff09\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/\",\"name\":\"Blog - Silicon Cloud\",\"description\":\"\",\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/cb5556d2501da73d864cac945e8d9461\",\"name\":\"\u6e05, \u626c\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/32a4239de8ff29adace466261d309424a1e5fe9f7e3036bf89fe03f2e3dbe717?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/32a4239de8ff29adace466261d309424a1e5fe9f7e3036bf89fe03f2e3dbe717?s=96&d=mm&r=g\",\"caption\":\"\u6e05, \u626c\"},\"url\":\"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyang\/\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.silicloud.com\/zh\/blog\/openshift-origin-v3-9-%e7%9a%84%e7%8e%af%e5%a2%83%e5%bb%ba%e7%ab%8b%e5%92%8c%e5%ba%94%e7%94%a8%e9%83%a8%e7%bd%b2%ef%bc%88%e5%89%8d%e7%af%87%ef%bc%89%e3%80%82\/#local-main-organization-logo\",\"url\":\"\",\"contentUrl\":\"\",\"caption\":\"Blog - Silicon Cloud\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"OpenShift Origin v3.9 \u7684\u73af\u5883\u5efa\u7acb\u548c\u5e94\u7528\u90e8\u7f72\uff08\u524d\u7bc7\uff09 - Blog - Silicon Cloud","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/zh\/blog\/openshift-origin-v3-9-\u7684\u73af\u5883\u5efa\u7acb\u548c\u5e94\u7528\u90e8\u7f72\uff08\u524d\u7bc7\uff09\u3002\/","og_locale":"zh_CN","og_type":"article","og_title":"OpenShift Origin v3.9 \u7684\u73af\u5883\u5efa\u7acb\u548c\u5e94\u7528\u90e8\u7f72\uff08\u524d\u7bc7\uff09","og_description":"\u5f8c\u534a\u8acb\u81f3\u6b64\u8655\u3002 \u9996\u5148 \u56e0\u4e3a\u6211\u5df2\u7ecf\u5728OpenShift Origin v3.9\u4e2d\u5efa\u7acb\u4e86\u73af\u5883\uff0c\u5e76\u6210\u529f\u4eceGitHub [&hellip;]","og_url":"https:\/\/www.silicloud.com\/zh\/blog\/openshift-origin-v3-9-\u7684\u73af\u5883\u5efa\u7acb\u548c\u5e94\u7528\u90e8\u7f72\uff08\u524d\u7bc7\uff09\u3002\/","og_site_name":"Blog - Silicon Cloud","article_published_time":"2023-02-01T13:15:37+00:00","article_modified_time":"2024-04-30T07:08:17+00:00","og_image":[{"url":"https:\/\/cdn.silicloud.com\/blog-img\/blog\/img\/657d92bd913a08637a6e3eac\/5-0.png"}],"author":"\u6e05, \u626c","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"\u6e05, \u626c","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"17 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/zh\/blog\/openshift-origin-v3-9-%e7%9a%84%e7%8e%af%e5%a2%83%e5%bb%ba%e7%ab%8b%e5%92%8c%e5%ba%94%e7%94%a8%e9%83%a8%e7%bd%b2%ef%bc%88%e5%89%8d%e7%af%87%ef%bc%89%e3%80%82\/","url":"https:\/\/www.silicloud.com\/zh\/blog\/openshift-origin-v3-9-%e7%9a%84%e7%8e%af%e5%a2%83%e5%bb%ba%e7%ab%8b%e5%92%8c%e5%ba%94%e7%94%a8%e9%83%a8%e7%bd%b2%ef%bc%88%e5%89%8d%e7%af%87%ef%bc%89%e3%80%82\/","name":"OpenShift Origin v3.9 \u7684\u73af\u5883\u5efa\u7acb\u548c\u5e94\u7528\u90e8\u7f72\uff08\u524d\u7bc7\uff09 - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website"},"datePublished":"2023-02-01T13:15:37+00:00","dateModified":"2024-04-30T07:08:17+00:00","author":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/cb5556d2501da73d864cac945e8d9461"},"breadcrumb":{"@id":"https:\/\/www.silicloud.com\/zh\/blog\/openshift-origin-v3-9-%e7%9a%84%e7%8e%af%e5%a2%83%e5%bb%ba%e7%ab%8b%e5%92%8c%e5%ba%94%e7%94%a8%e9%83%a8%e7%bd%b2%ef%bc%88%e5%89%8d%e7%af%87%ef%bc%89%e3%80%82\/#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/zh\/blog\/openshift-origin-v3-9-%e7%9a%84%e7%8e%af%e5%a2%83%e5%bb%ba%e7%ab%8b%e5%92%8c%e5%ba%94%e7%94%a8%e9%83%a8%e7%bd%b2%ef%bc%88%e5%89%8d%e7%af%87%ef%bc%89%e3%80%82\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/zh\/blog\/openshift-origin-v3-9-%e7%9a%84%e7%8e%af%e5%a2%83%e5%bb%ba%e7%ab%8b%e5%92%8c%e5%ba%94%e7%94%a8%e9%83%a8%e7%bd%b2%ef%bc%88%e5%89%8d%e7%af%87%ef%bc%89%e3%80%82\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.silicloud.com\/zh\/blog\/"},{"@type":"ListItem","position":2,"name":"OpenShift Origin v3.9 \u7684\u73af\u5883\u5efa\u7acb\u548c\u5e94\u7528\u90e8\u7f72\uff08\u524d\u7bc7\uff09"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#website","url":"https:\/\/www.silicloud.com\/zh\/blog\/","name":"Blog - Silicon Cloud","description":"","inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/cb5556d2501da73d864cac945e8d9461","name":"\u6e05, \u626c","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/32a4239de8ff29adace466261d309424a1e5fe9f7e3036bf89fe03f2e3dbe717?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/32a4239de8ff29adace466261d309424a1e5fe9f7e3036bf89fe03f2e3dbe717?s=96&d=mm&r=g","caption":"\u6e05, \u626c"},"url":"https:\/\/www.silicloud.com\/zh\/blog\/author\/qingyang\/"},{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.silicloud.com\/zh\/blog\/openshift-origin-v3-9-%e7%9a%84%e7%8e%af%e5%a2%83%e5%bb%ba%e7%ab%8b%e5%92%8c%e5%ba%94%e7%94%a8%e9%83%a8%e7%bd%b2%ef%bc%88%e5%89%8d%e7%af%87%ef%bc%89%e3%80%82\/#local-main-organization-logo","url":"","contentUrl":"","caption":"Blog - Silicon Cloud"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/50587","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/comments?post=50587"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/50587\/revisions"}],"predecessor-version":[{"id":92642,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/posts\/50587\/revisions\/92642"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/media?parent=50587"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/categories?post=50587"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/zh\/blog\/wp-json\/wp\/v2\/tags?post=50587"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}