Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save gitlabbin/360ab9e584a357066e85551b26ba8d8d to your computer and use it in GitHub Desktop.

Select an option

Save gitlabbin/360ab9e584a357066e85551b26ba8d8d to your computer and use it in GitHub Desktop.

Revisions

  1. @onuryilmaz onuryilmaz revised this gist Sep 21, 2017. 1 changed file with 13 additions and 0 deletions.
    13 changes: 13 additions & 0 deletions kubeadm-install-offline.md
    Original file line number Diff line number Diff line change
    @@ -1,3 +1,15 @@
    # Install Docker
    * Download all dependencies from by following the documentation
    https://docs.docker.com/engine/installation/linux/docker-ce/centos/#install-using-the-repository
    ```
    yumdownloader --resolve yum-utils device-mapper-persistent-data lvm2
    yumdownloader --resolve docker-ce
    ```
    * Copy to master node and install afterwards:
    ```
    yum install -y *.rpm
    ```

    # On master and nodes
    ## Pull images form internet access laptop

    @@ -116,6 +128,7 @@ sysctl -p
    ## Download kubernetes rpms

    ```
    yumdownloader --resolve ebtables ethtool iproute iptables libmnl libnetfilter_conntrack libnfnetlink socat tcp_wrappers-libs
    wget https://packages.cloud.google.com/yum/pool/e6aef7b2b7d9e5bd4db1e5747ebbc9f1f97bbfb8c7817ad68028565ca263a672-kubectl-1.6.0.x86_64.rpm
    wget https://packages.cloud.google.com/yum/pool/af8567f1ba6f8dc1d43b60702d45c02aca88607b0e721d76897e70f6a6e53115-kubelet-1.6.0.x86_64.rpm
    wget https://packages.cloud.google.com/yum/pool/e7a4403227dd24036f3b0615663a371c4e07a95be5fee53505e647fd8ae58aa6-kubernetes-cni-0.5.1.x86_64.rpm
  2. @onuryilmaz onuryilmaz revised this gist Sep 21, 2017. 1 changed file with 3 additions and 1 deletion.
    4 changes: 3 additions & 1 deletion kubeadm-install-offline.md
    Original file line number Diff line number Diff line change
    @@ -217,5 +217,7 @@ kubeadm join --token <token> <master-ip>
    # Trick and tips

    ```
    wget https://storage.googleapis.com/kubernetes-release/release/v1.4.6/kubernetes-client-linux-amd64.tar.gz
    curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.7.0/bin/linux/amd64/kubectl
    chmod +x ./kubectl
    sudo mv ./kubectl /usr/local/bin/kubectl
    ```
  3. @onuryilmaz onuryilmaz revised this gist Sep 21, 2017. 1 changed file with 4 additions and 4 deletions.
    8 changes: 4 additions & 4 deletions kubeadm-install-offline.md
    Original file line number Diff line number Diff line change
    @@ -116,10 +116,10 @@ sysctl -p
    ## Download kubernetes rpms

    ```
    wget https://packages.cloud.google.com/yum/pool/93af9d0fbd67365fa5bf3f85e3d36060138a62ab77e133e35f6cadc1fdc15299-kubectl-1.5.1-0.x86_64.rpm
    wget https://packages.cloud.google.com/yum/pool/8a299eb1db946b2bdf01c5d5c58ef959e7a9d9a0dd706e570028ebb14d48c42e-kubelet-1.5.1-0.x86_64.rpm
    wget https://packages.cloud.google.com/yum/pool/567600102f687e0f27bd1fd3d8211ec1cb12e71742221526bb4e14a412f4fdb5-kubernetes-cni-0.3.0.1-0.07a8a2.x86_64.rpm
    wget https://packages.cloud.google.com/yum/pool/5612db97409141d7fd839e734d9ad3864dcc16a630b2a91c312589a0a0d960d0-kubeadm-1.6.0-0.alpha.0.2074.a092d8e0f95f52.x86_64.rpm
    wget https://packages.cloud.google.com/yum/pool/e6aef7b2b7d9e5bd4db1e5747ebbc9f1f97bbfb8c7817ad68028565ca263a672-kubectl-1.6.0.x86_64.rpm
    wget https://packages.cloud.google.com/yum/pool/af8567f1ba6f8dc1d43b60702d45c02aca88607b0e721d76897e70f6a6e53115-kubelet-1.6.0.x86_64.rpm
    wget https://packages.cloud.google.com/yum/pool/e7a4403227dd24036f3b0615663a371c4e07a95be5fee53505e647fd8ae58aa6-kubernetes-cni-0.5.1.x86_64.rpm
    wget https://packages.cloud.google.com/yum/pool/5116fa4b73c700823cfc76b3cedff6622f2fbd0a3d2fa09bce6d93329771e291-kubeadm-1.6.0.x86_64.rpm
    ```

    ## Copy kubernetes rpms to the remote server
  4. @onuryilmaz onuryilmaz revised this gist Sep 21, 2017. 1 changed file with 38 additions and 36 deletions.
    74 changes: 38 additions & 36 deletions kubeadm-install-offline.md
    Original file line number Diff line number Diff line change
    @@ -26,25 +26,25 @@ docker pull weaveworks/weave-kube:2.0.4
    ## Save docker images to tarball

    ```
    docker save gcr.io/google_containers/kube-apiserver-amd64:v1.6.0
    docker save gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0
    docker save gcr.io/google_containers/kube-proxy-amd64:v1.6.0
    docker save gcr.io/google_containers/kube-scheduler-amd64:v1.6.0
    docker save gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.0
    docker save gcr.io/google_containers/etcd-amd64:3.0.17
    docker save gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.1
    docker save gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.1
    docker save gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.1
    docker save quay.io/coreos/flannel:v0.7.1-amd64
    docker save gcr.io/google_containers/pause-amd64:3.0
    docker save gcr.io/kubernetes-helm/tiller:v2.3.0
    docker save registry
    docker save busybox
    docker save weaveworks/weave-npc:2.0.4
    docker save weaveworks/weave-kube:2.0.4
    * docker save gcr.io/google-containers/kube-addon-manager:v6.1
    * docker save gcr.io/google_containers/exechealthz-amd64:1.2
    * docker save gcr.io/google_containers/kube-discovery-amd64:1.0
    docker save gcr.io/google_containers/kube-apiserver-amd64:v1.6.0 > kube-apiserver-amd64:v1.6.0.tar
    docker save gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0 > kube-controller-manager-amd64:v1.6.0.tar
    docker save gcr.io/google_containers/kube-proxy-amd64:v1.6.0 > kube-proxy-amd64:v1.6.0.tar
    docker save gcr.io/google_containers/kube-scheduler-amd64:v1.6.0 > kube-scheduler-amd64:v1.6.0.tar
    docker save gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.0 > kubernetes-dashboard-amd64:v1.6.0.tar
    docker save gcr.io/google_containers/etcd-amd64:3.0.17 > etcd-amd64:3.0.17.tar
    docker save gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.1 > k8s-dns-kube-dns-amd64:1.14.1.tar
    docker save gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.1 > k8s-dns-dnsmasq-nanny-amd64:1.14.1.tar
    docker save gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.1 > k8s-dns-sidecar-amd64:1.14.1.tar
    docker save quay.io/coreos/flannel:v0.7.1-amd64 > flannel:v0.7.1-amd64.tar
    docker save gcr.io/google_containers/pause-amd64:3.0 > gcr.io/google_containers/pause-amd64:3.0.tar
    docker save gcr.io/kubernetes-helm/tiller:v2.3.0 > gcr.io/kubernetes-helm/tiller:v2.3.0.tar
    docker save registry > registry.tar
    docker save busybox > busybox.tar
    docker save weaveworks/weave-npc:2.0.4 > weave-npc:2.0.4.tar
    docker save weaveworks/weave-kube:2.0.4 > weave-kube:2.0.4.tar
    * docker save gcr.io/google-containers/kube-addon-manager:v6.1 > kube-addon-manager:v6.1.tar
    * docker save gcr.io/google_containers/exechealthz-amd64:1.2 > exechealthz-amd64:1.2.tar
    * docker save gcr.io/google_containers/kube-discovery-amd64:1.0 > kube-discovery-amd64:1.0.tar
    ```

    ## Copy docker images tarball to the remote server
    @@ -68,23 +68,25 @@ systemctl enable docker && systemctl start docker
    ## Load docker images on remote server

    ```
    docker load < kube-apiserver-amd64_v1.5.0.tar
    docker load < kube-controller-manager-amd64_v1.5.0.tar
    docker load < kube-proxy-amd64_v1.5.0.tar
    docker load < kube-scheduler-amd64_v1.5.0.tar
    docker load < weave-npc_1.8.2.tar
    docker load < weave-kube_1.8.2.tar
    docker load < kubernetes-dashboard-amd64_v1.5.0.tar
    docker load < kube-addon-manager_v6.1.tar
    docker load < etcd-amd64_3.0.14-kubeadm.tar
    docker load < kubedns-amd64_1.9.tar
    docker load < dnsmasq-metrics-amd64_1.0.tar
    docker load < kubedns-amd64_1.8.tar
    docker load < kube-dnsmasq-amd64_1.4.tar
    docker load < kube-discovery-amd64_1.0.tar
    docker load < flannel-git_v0.6.1-28-g5dde68d-amd64.tar
    docker load < exechealthz-amd64_1.2.tar
    docker load < pause-amd64_3.0.tar
    docker load < kube-apiserver-amd64:v1.6.0.tar
    docker load < kube-controller-manager-amd64:v1.6.0.tar
    docker load < kube-proxy-amd64:v1.6.0.tar
    docker load < kube-scheduler-amd64:v1.6.0.tar
    docker load < kubernetes-dashboard-amd64:v1.6.0.tar
    docker load < etcd-amd64:3.0.17.tar
    docker load < k8s-dns-kube-dns-amd64:1.14.1.tar
    docker load < k8s-dns-dnsmasq-nanny-amd64:1.14.1.tar
    docker load < k8s-dns-sidecar-amd64:1.14.1.tar
    docker load < flannel:v0.7.1-amd64.tar
    docker load < gcr.io/google_containers/pause-amd64:3.0.tar
    docker load < gcr.io/kubernetes-helm/tiller:v2.3.0.tar
    docker load < registry.tar
    docker load < busybox.tar
    docker load < weave-npc:2.0.4.tar
    docker load < weave-kube:2.0.4.tar
    * docker load < kube-addon-manager:v6.1.tar
    * docker load < exechealthz-amd64:1.2.tar
    * docker load < kube-discovery-amd64:1.0.tar
    ```

    ## For Centos7, enable sysctl configuration
  5. @onuryilmaz onuryilmaz revised this gist Sep 21, 2017. 1 changed file with 38 additions and 39 deletions.
    77 changes: 38 additions & 39 deletions kubeadm-install-offline.md
    Original file line number Diff line number Diff line change
    @@ -2,50 +2,49 @@
    ## Pull images form internet access laptop

    ```
    * docker pull gcr.io/google_containers/kube-apiserver-amd64:v1.6.0
    * docker pull gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0
    * docker pull gcr.io/google_containers/kube-proxy-amd64:v1.6.0
    * docker pull gcr.io/google_containers/kube-scheduler-amd64:v1.6.0
    * docker pull gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.0
    * docker pull gcr.io/google_containers/etcd-amd64:3.0.17
    * docker pull gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.1
    * docker pull gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.1
    * docker pull gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.1
    * docker pull quay.io/coreos/flannel:v0.7.1-amd64
    * docker pull gcr.io/google_containers/pause-amd64:3.0
    * docker pull gcr.io/kubernetes-helm/tiller:v2.3.0
    * docker pull registry
    * docker pull busybox
    * docker pull weaveworks/weave-npc:2.0.4
    * docker pull weaveworks/weave-kube:2.0.4
    docker pull gcr.io/google_containers/kubedns-amd64:1.9
    docker pull gcr.io/google_containers/dnsmasq-metrics-amd64:1.0
    docker pull gcr.io/google-containers/kube-addon-manager:v6.1
    docker pull gcr.io/google_containers/exechealthz-amd64:1.2
    docker pull gcr.io/google_containers/kube-discovery-amd64:1.0
    docker pull gcr.io/google_containers/kube-apiserver-amd64:v1.6.0
    docker pull gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0
    docker pull gcr.io/google_containers/kube-proxy-amd64:v1.6.0
    docker pull gcr.io/google_containers/kube-scheduler-amd64:v1.6.0
    docker pull gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.0
    docker pull gcr.io/google_containers/etcd-amd64:3.0.17
    docker pull gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.1
    docker pull gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.1
    docker pull gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.1
    docker pull quay.io/coreos/flannel:v0.7.1-amd64
    docker pull gcr.io/google_containers/pause-amd64:3.0
    docker pull gcr.io/kubernetes-helm/tiller:v2.3.0
    docker pull registry
    docker pull busybox
    docker pull weaveworks/weave-npc:2.0.4
    docker pull weaveworks/weave-kube:2.0.4
    * docker pull gcr.io/google-containers/kube-addon-manager:v6.1
    * docker pull gcr.io/google_containers/exechealthz-amd64:1.2
    * docker pull gcr.io/google_containers/kube-discovery-amd64:1.0
    ```

    ## Save docker images to tarball

    ```
    docker save gcr.io/google_containers/kube-apiserver-amd64:v1.5.0 > kube-apiserver-amd64_v1.5.0.tar
    docker save gcr.io/google_containers/kube-controller-manager-amd64:v1.5.0 > kube-controller-manager-amd64_v1.5.0.tar
    docker save gcr.io/google_containers/kube-proxy-amd64:v1.5.0 > kube-proxy-amd64_v1.5.0.tar
    docker save gcr.io/google_containers/kube-scheduler-amd64:v1.5.0 > kube-scheduler-amd64_v1.5.0.tar
    docker save weaveworks/weave-npc:1.8.2 > weave-npc_1.8.2.tar
    docker save weaveworks/weave-kube:1.8.2 > weave-kube_1.8.2.tar
    docker save gcr.io/google_containers/kubernetes-dashboard-amd64:v1.5.0 > kubernetes-dashboard-amd64_v1.5.0.tar
    docker save gcr.io/google-containers/kube-addon-manager:v6.1 > kube-addon-manager_v6.1.tar
    docker save gcr.io/google_containers/etcd-amd64:3.0.14-kubeadm > etcd-amd64_3.0.14-kubeadm.tar
    docker save gcr.io/google_containers/kubedns-amd64:1.9 > kubedns-amd64_1.9.tar
    docker save gcr.io/google_containers/dnsmasq-metrics-amd64:1.0 > dnsmasq-metrics-amd64_1.0.tar
    docker save gcr.io/google_containers/kubedns-amd64:1.8 > kubedns-amd64_1.8.tar
    docker save gcr.io/google_containers/kube-dnsmasq-amd64:1.4 > kube-dnsmasq-amd64_1.4.tar
    docker save gcr.io/google_containers/kube-discovery-amd64:1.0 > kube-discovery-amd64_1.0.tar
    docker save quay.io/coreos/flannel-git:v0.6.1-28-g5dde68d-amd64 > flannel-git_v0.6.1-28-g5dde68d-amd64.tar
    docker save gcr.io/google_containers/exechealthz-amd64:1.2 > exechealthz-amd64_1.2.tar
    docker save gcr.io/google_containers/pause-amd64:3.0 > pause-amd64_3.0.tar
    docker save gcr.io/google_containers/kube-apiserver-amd64:v1.6.0
    docker save gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0
    docker save gcr.io/google_containers/kube-proxy-amd64:v1.6.0
    docker save gcr.io/google_containers/kube-scheduler-amd64:v1.6.0
    docker save gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.0
    docker save gcr.io/google_containers/etcd-amd64:3.0.17
    docker save gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.1
    docker save gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.1
    docker save gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.1
    docker save quay.io/coreos/flannel:v0.7.1-amd64
    docker save gcr.io/google_containers/pause-amd64:3.0
    docker save gcr.io/kubernetes-helm/tiller:v2.3.0
    docker save registry
    docker save busybox
    docker save weaveworks/weave-npc:2.0.4
    docker save weaveworks/weave-kube:2.0.4
    * docker save gcr.io/google-containers/kube-addon-manager:v6.1
    * docker save gcr.io/google_containers/exechealthz-amd64:1.2
    * docker save gcr.io/google_containers/kube-discovery-amd64:1.0
    ```

    ## Copy docker images tarball to the remote server
  6. @onuryilmaz onuryilmaz revised this gist Sep 21, 2017. 1 changed file with 19 additions and 14 deletions.
    33 changes: 19 additions & 14 deletions kubeadm-install-offline.md
    Original file line number Diff line number Diff line change
    @@ -2,23 +2,28 @@
    ## Pull images form internet access laptop

    ```
    docker pull gcr.io/google_containers/kube-apiserver-amd64:v1.5.0
    docker pull gcr.io/google_containers/kube-controller-manager-amd64:v1.5.0
    docker pull gcr.io/google_containers/kube-proxy-amd64:v1.5.0
    docker pull gcr.io/google_containers/kube-scheduler-amd64:v1.5.0
    docker pull weaveworks/weave-npc:1.8.2
    docker pull weaveworks/weave-kube:1.8.2
    docker pull gcr.io/google_containers/kubernetes-dashboard-amd64:v1.5.0
    docker pull gcr.io/google-containers/kube-addon-manager:v6.1
    docker pull gcr.io/google_containers/etcd-amd64:3.0.14-kubeadm
    * docker pull gcr.io/google_containers/kube-apiserver-amd64:v1.6.0
    * docker pull gcr.io/google_containers/kube-controller-manager-amd64:v1.6.0
    * docker pull gcr.io/google_containers/kube-proxy-amd64:v1.6.0
    * docker pull gcr.io/google_containers/kube-scheduler-amd64:v1.6.0
    * docker pull gcr.io/google_containers/kubernetes-dashboard-amd64:v1.6.0
    * docker pull gcr.io/google_containers/etcd-amd64:3.0.17
    * docker pull gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.1
    * docker pull gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.1
    * docker pull gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.1
    * docker pull quay.io/coreos/flannel:v0.7.1-amd64
    * docker pull gcr.io/google_containers/pause-amd64:3.0
    * docker pull gcr.io/kubernetes-helm/tiller:v2.3.0
    * docker pull registry
    * docker pull busybox
    * docker pull weaveworks/weave-npc:2.0.4
    * docker pull weaveworks/weave-kube:2.0.4
    docker pull gcr.io/google_containers/kubedns-amd64:1.9
    docker pull gcr.io/google_containers/dnsmasq-metrics-amd64:1.0
    docker pull gcr.io/google_containers/kubedns-amd64:1.8
    docker pull gcr.io/google_containers/kube-dnsmasq-amd64:1.4
    docker pull gcr.io/google_containers/kube-discovery-amd64:1.0
    docker pull quay.io/coreos/flannel-git:v0.6.1-28-g5dde68d-amd64
    docker pull gcr.io/google-containers/kube-addon-manager:v6.1
    docker pull gcr.io/google_containers/exechealthz-amd64:1.2
    docker pull gcr.io/google_containers/pause-amd64:3.0
    docker pull gcr.io/google_containers/kube-discovery-amd64:1.0
    ```

    ## Save docker images to tarball
  7. JG² revised this gist Jan 12, 2017. 1 changed file with 0 additions and 16 deletions.
    16 changes: 0 additions & 16 deletions kubeadm-install-offline.md
    Original file line number Diff line number Diff line change
    @@ -1,19 +1,3 @@
    lvcreate -L 200G -n lv_BNPPFCIP vg_apps
    mkfs.ext4 /dev/vg_apps/lv_BNPPFCIP
    mkdir -p /apps/BNPPFCIP/Kubernetes
    mkdir -p /apps/BNPPFCIP/docker
    mount /dev/vg_apps/lv_BNPPFCIP /apps/BNPPFCIP
    echo "/dev/vg_apps/lv_BNPPFCIP /apps/BNPPFCIP ext4 defaults 1 2" >> /etc/fstab
    mkdir -p /apps/BNPPFCIP/docker/var/lib/docker

    scp -r . [email protected]:/apps/BNPPFCIP/Kubernetes/

    cd /apps/BNPPFCIP/Kubernetes/docker-rpm/
    yum install -y *.rpm

    systemctl enable docker && systemctl start docker
    cd /apps/BNPPFCIP/Kubernetes/kube-images

    # On master and nodes
    ## Pull images form internet access laptop

  8. JG² revised this gist Jan 12, 2017. 1 changed file with 190 additions and 66 deletions.
    256 changes: 190 additions & 66 deletions kubeadm-install-offline.md
    Original file line number Diff line number Diff line change
    @@ -1,107 +1,231 @@
    docker load < dnsmasq-metrics-amd64_1.0.tar
    docker load < etcd-amd64_3.0.14-kubeadm.tar
    docker load < exechealthz-amd64_1.2.tar
    docker load < flannel-git_v0.6.1-28-g5dde68d-amd64.tar
    docker load < kube-addon-manager_v6.1.tar
    docker load < kube-apiserver-amd64_v1.5.0.tar
    docker load < kube-controller-manager-amd64_v1.5.0.tar
    docker load < kube-discovery-amd64_1.0.tar
    docker load < kubedns-amd64_1.8.tar
    docker load < kubedns-amd64_1.9.tar
    docker load < kube-dnsmasq-amd64_1.4.tar
    docker load < kube-proxy-amd64_v1.5.0.tar
    docker load < kubernetes-dashboard-amd64_v1.5.0.tar
    docker load < kube-scheduler-amd64_v1.5.0.tar
    docker load < pause-amd64_3.0.tar
    docker load < weave-kube_1.8.2.tar
    docker load < weave-npc_1.8.2.tar
    lvcreate -L 200G -n lv_BNPPFCIP vg_apps
    mkfs.ext4 /dev/vg_apps/lv_BNPPFCIP
    mkdir -p /apps/BNPPFCIP/Kubernetes
    mkdir -p /apps/BNPPFCIP/docker
    mount /dev/vg_apps/lv_BNPPFCIP /apps/BNPPFCIP
    echo "/dev/vg_apps/lv_BNPPFCIP /apps/BNPPFCIP ext4 defaults 1 2" >> /etc/fstab
    mkdir -p /apps/BNPPFCIP/docker/var/lib/docker

    vi /etc/sysctl.conf
    modify net.ipv4.ip_forward = 0 to net.ipv4.ip_forward = 1
    add
    net.bridge.bridge-nf-call-iptables = 1
    net.bridge.bridge-nf-call-ip6tables = 1

    sysctl -p
    scp -r . [email protected]:/apps/BNPPFCIP/Kubernetes/

    cd /apps/BNPPFCIP/Kubernetes/kube-rpm/
    cd /apps/BNPPFCIP/Kubernetes/docker-rpm/
    yum install -y *.rpm
    systemctl enable kubelet && systemctl start kubelet

    systemctl enable docker && systemctl start docker
    cd /apps/BNPPFCIP/Kubernetes/kube-images

    docker pull gcr.io/google_containers/etcd-amd64:3.0.14-kubeadm
    docker pull gcr.io/google_containers/kube-controller-manager-amd64:v1.5.0
    # On master and nodes
    ## Pull images form internet access laptop

    ```
    docker pull gcr.io/google_containers/kube-apiserver-amd64:v1.5.0
    docker pull gcr.io/google_containers/kube-scheduler-amd64:v1.5.0
    docker pull gcr.io/google_containers/kube-proxy-amd64:v1.5.0
    docker pull gcr.io/google_containers/kube-controller-manager-amd64:v1.5.0
    docker pull gcr.io/google_containers/kube-proxy-amd64:v1.5.0
    docker pull gcr.io/google_containers/kube-scheduler-amd64:v1.5.0
    docker pull weaveworks/weave-npc:1.8.2
    docker pull weaveworks/weave-kube:1.8.2
    docker pull gcr.io/google_containers/kubernetes-dashboard-amd64:v1.5.0
    docker pull gcr.io/google-containers/kube-addon-manager:v6.1
    docker pull gcr.io/google_containers/etcd-amd64:3.0.14-kubeadm
    docker pull gcr.io/google_containers/kubedns-amd64:1.9
    docker pull gcr.io/google_containers/dnsmasq-metrics-amd64:1.0
    docker pull gcr.io/google_containers/kubedns-amd64:1.8
    docker pull gcr.io/google_containers/kube-dnsmasq-amd64:1.4
    docker pull gcr.io/google_containers/kube-discovery-amd64:1.0
    docker pull gcr.io/google_containers/kubedns-amd64:1.9

    docker pull quay.io/coreos/flannel-git:v0.6.1-28-g5dde68d-amd64
    docker pull weaveworks/weave-npc:1.8.2
    docker pull gcr.io/google_containers/exechealthz-amd64:1.2
    docker pull gcr.io/google_containers/pause-amd64:3.0
    ```

    ## Save docker images to tarball

    ```
    docker save gcr.io/google_containers/kube-apiserver-amd64:v1.5.0 > kube-apiserver-amd64_v1.5.0.tar
    docker save gcr.io/google_containers/kube-controller-manager-amd64:v1.5.0 > kube-controller-manager-amd64_v1.5.0.tar
    docker save gcr.io/google_containers/kube-proxy-amd64:v1.5.0 > kube-proxy-amd64_v1.5.0.tar
    docker save gcr.io/google_containers/kube-scheduler-amd64:v1.5.0 > kube-scheduler-amd64_v1.5.0.tar
    docker save weaveworks/weave-npc:1.8.2 > weave-npc_1.8.2.tar
    docker save weaveworks/weave-kube:1.8.2 > weave-kube_1.8.2.tar
    docker save gcr.io/google_containers/kubernetes-dashboard-amd64:v1.5.0 > kubernetes-dashboard-amd64_v1.5.0.tar
    docker save gcr.io/google-containers/kube-addon-manager:v6.1 > kube-addon-manager_v6.1.tar
    docker save gcr.io/google_containers/kubedns-amd64:1.8 > kubedns-amd64_1.8.tar
    docker save gcr.io/google_containers/kube-dnsmasq-amd64:1.4 > kube-dnsmasq-amd64_1.4.tar
    docker save gcr.io/google_containers/exechealthz-amd64:1.2 > exechealthz-amd64_1.2.tar
    docker save gcr.io/google_containers/pause-amd64:3.0 > pause-amd64_3.0.tar
    docker save gcr.io/google_containers/kube-scheduler-amd64:v1.5.0 > kube-scheduler-amd64_v1.5.0.tar
    docker save gcr.io/google_containers/etcd-amd64:3.0.14-kubeadm > etcd-amd64_3.0.14-kubeadm.tar
    docker save gcr.io/google_containers/kube-controller-manager-amd64:v1.5.0 > kube-controller-manager-amd64_v1.5.0.tar
    docker save gcr.io/google_containers/kube-apiserver-amd64:v1.5.0 > kube-apiserver-amd64_v1.5.0.tar
    docker save gcr.io/google_containers/kube-proxy-amd64:v1.5.0 > kube-proxy-amd64_v1.5.0.tar
    docker save gcr.io/google_containers/kubedns-amd64:1.9 > kubedns-amd64_1.9.tar
    docker save gcr.io/google_containers/dnsmasq-metrics-amd64:1.0 > dnsmasq-metrics-amd64_1.0.tar
    docker save gcr.io/google_containers/kubedns-amd64:1.8 > kubedns-amd64_1.8.tar
    docker save gcr.io/google_containers/kube-dnsmasq-amd64:1.4 > kube-dnsmasq-amd64_1.4.tar
    docker save gcr.io/google_containers/kube-discovery-amd64:1.0 > kube-discovery-amd64_1.0.tar
    docker save quay.io/coreos/flannel-git:v0.6.1-28-g5dde68d-amd64 > flannel-git_v0.6.1-28-g5dde68d-amd64.tar
    docker save gcr.io/google_containers/kubedns-amd64:1.9 > kubedns-amd64_1.9.tar
    docker save gcr.io/google_containers/exechealthz-amd64:1.2 > exechealthz-amd64_1.2.tar
    docker save gcr.io/google_containers/pause-amd64:3.0 > pause-amd64_3.0.tar
    ```

    docker save weaveworks/weave-npc:1.8.2 > weave-npc_1.8.2.tar
    docker save weaveworks/weave-kube:1.8.2 > weave-kube_1.8.2.tar
    ## Copy docker images tarball to the remote server

    ```
    scp <folder_with_images>/*.tar <user>@<server>:<path>/<to>/<remote>/<folder>
    ```

    ## Ensure docker is started

    ```
    systemctl status docker
    ```

    ### In case docker is not started

    ```
    systemctl enable docker && systemctl start docker
    ```

    ## Load docker images on remote server

    ```
    docker load < kube-apiserver-amd64_v1.5.0.tar
    docker load < kube-controller-manager-amd64_v1.5.0.tar
    docker load < kube-proxy-amd64_v1.5.0.tar
    docker load < kube-scheduler-amd64_v1.5.0.tar
    docker load < weave-npc_1.8.2.tar
    docker load < weave-kube_1.8.2.tar
    docker load < kubernetes-dashboard-amd64_v1.5.0.tar
    docker load < kube-addon-manager_v6.1.tar
    docker load < etcd-amd64_3.0.14-kubeadm.tar
    docker load < kubedns-amd64_1.9.tar
    docker load < dnsmasq-metrics-amd64_1.0.tar
    docker load < kubedns-amd64_1.8.tar
    docker load < kube-dnsmasq-amd64_1.4.tar
    docker load < kube-discovery-amd64_1.0.tar
    docker load < flannel-git_v0.6.1-28-g5dde68d-amd64.tar
    docker load < exechealthz-amd64_1.2.tar
    docker load < pause-amd64_3.0.tar
    ```

    ## For Centos7, enable sysctl configuration

    ### edit `/etc/sysctl.conf`

    ```
    vi /etc/sysctl.conf
    ```
    ### modify

    `net.ipv4.ip_forward = 0` to `net.ipv4.ip_forward = 1`

    ## Append

    ```
    net.bridge.bridge-nf-call-iptables = 1
    net.bridge.bridge-nf-call-ip6tables = 1
    ```

    ### Reload properties

    ```
    sysctl -p
    ```

    ## Download kubernetes rpms

    ```
    wget https://packages.cloud.google.com/yum/pool/93af9d0fbd67365fa5bf3f85e3d36060138a62ab77e133e35f6cadc1fdc15299-kubectl-1.5.1-0.x86_64.rpm
    wget https://packages.cloud.google.com/yum/pool/8a299eb1db946b2bdf01c5d5c58ef959e7a9d9a0dd706e570028ebb14d48c42e-kubelet-1.5.1-0.x86_64.rpm
    wget https://packages.cloud.google.com/yum/pool/567600102f687e0f27bd1fd3d8211ec1cb12e71742221526bb4e14a412f4fdb5-kubernetes-cni-0.3.0.1-0.07a8a2.x86_64.rpm
    wget https://packages.cloud.google.com/yum/pool/5612db97409141d7fd839e734d9ad3864dcc16a630b2a91c312589a0a0d960d0-kubeadm-1.6.0-0.alpha.0.2074.a092d8e0f95f52.x86_64.rpm
    wget https://storage.googleapis.com/kubernetes-release/release/v1.4.6/kubernetes-client-linux-amd64.tar.gz
    ```

    wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    ## Copy kubernetes rpms to the remote server

    Update
    ```
    scp <folder_with_rpms>/*.rpm <user>@<server>:<path>/<to>/<remote>/<folder>
    ```

    net-conf.json: |
    {
    "Network": "10.244.0.0/16",
    To
    ## Install kubernetes tools

    net-conf.json: |
    {
    "Network": "10.10.0.0/16",
    ```
    yum install -y *.rpm
    systemctl enable kubelet && systemctl start kubelet
    ```

    # On master

    kubectl -n kube-system get ds -l "component=kube-proxy" -o json | jq ".items[0].spec.template.spec.containers[0].command |= .+ [\"--proxy-mode=userspace\"]" | kubectl apply -f - && kubectl -n kube-system delete pods -l "component=kube-proxy"
    ## Kubeadm installation

    ## All nodes
    scp kube-images/*.tar [email protected]:/apps/BNPPFCIP/Kubernetes/kube-images
    scp kube-rpm/*.rpm [email protected]:/apps/BNPPFCIP/Kubernetes/kube-rpm
    Follow instruction from https://kubernetes.io/docs/getting-started-guides/kubeadm/ (Starting from (2/4) Initializing your master)

    yum install -y *.rpm
    ### initalization

    ```
    kubeadm init
    ...
    [kubeadm] WARNING: kubeadm is in alpha, please do not use it for production clusters.
    [preflight] Running pre-flight checks
    [init] Using Kubernetes version: v1.5.1
    [tokens] Generated token: "064158.548b9ddb1d3fad3e"
    [certificates] Generated Certificate Authority key and certificate.
    [certificates] Generated API Server key and certificate
    [certificates] Generated Service Account signing keys
    [certificates] Created keys and certificates in "/etc/kubernetes/pki"
    [kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/kubelet.conf"
    [kubeconfig] Wrote KubeConfig file to disk: "/etc/kubernetes/admin.conf"
    [apiclient] Created API client, waiting for the control plane to become ready
    [apiclient] All control plane components are healthy after 61.317580 seconds
    [apiclient] Waiting for at least one node to register and become ready
    [apiclient] First node is ready after 6.556101 seconds
    [apiclient] Creating a test deployment
    [apiclient] Test deployment succeeded
    [token-discovery] Created the kube-discovery deployment, waiting for it to become ready
    [token-discovery] kube-discovery is ready after 6.020980 seconds
    [addons] Created essential addon: kube-proxy
    [addons] Created essential addon: kube-dns
    systemctl enable kubelet.service && systemctl start kubelet.service
    Your Kubernetes master has initialized successfully!
    ## On Master
    kubeadm init --pod-network-cidr=10.10.0.0/16
    You should now deploy a pod network to the cluster.
    Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
    http://kubernetes.io/docs/admin/addons/
    kubectl apply -f flannel/kube-flannel.yml
    kubectl apply -f weave-net/weave-kube.yml
    You can now join any number of machines by running the following on each node:
    ## On Minions
    kubeadm join --token=<token> <master-ip>
    # Copy the previous line
    ...
    ```

    ### Network configuration

    #### Download weave plugin configuration (with internet)

    ```
    wget https://git.io/weave-kube
    mv weave-kube weave-kube.yml
    ```

    kubeadm join --token <token> <master-ip>
    #### Copy weave plugin configuration

    ```
    scp <folder_with_weave_yml>/weave-kube.yml <user>@<server>:<path>/<to>/<remote>/<folder>
    ```

    #### Apply plugin

    ```
    kubectl apply -f <folder_with_weave_yml>/weave-kube.yml
    ```

    #### Fix kube-proxy problem

    ```
    kubectl -n kube-system get ds -l "component=kube-proxy" -o json | jq ".items[0].spec.template.spec.containers[0].command |= .+ [\"--proxy-mode=userspace\"]" | kubectl apply -f - && kubectl -n kube-system delete pods -l "component=kube-proxy"
    ```


    # On Node

    kubeadm join --token <token> <master-ip>


    # Trick and tips

    ```
    wget https://storage.googleapis.com/kubernetes-release/release/v1.4.6/kubernetes-client-linux-amd64.tar.gz
    ```
  9. JG² created this gist Jan 12, 2017.
    107 changes: 107 additions & 0 deletions kubeadm-install-offline.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,107 @@
    docker load < dnsmasq-metrics-amd64_1.0.tar
    docker load < etcd-amd64_3.0.14-kubeadm.tar
    docker load < exechealthz-amd64_1.2.tar
    docker load < flannel-git_v0.6.1-28-g5dde68d-amd64.tar
    docker load < kube-addon-manager_v6.1.tar
    docker load < kube-apiserver-amd64_v1.5.0.tar
    docker load < kube-controller-manager-amd64_v1.5.0.tar
    docker load < kube-discovery-amd64_1.0.tar
    docker load < kubedns-amd64_1.8.tar
    docker load < kubedns-amd64_1.9.tar
    docker load < kube-dnsmasq-amd64_1.4.tar
    docker load < kube-proxy-amd64_v1.5.0.tar
    docker load < kubernetes-dashboard-amd64_v1.5.0.tar
    docker load < kube-scheduler-amd64_v1.5.0.tar
    docker load < pause-amd64_3.0.tar
    docker load < weave-kube_1.8.2.tar
    docker load < weave-npc_1.8.2.tar

    vi /etc/sysctl.conf
    modify net.ipv4.ip_forward = 0 to net.ipv4.ip_forward = 1
    add
    net.bridge.bridge-nf-call-iptables = 1
    net.bridge.bridge-nf-call-ip6tables = 1

    sysctl -p

    cd /apps/BNPPFCIP/Kubernetes/kube-rpm/
    yum install -y *.rpm
    systemctl enable kubelet && systemctl start kubelet


    docker pull gcr.io/google_containers/etcd-amd64:3.0.14-kubeadm
    docker pull gcr.io/google_containers/kube-controller-manager-amd64:v1.5.0
    docker pull gcr.io/google_containers/kube-apiserver-amd64:v1.5.0
    docker pull gcr.io/google_containers/kube-scheduler-amd64:v1.5.0
    docker pull gcr.io/google_containers/kube-proxy-amd64:v1.5.0
    docker pull gcr.io/google_containers/dnsmasq-metrics-amd64:1.0
    docker pull gcr.io/google_containers/kube-discovery-amd64:1.0
    docker pull gcr.io/google_containers/kubedns-amd64:1.9

    docker pull quay.io/coreos/flannel-git:v0.6.1-28-g5dde68d-amd64
    docker pull weaveworks/weave-npc:1.8.2


    docker save gcr.io/google_containers/kubernetes-dashboard-amd64:v1.5.0 > kubernetes-dashboard-amd64_v1.5.0.tar
    docker save gcr.io/google-containers/kube-addon-manager:v6.1 > kube-addon-manager_v6.1.tar
    docker save gcr.io/google_containers/kubedns-amd64:1.8 > kubedns-amd64_1.8.tar
    docker save gcr.io/google_containers/kube-dnsmasq-amd64:1.4 > kube-dnsmasq-amd64_1.4.tar
    docker save gcr.io/google_containers/exechealthz-amd64:1.2 > exechealthz-amd64_1.2.tar
    docker save gcr.io/google_containers/pause-amd64:3.0 > pause-amd64_3.0.tar
    docker save gcr.io/google_containers/kube-scheduler-amd64:v1.5.0 > kube-scheduler-amd64_v1.5.0.tar
    docker save gcr.io/google_containers/etcd-amd64:3.0.14-kubeadm > etcd-amd64_3.0.14-kubeadm.tar
    docker save gcr.io/google_containers/kube-controller-manager-amd64:v1.5.0 > kube-controller-manager-amd64_v1.5.0.tar
    docker save gcr.io/google_containers/kube-apiserver-amd64:v1.5.0 > kube-apiserver-amd64_v1.5.0.tar
    docker save gcr.io/google_containers/kube-proxy-amd64:v1.5.0 > kube-proxy-amd64_v1.5.0.tar
    docker save gcr.io/google_containers/dnsmasq-metrics-amd64:1.0 > dnsmasq-metrics-amd64_1.0.tar
    docker save gcr.io/google_containers/kube-discovery-amd64:1.0 > kube-discovery-amd64_1.0.tar
    docker save quay.io/coreos/flannel-git:v0.6.1-28-g5dde68d-amd64 > flannel-git_v0.6.1-28-g5dde68d-amd64.tar
    docker save gcr.io/google_containers/kubedns-amd64:1.9 > kubedns-amd64_1.9.tar

    docker save weaveworks/weave-npc:1.8.2 > weave-npc_1.8.2.tar
    docker save weaveworks/weave-kube:1.8.2 > weave-kube_1.8.2.tar






    wget https://packages.cloud.google.com/yum/pool/93af9d0fbd67365fa5bf3f85e3d36060138a62ab77e133e35f6cadc1fdc15299-kubectl-1.5.1-0.x86_64.rpm
    wget https://packages.cloud.google.com/yum/pool/8a299eb1db946b2bdf01c5d5c58ef959e7a9d9a0dd706e570028ebb14d48c42e-kubelet-1.5.1-0.x86_64.rpm
    wget https://packages.cloud.google.com/yum/pool/567600102f687e0f27bd1fd3d8211ec1cb12e71742221526bb4e14a412f4fdb5-kubernetes-cni-0.3.0.1-0.07a8a2.x86_64.rpm
    wget https://packages.cloud.google.com/yum/pool/5612db97409141d7fd839e734d9ad3864dcc16a630b2a91c312589a0a0d960d0-kubeadm-1.6.0-0.alpha.0.2074.a092d8e0f95f52.x86_64.rpm
    wget https://storage.googleapis.com/kubernetes-release/release/v1.4.6/kubernetes-client-linux-amd64.tar.gz

    wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

    Update

    net-conf.json: |
    {
    "Network": "10.244.0.0/16",
    To

    net-conf.json: |
    {
    "Network": "10.10.0.0/16",


    kubectl -n kube-system get ds -l "component=kube-proxy" -o json | jq ".items[0].spec.template.spec.containers[0].command |= .+ [\"--proxy-mode=userspace\"]" | kubectl apply -f - && kubectl -n kube-system delete pods -l "component=kube-proxy"

    ## All nodes
    scp kube-images/*.tar [email protected]:/apps/BNPPFCIP/Kubernetes/kube-images
    scp kube-rpm/*.rpm [email protected]:/apps/BNPPFCIP/Kubernetes/kube-rpm

    yum install -y *.rpm

    systemctl enable kubelet.service && systemctl start kubelet.service

    ## On Master
    kubeadm init --pod-network-cidr=10.10.0.0/16

    kubectl apply -f flannel/kube-flannel.yml
    kubectl apply -f weave-net/weave-kube.yml

    ## On Minions

    kubeadm join --token <token> <master-ip>