Install docker
https://www.clouda.ca/blog/general/openshift-on-centos-7-quick-installation/
sudo yum check-update
curl -fsSL https://get.docker.com/ | sh
sudo systemctl start docker
sudo systemctl status docker
sudo usermod -aG docker username
Run openshift
Tweak for systemd way of setting INSECURE_REGISTRY
vi /etc/default/docker
DOCKER_OPTS="$DOCKER_OPTS --insecure-registry=172.30.0.0/16"
test
Open file /etc/sysconfig/docker
Add INSECURE_REGISTRY="--insecure-registry=<insecure-docker-hub-hostname> "
Restart Docker
Openshift will also require that our instance hostname can be resolved
vi /etc/hosts
Download openshift binary from github and install binary
https://github.com/openshift/origin/releases/
cd /tmp
wget https://github.com/openshift/origin/releases/download/v3.7.0/openshift-origin-server-v3.7.0-7ed6862-linux-64bit.tar.gz
cd openshift-origin-server-v3.7.0-7ed6862-linux-64bit/
sudo mv k* o* /usr/local/sbin/
Create start upscript
/usr/local/bin/start_openshift.sh
#!/bin/bash
cd /opt/openshift/
openshift start --public-master='https://<PUBLIC_IP>:8443' --master='https://<PRIVATE_IP>:8443'
#!/bin/bash
cd /opt/openshift/
openshift start --public-master='https://58.137.215.20:8443' --master='https://10.10.10.6:8443'
vi /etc/systemd/system/openshift.service
[Unit]
Description=OpenShift Origin Server
[Service]
Type=simple
ExecStart=/usr/local/bin/start_openshift.sh
Run
chmod u+x /usr/local/bin/start_openshift.sh
$ mkdir /opt/openshift/
$ systemctl daemon-reload
$ systemctl start openshift
error
failed to run Kubelet: failed to create kubelet: misconfiguration: kubelet cgroup driver: "systemd" is different from docker cgroup driver: "cgroupfs"
docker use cgroupfs
Kubernetes overrides of the default cfgroups and set to systemd instead. On systems where systemd is not used, this is unfortunate.
I compiled openshift origin again after commenting out line 79 in pkg/cmd/server/kubernetes/node/options/options.go
// server.CgroupDriver = "systemd"
... and now for me docker and kubernetes are using cgroupfs again for me.
Kubernetes does have a method to figure the docker cgroup driver in local-up-cluster.sh. But I don't know how everything is supposed to work together.
CGROUP_DRIVER=$(docker info | grep "Cgroup Driver:" | cut -f3- -d' ')
# docker info | grep "Cgroup Driver:" | cut -f3- -d' '
cgroupfs
change vi /usr/lib/systemd/system/docker.service
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -D --add-runtime cor=/bin/cc-oci-runtime --default-runtime=runc --exec-opt native.cgroupdriver=systemd
[Service]
# Allow maximum number of containers to run.
TasksMax=infinity
systemctl daemon-reload
systemctl restart docker
docker info | grep "Cgroup Driver:" | cut -f3- -d' '
systemd
In order to authenticate to our new OpenShift cluster to add these services, we’ll first need to tell the CLI tools where our settings and CA certificate are. For convenience, we’re going to add the following lines to /root/.bashrc so that they will load when we switch to the root user:
export KUBECONFIG=/opt/openshift/openshift.local.config/master/admin.kubeconfig
export CURL_CA_BUNDLE=/opt/openshift/openshift.local.config/master/ca.crt
login
source /root/.bashrc
oc login -u system:admin
result
oc login -u system:admin
Logged into "https://10.10.10.6: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
openshift
openshift-infra
openshift-nodeadd router and registry
oadm policy add-scc-to-user hostnetwork -z router
oadm router
oadm registry
run teminal show
[root@cicd openshift]# oadm policy add-scc-to-user hostnetwork -z router
scc "hostnetwork" added to: ["system:serviceaccount:default:router"]
[root@cicd openshift]# oadm router
info: password for stats user admin has been set to tKzZF3g1zB
--> Creating router router ...
serviceaccount "router" created
clusterrolebinding "router-router-role" created
deploymentconfig "router" created
service "router" created
--> Success
[root@cicd openshift]# oadm registry
--> Creating registry registry ...
serviceaccount "registry" created
clusterrolebinding "registry-registry-role" created
deploymentconfig "docker-registry" created
service "docker-registry" created
--> Success