天天看點

CentOS7安裝openshift3.9叢集CentOS7安裝openshift叢集

CentOS7安裝openshift叢集

開源容器應用程式平台,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叢集
CentOS7安裝openshift3.9叢集CentOS7安裝openshift叢集

繼續閱讀