CentOS7安裝openshift叢集
- OpenShift官網: https://www.openshift.com/
- Github: https://github.com/openshift/origin
開源容器應用程式平台,Origin是支援OpenShift的上遊社群項目。圍繞Docker容器打包和Kubernetes容器叢集管理的核心建構,Origin還增加了應用程式生命周期管理功能和DevOps工具。Origin提供了一個完整的開源容器應用程式平台。
安裝OpenShift Origin,它是Red Hat OpenShift的開源版本
- 環境CentOS7:
Hostname | Role | IP |
---|---|---|
master.aniu.so | Master, etcd, and node | 192.168.0.111 |
node1.aniu.so | Computer Node | 192.168.0.114 |
node2.aniu.so | 192.168.0.115 |
叢集配置參考: https://docs.openshift.org/latest/install_config/install/planning.html 配置群集的一些系統要求
- 主節點至少16G的記憶體
- 在所有節點上,需要實體卷上的可用空間才能為Docker Direct LVM建立新的卷組,var目錄至少40G,不然檢測通不過
主機設定
- 安裝依賴包,關閉防火牆,禁用selinux,添加sysctl net.ipv4.ip_forward=1,所有節點均執行
詳情見: https://github.com/openshift/origin/blob/master/docs/cluster_up_down.md#prerequisites 參考: https://docs.openshift.org/latest/install_config/install/host_preparation.html#install-config-install-host-preparation
yum install wget git net-tools bind-utils yum-utils iptables-services bridge-utils bash-completion kexec-tools sos psacct -y
yum install ansible pyOpenSSL -y
- 在所有節點上,安裝OpenShift Origin 3.9存儲庫和Docker。 接下來,為Docker Direct LVM建立一個卷組,以便像下面那樣設定LVM Thinpool。
# 以master為例,雖有節點都必須執行
[root@master ~]# yum -y install centos-release-openshift-origin37 docker
[root@master ~]# vgcreate centos /dev/sdb1 #筆者vgname為centos
Volume group "centos" successfully created
[root@master ~]# echo VG=centos >> /etc/sysconfig/docker-storage-setup
[root@master ~]# systemctl start docker
[root@master ~]# systemctl enable docker
- 設定三個節點master節點與其他節點ssh免密。友善執行ansible-playbook
# 在master節點上執行:
[root@master ~]# ssh-keygen -t rsa
# 建立免密設定
[root@master ~]# cat /etc/hosts # 參考筆者hosts,同步hosts到node1,node2
127.0.0.1 localhost localhost.localdomain pinpoint
###########################################
## openshift
192.168.0.113 master.aniu.so
192.168.0.114 node1.aniu.so
192.168.0.115 node2.aniu.so
[root@master ~]# ssh-copy-id master.aniu.so
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: WARNING: All keys were skipped because they already exist on the remote system.
(if you think this is a mistake, you may want to use -f option)
[root@master ~]# ssh-copy-id node1.aniu.so
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: WARNING: All keys were skipped because they already exist on the remote system.
(if you think this is a mistake, you may want to use -f option)
[root@master ~]# ssh-copy-id node2.aniu.so
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: WARNING: All keys were skipped because they already exist on the remote system.
(if you think this is a mistake, you may want to use -f option)
在主節點上,使用root登入并運作Ansible Playbook以設定OpenShift群集。
yum -y install atomic-openshift-utils
配置ansible的hosts如下:
[root@master ~]# cat /etc/ansible/hosts
# add follows to the end
[OSEv3:children]
masters
nodes
etcd
[OSEv3:vars]
# admin user created in previous section
ansible_ssh_user=root
openshift_deployment_type=origin
# use HTPasswd for authentication
openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider', 'filename': '/etc/origin/master/.htpasswd'}]
openshift_master_default_subdomain=apps.test.aniu.so
# allow unencrypted connection within cluster
openshift_docker_insecure_registries=172.30.0.0/16
[masters]
master.aniu.so openshift_schedulable=true containerized=false
[etcd]
master.aniu.so
[nodes]
# set labels [region: ***, zone: ***](any name you like)
master.aniu.so openshift_node_labels="{'region': 'infra', 'zone': 'default'}"
node1.aniu.so openshift_node_labels="{'region': 'primary', 'zone': 'east'}" openshift_schedulable=true
node2.aniu.so openshift_node_labels="{'region': 'primary', 'zone': 'west'}" openshift_schedulable=true
# 運作deploy_cluster.yml手冊以啟動安裝:
ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/deploy_cluster.yml # 此步驟會很慢,筆者大概花了2個多小時。。。
- 正常執行完成檢視狀态
- 可能會出現的報錯:
Error from server (Forbidden): nodes is forbidden: User "system:anonymous" cannot list nodes at the cluster scope: User "system:anonymous" cannot list all nodes in the cluster
報錯解決:
[root@master ~]# oc login -u system:admin # 使用admin登入進行檢視
Logged into "https://master.aniu.so:8443" as "system:admin" using existing credentials.
You have access to the following projects and can switch between them with 'oc project <projectname>':
* default
kube-public
kube-system
logging
management-infra
openshift
openshift-infra
openshift-node
openshift-web-console
Using project "default".
[root@master ~]# oc get nodes
NAME STATUS ROLES AGE VERSION
master.aniu.so Ready master 4h v1.9.1+a0ce1bc657
node1.aniu.so Ready <none> 4h v1.9.1+a0ce1bc657
node2.aniu.so Ready <none> 4h v1.9.1+a0ce1bc657
[root@master ~]# oc get nodes --show-labels=true
NAME STATUS ROLES AGE VERSION LABELS
master.aniu.so Ready master 4h v1.9.1+a0ce1bc657 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=master.aniu.so,node-role.kubernetes.io/master=true,region=infra,zone=default
node1.aniu.so Ready <none> 4h v1.9.1+a0ce1bc657 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=node1.aniu.so,region=primary,zone=east
node2.aniu.so Ready <none> 4h v1.9.1+a0ce1bc657 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=node2.aniu.so,region=primary,zone=west
建立一個新使用者用來登入openshift
- 在master節點上建立使用者:
[root@master ~]# htpasswd /etc/origin/master/.htpasswd aniu #
- 用任何作業系統使用者登入,然後登入OpenShift群集,隻需添加一個HTPasswd使用者
[root@master ~]# oc login
Authentication required for https://master.aniu.so:8443 (openshift)
Username: aniu
Password:
Login successful.
You don't have any projects. You can try to create a new project, by running
oc new-project <projectname>
[root@master ~]# oc whoami
aniu
[root@master ~]# oc logout
Logged "aniu" out on "https://master.aniu.so:8443"
- 可以從任何使用Web浏覽器的用戶端通路管理控制台。
CentOS7安裝openshift3.9叢集CentOS7安裝openshift叢集