This Gist has moved to podder-ai/kubernetes-offline-install-guideline Please check here for latest updates.
Work machine: A linux machine can access to internet
- Yumdownloader is a simple, yet useful command-line utility that downloads any RPM package along with all required dependencies in one go. Install Yumdownloader using the following command as root user.
yum install yum-utils
- Download all dependencies from by following the documentation https://docs.docker.com/engine/installation/linux/docker-ce/centos/#install-using-the-repository
mkdir docker-rpms
cd docker-rpms
yumdownloader --resolve yum-utils device-mapper-persistent-data lvm2
# add docker-ce repo
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
yumdownloader --resolve docker-ce
docker pull k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0
docker pull k8s.gcr.io/kube-apiserver-amd64:v1.11.2
docker pull k8s.gcr.io/kube-controller-manager-amd64:v1.11.2
docker pull k8s.gcr.io/kube-proxy-amd64:v1.11.2
docker pull k8s.gcr.io/kube-scheduler-amd64:v1.11.2
docker pull weaveworks/weave-npc:2.4.0
docker pull weaveworks/weave-kube:2.4.0
docker pull k8s.gcr.io/coredns:1.1.3
docker pull k8s.gcr.io/etcd-amd64:3.2.18
docker pull k8s.gcr.io/pause:3.1
Using save-load-docker-image.sh
in comment below. save-load-docker-image.sh
./save-load-docker-image.sh save -d docker-images
Saving k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0 ...
Saving k8s.gcr.io/kube-controller-manager-amd64:v1.11.2 ...
Saving k8s.gcr.io/kube-proxy-amd64:v1.11.2 ...
Saving k8s.gcr.io/kube-apiserver-amd64:v1.11.2 ...
Saving k8s.gcr.io/kube-scheduler-amd64:v1.11.2 ...
Saving weaveworks/weave-npc:2.4.0 ...
Saving weaveworks/weave-kube:2.4.0 ...
Saving hello-world:latest ...
Saving k8s.gcr.io/coredns:1.1.3 ...
Saving k8s.gcr.io/etcd-amd64:3.2.18 ...
Saving k8s.gcr.io/pause:3.1 ...
mkdir k8s-rpms
cd k8s-rpms
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
exclude=kube*
EOF
setenforce 0
yumdownloader --resolve kubelet kubeadm kubectl --disableexcludes=kubernetes
curl -o weave-kube.yaml "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
curl -o kubernetes-dashboard.yaml https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
scp <docker_folder_with_rpms>/*.rpm <user>@<server>:<path>/<to>/<remote>/<folder>
cd docker-rpms
yum install -y *.rpm
systemctl enable docker && systemctl start docker
systemctl status docker
systemctl enable docker && systemctl start docker
scp <folder_with_images>/*.tar <user>@<server>:<path>/<to>/<remote>/<folder>
Using save-load-docker-image.sh
in comment below. save-load-docker-image.sh
./save-load-docker-image.sh load -d docker-images
Loading ./k8s.gcr.io/kubernetes-dashboard-amd64.v1.10.0.tar ...
Loaded image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0
Loading ./k8s.gcr.io/kube-controller-manager-amd64.v1.11.2.tar ...
Loaded image: k8s.gcr.io/kube-controller-manager-amd64:v1.11.2
Loading ./k8s.gcr.io/kube-proxy-amd64.v1.11.2.tar ...
Loaded image: k8s.gcr.io/kube-proxy-amd64:v1.11.2
Loading ./k8s.gcr.io/kube-apiserver-amd64.v1.11.2.tar ...
Loaded image: k8s.gcr.io/kube-apiserver-amd64:v1.11.2
Loading ./k8s.gcr.io/kube-scheduler-amd64.v1.11.2.tar ...
Loaded image: k8s.gcr.io/kube-scheduler-amd64:v1.11.2
Loading ./k8s.gcr.io/coredns.1.1.3.tar ...
Loaded image: k8s.gcr.io/coredns:1.1.3
Loading ./k8s.gcr.io/etcd-amd64.3.2.18.tar ...
Loaded image: k8s.gcr.io/etcd-amd64:3.2.18
Loading ./k8s.gcr.io/pause.3.1.tar ...
Loaded image: k8s.gcr.io/pause:3.1
Loading ./weaveworks/weave-npc.2.4.0.tar ...
Loaded image: weaveworks/weave-npc:2.4.0
Loading ./weaveworks/weave-kube.2.4.0.tar ...
Loaded image: weaveworks/weave-kube:2.4.0
Loading ./hello-world.latest.tar ...
Loaded image: hello-world:latest
Some users on RHEL/CentOS 7 have reported issues with traffic being routed incorrectly due to iptables being bypassed. You should ensure net.bridge.bridge-nf-call-iptables is set to 1 in your sysctl config, e.g.
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system
scp <folder_with_rpms>/*.rpm <user>@<server>:<path>/<to>/<remote>/<folder>
cd k8s-rpms
yum install -y *.rpm
systemctl enable kubelet && systemctl start kubelet
Follow instruction from https://kubernetes.io/docs/getting-started-guides/kubeadm/
kubeadm init
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl get nodes
https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#pod-network
scp <folder_with_weave_yml>/weave-kube.yml <user>@<server>:<path>/<to>/<remote>/<folder>
kubectl apply -f <folder_with_weave_yml>/weave-kube.yml
By default, your cluster will not schedule pods on the master for security reasons. If you want to be able to schedule pods on the master, e.g. for a single-machine Kubernetes cluster for development, run:
kubectl taint nodes --all node-role.kubernetes.io/master-
https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#master-isolation
https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
scp <folder_with_dashboard_yml>/kubernetes-dashboard.yml <user>@<server>:<path>/<to>/<remote>/<folder>
kubectl apply -f <folder_with_dashboard_yml>/kubernetes-dashboard.yml
kubectl proxy
https://<master-ip>:<apiserver-port>/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
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 join --token <token> <master-ip>
Download Docker CE rpms