Merge pull request #2052 from rtnpro/k8s-1.8-as-min-supported-version

Update K8s minimum version supported by Rook from 1.7 to 1.8
This commit is contained in:
Jared Watts authored and GitHub committed 2018-08-28 11:30:44 -07:00
commit 8841d33007
10 files changed
+10 -59

No files matched your search

+1 -9
View File
@@ -11,7 +11,7 @@ from other pods running in your cluster.
## Minimum Version
Kubernetes **v1.7** or higher is supported by Rook.
Kubernetes **v1.8** or higher is supported by Rook.
## Prerequisites
@@ -44,14 +44,6 @@ kubectl -n rook-ceph-system get pod
You can also deploy the operator with the [Rook Helm Chart](helm-operator.md).
---
### **Restart Kubelet**
**(K8S 1.7.x only)**
For versions of Kubernetes prior to 1.8, the Kubelet process on all nodes will require a restart after the Rook operator and Rook agents have been deployed. As part of their initial setup, the Rook agents deploy and configure a Flexvolume plugin in order to integrate with Kubernetes' volume controller framework. In Kubernetes v1.8+, the [dynamic Flexvolume plugin discovery](https://github.com/kubernetes/community/blob/master/contributors/devel/flexvolume.md#dynamic-plugin-discovery) will find and initialize our plugin, but in older versions of Kubernetes a manual restart of the Kubelet will be required.
---
## Create a Rook Cluster
Now that the Rook operator, agent, and discover pods are running, we can create the Rook cluster. For the cluster to survive reboots,
+1 -1
View File
@@ -14,7 +14,7 @@ This chart bootstraps a [rook-ceph-operator](https://github.com/rook/rook) deplo
## Prerequisites
- Kubernetes 1.7+
- Kubernetes 1.8+
### RBAC
+1 -1
View File
@@ -9,7 +9,7 @@ Rook can be installed on any existing Kubernetes clusters as long as it meets th
## Minimum Version
Kubernetes v1.7 or higher is supported by Rook.
Kubernetes v1.8 or higher is supported by Rook.
## Privileges and RBAC
-8
View File
@@ -409,14 +409,6 @@ kubectl -n rook get pod -l app=rook-ceph-mds -o jsonpath='{range .items[*]}{.met
## Completion
At this point, your Rook cluster should be fully upgraded to running version `rook/ceph:v0.8.0` and the cluster should be healthy according to the steps in the [health verification section](#health-verification).
## Upgrading Kubernetes
Rook cluster installations on Kubernetes prior to version 1.7.x, use [ThirdPartyResource](https://kubernetes.io/docs/tasks/access-kubernetes-api/extend-api-third-party-resource/) that have been deprecated as of 1.7 and removed in 1.8. If upgrading your Kubernetes cluster Rook TPRs have to be migrated to CustomResourceDefinition (CRD) following [Kubernetes documentation](https://kubernetes.io/docs/tasks/access-kubernetes-api/migrate-third-party-resource/). Rook TPRs that require migration during upgrade are:
- Cluster
- Pool
- ObjectStore
- Filesystem
- VolumeAttachment
## Appendix: Upgrading a Build from Master
As previously mentioned, it is not recommended to run builds from master since they can change and be otherwise incompatible with the official releases.
Vendored
-1
View File
@@ -67,7 +67,6 @@ pipeline {
stash name: 'repo-amd64',includes: 'ceph-amd64.tar,cockroachdb-amd64.tar,nfs-amd64.tar,build/common.sh,_output/tests/linux_amd64/,_output/charts/,tests/scripts/'
script{
def data = [
"aws_1.7.x": "v1.7.11",
"aws_1.8.x": "v1.8.5",
"gce_1.9.x": "v1.9.9",
"aws_1.10.x": "v1.10.5",
+2
View File
@@ -9,10 +9,12 @@
- Ceph OSDs will be automatically updated by the operator when there is a change to the operator version or when the OSD configuration changes. See the [OSD upgrade notes](Documentation/upgrade-patch.md#object-storage-daemons-osds).
- Rook Ceph block storage provisioner can now correctly create erasure coded block images. See [Advanced Example: Erasure Coded Block Storage](Documentation/block.md#advanced-example-erasure-coded-block-storage) for an example usage.
- [Network File System (NFS)](https://github.com/nfs-ganesha/nfs-ganesha/wiki) is now supported by Rook with a new operator to deploy and manage this widely used server. NFS servers can be automatically deployed by creating an instance of the new `nfsservers.nfs.rook.io` custom resource. See the [NFS server user guide](Documentation/nfs.md) to get started with NFS.
- The minimum version of Kubernetes supported by Rook changed from `1.7` to `1.8`.
## Breaking Changes
- The Rook container images are no longer published to quay.io, they are published only to Docker Hub. All manifests have referenced Docker Hub for multiple releases now, so we do not expect any directly affected users from this change.
- Rook no longer supports kubernetes `1.7`. Users running Kubernetes `1.7` on their clusters are recommended to upgrade to Kubernetes `1.8` or higher. If you are using `kubeadm`, you can follow this [guide](https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-8/) to from Kubernetes `1.7` to `1.8`. If you are using `kops` or `kubespray` for managing your Kubernetes cluster, just follow the respective projects' `upgrade` guide.
## Known Issues
+2 -2
View File
@@ -19,7 +19,7 @@ You can choose any Kubernetes flavor of your choice. The test framework only de
The framework also provides scripts to install Kubernetes. There are two scripts to start the cluster:
1. **Minikube** (recommended for MacOS): Run [minikube.sh](/tests/scripts/minikube.sh) to setup a single-node Minikube Kubernetes.
1. Minikube v0.21.0 and higher is supported. Older minikube versions do not have cephfs or rbd tools installed.
1. If using Kubernetes v1.7.3 or higher, then Minikube v0.22.2 or higher is required.
1. If using Kubernetes v1.8 or higher, then Minikube v0.23.0 or higher is required.
1. **Kubeadm** (recommended for Ubuntu): run [kubeadm.sh](/tests/scripts/kubeadm.sh) to setup a single-node K8s cluster using kubeadm
#### Minikube (recommended for MacOS)
@@ -97,7 +97,7 @@ In addition to standard go tests parameters, the following custom parameters are
| Parameter | Description | Possible values | Default |
| ----------------- | -------------------------------------------- | ---------------- | ----------------- |
| rook_platform | platform Rook needs to be installed on | kubernetes | kubernetes |
| k8s_version | version of Kubernetes to be installed | v1.7+ | v1.8.5 |
| k8s_version | version of Kubernetes to be installed | v1.8+ | v1.8.5 |
| rook_image | Rook image name to be installed | valid image name | rook/ceph |
| toolbox_image | toolbox image name to be installed | valid image name | rook/ceph-toolbox |
| skip_install_rook | skips installing Rook (if already installed) | true or false | false |
-20
View File
@@ -9,26 +9,6 @@ KUBE_INSTALL_VERSION="${KUBE_VERSION/v/$null_str}"-00
# Disabling swap when installing k8s 1.8.x via kubeadm
sudo swapoff -a
# init flexvolume
if [[ $KUBE_VERSION == v1.7* ]] ;
then
sudo mkdir -p /usr/libexec/kubernetes/kubelet-plugins/volume/exec/rook.io~rook
cat << EOF | sudo tee -a /usr/libexec/kubernetes/kubelet-plugins/volume/exec/rook.io~rook/rook
#!/bin/bash
echo -ne '{"status": "Success", "capabilities": {"attach": false}}' >&1
exit 0
EOF
sudo chmod +x /usr/libexec/kubernetes/kubelet-plugins/volume/exec/rook.io~rook/rook
sudo mkdir -p /usr/libexec/kubernetes/kubelet-plugins/volume/exec/ceph.rook.io~rook
cat << EOF | sudo tee -a /usr/libexec/kubernetes/kubelet-plugins/volume/exec/ceph.rook.io~rook/rook
#!/bin/bash
echo -ne '{"status": "Success", "capabilities": {"attach": false}}' >&1
exit 0
EOF
sudo chmod +x /usr/libexec/kubernetes/kubelet-plugins/volume/exec/ceph.rook.io~rook/rook
fi
wait_for_dpkg_unlock() {
#wait for dpkg lock to disappear.
retry=0
-1
View File
@@ -11,7 +11,6 @@ usage(){
echo "usage:" >&2
echo " $0 up " >&2
echo " $0 install master" >&2
echo " $0 install node --token <token> <master-ip>:<master-port> (for k8s 1.7 and older)" >&2
echo " $0 install node --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>" >&2
echo " $0 wait <number of nodes>" >&2
echo " $0 clean" >&2
+3 -16
View File
@@ -121,22 +121,9 @@ MEMORY=${MEMORY:-"3000"}
case "${1:-}" in
up)
# Use kubeadm bootstrapper for 1.8+ since localkube was deprecated in 1.8
if [[ $KUBE_VERSION == v1.7* ]] ; then
echo "starting minikube with localkube bootstrapper"
minikube start --memory="${MEMORY}" -b localkube --kubernetes-version "${KUBE_VERSION}" --extra-config=apiserver.Authorization.Mode=RBAC
wait_for_ssh
enable_roles_for_RBAC
echo "initializing flexvolume for ceph.rook.io"
init_flexvolume ceph.rook.io
echo "initializing flexvolume for rook.io"
init_flexvolume rook.io
echo "restarting minikube"
minikube start --memory="${MEMORY}" -b localkube --kubernetes-version "${KUBE_VERSION}" --extra-config=apiserver.Authorization.Mode=RBAC
else
echo "starting minikube with kubeadm bootstrapper"
minikube start --memory="${MEMORY}" -b kubeadm --kubernetes-version "${KUBE_VERSION}"
wait_for_ssh
fi
echo "starting minikube with kubeadm bootstrapper"
minikube start --memory="${MEMORY}" -b kubeadm --kubernetes-version "${KUBE_VERSION}"
wait_for_ssh
# create a link so the default dataDirHostPath will work for this environment
minikube ssh "sudo mkdir -p /mnt/sda1/${PWD}; sudo mkdir -p $(dirname $PWD); sudo ln -s /mnt/sda1/${PWD} $(dirname $PWD)/"
minikube ssh "sudo mkdir /mnt/sda1/var/lib/rook;sudo ln -s /mnt/sda1/var/lib/rook /var/lib/rook"