Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Umbrella issue for Katacoda removal #33936

Closed
reylejano opened this issue May 25, 2022 · 61 comments
Closed

Umbrella issue for Katacoda removal #33936

reylejano opened this issue May 25, 2022 · 61 comments
Labels
lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release. triage/accepted Indicates an issue or PR is ready to be actively worked on.

Comments

@reylejano
Copy link
Member

reylejano commented May 25, 2022

Problem

(The public part of) Katacoda shut down on June 15, 2022
https://www.oreilly.com/online-learning/leveraging-katacoda-technology.html

The remaining part of Katacoda, that Kubernetes uses, is due to shut down late 2022 early 2023.

Related to #33918 and #38785

Discussion

Use the GitHub Discussion to discuss what we should replace Katacoda with.

Specific steps

SIG Docs members propose to edit pages that use Katacoda to mark that the sandbox is unavailable. When an alternative is available then update the affected pages to use the alternative.

Pages to Update:
https://kubernetes.io/docs/tutorials/hello-minikube/
https://kubernetes.io/docs/tutorials/kubernetes-basics/
https://kubernetes.io/docs/tutorials/kubernetes-basics/create-cluster/cluster-intro/
https://kubernetes.io/docs/tutorials/kubernetes-basics/create-cluster/cluster-interactive/
https://kubernetes.io/docs/tutorials/kubernetes-basics/deploy-app/
https://kubernetes.io/docs/tutorials/kubernetes-basics/deploy-app/deploy-intro/
https://kubernetes.io/docs/tutorials/kubernetes-basics/deploy-app/deploy-interactive/
https://kubernetes.io/docs/tutorials/kubernetes-basics/explore/
https://kubernetes.io/docs/tutorials/kubernetes-basics/explore/explore-intro/
https://kubernetes.io/docs/tutorials/kubernetes-basics/explore/explore-interactive/
https://kubernetes.io/docs/tutorials/kubernetes-basics/expose/
https://kubernetes.io/docs/tutorials/kubernetes-basics/expose/expose-intro/
https://kubernetes.io/docs/tutorials/kubernetes-basics/expose/expose-interactive/
https://kubernetes.io/docs/tutorials/kubernetes-basics/scale/
https://kubernetes.io/docs/tutorials/kubernetes-basics/scale/scale-intro/
https://kubernetes.io/docs/tutorials/kubernetes-basics/scale/scale-interactive/
https://kubernetes.io/docs/tutorials/kubernetes-basics/update/
https://kubernetes.io/docs/tutorials/kubernetes-basics/update/update-intro/
https://kubernetes.io/docs/tutorials/kubernetes-basics/update/update-interactive/
https://kubernetes.io/docs/tutorials/configuration/
https://kubernetes.io/docs/tutorials/configuration/configure-java-microservice/
https://kubernetes.io/docs/tutorials/configuration/configure-java-microservice/configure-java-microservice/
https://kubernetes.io/docs/tutorials/configuration/configure-java-microservice/configure-java-microservice-interactive/
https://kubernetes.io/docs/tutorials/configuration/configure-redis-using-configmap/
https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definition-versioning/#version-removal

Additional Information

/remove-kind bug
/priority important-soon

@reylejano reylejano added the kind/bug Categorizes issue or PR as related to a bug. label May 25, 2022
@k8s-ci-robot k8s-ci-robot added priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release. needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. and removed kind/bug Categorizes issue or PR as related to a bug. labels May 25, 2022
@reylejano
Copy link
Member Author

/triage accepted

@k8s-ci-robot k8s-ci-robot added triage/accepted Indicates an issue or PR is ready to be actively worked on. and removed needs-triage Indicates an issue or PR lacks a `triage/foo` label and requires one. labels May 25, 2022
@Debanitrkl
Copy link
Member

https://github.com/kubernetes-sigs/contributor-katacoda
It's the place where we work on katacoda at Contribex.

@nitishfy
Copy link
Member

nitishfy commented May 25, 2022

Hey @reylejano Do we have to remove all these pages you've mentioned in the Pages to Update

@reylejano
Copy link
Member Author

@Debanitrkl mentioned on Slack that SIG ContribEx is looking at killercoda

@shannonxtreme mentioned turning the katacoda tutorials to use minikube

Do we as SIG Docs want to continue to maintain these tutorials if they use killercoda or minikube?
Should we turn the tutorials into instructions to use on any Kubernetes cluster?

@shannonxtreme
Copy link
Contributor

@Debanitrkl mentioned on Slack that SIG ContribEx is looking at killercoda

@shannonxtreme mentioned turning the katacoda tutorials to use minikube

Do we as SIG Docs want to continue to maintain these tutorials if they use killercoda or minikube?
Should we turn the tutorials into instructions to use on any Kubernetes cluster?

Imo we can direct users to playgrounds or minikube or whatever (maybe a standard before you begin that says set up a Kubernetes cluster using an option such as X, Y, or Z) and keep our responsibilities scoped to platform agnostic instructions.

I just enjoyed the interactive tutorials, but maintaining their compatibility and maintenance with platform X shouldn't be on SIG Docs

@afbjorklund
Copy link

afbjorklund commented May 25, 2022

As far as I know, the katacoda examples are using minikube at the moment ?

$ start.sh
Starting Kubernetes...minikube version: v1.18.0
commit: ec61815d60f66a6e4f6353030a40b12362557caa-dirty
* minikube v1.18.0 on Ubuntu 18.04 (amd64)
* Using the none driver based on existing profile

An older version (1.18 vs 1.25), and run from a control plane terminal, but anyway.


Note: the "none" driver of minikube is basically just a wrapper around kubeadm

It also deploys the kubernetes dashboard, which is otherwise equally painful to set up.

@shannonxtreme
Copy link
Contributor

Yeah they are using minikube so we'd basically be directing the user to use minikube wherever they want, instead of using the katacoda playground. It'll be less directly interactive sadly

@afbjorklund
Copy link

afbjorklund commented May 25, 2022

I added some notes and links, on how to improve the minikube "none" driver for this scenario.

EDIT: also added an example on how to use the "docker" driver for setting up two fakenodes

Providing the virtual machine and the web console for it would be up to the "learning platform".

@afbjorklund

This comment was marked as off-topic.

@sftim
Copy link
Contributor

sftim commented May 26, 2022

I suggest that we change the page templates so that any page using a Katacoda shortcode gets a removal warning, to explain that Katacoda is shutting down.

https://gohugo.io/templates/shortcode-templates/#checking-for-existence explains how to write a conditional based on the presence of a shortcode.

@bwplotka
Copy link

bwplotka commented May 30, 2022

FYI: We use Katacoda heavily for the Thanos project, and we discussed some alternatives to consider - but definitely not in so short timespan: thanos-io/thanos#5385

TL;DR https://killercoda.com/ (mentioned already) or https://instruqt.com/

@adamwitwer
Copy link

Hi team. I run the product team at O'Reilly, and we've set up a separate server for Kubernetes.io. The Katacoda scenarios on those pages will not be affected by the shutdown of the public site. My apologies for the miscommunication. @reylejano I've sent you an email with more context.

@Debanitrkl
Copy link
Member

Hi team. I run the product team at O'Reilly, and we've set up a separate server for Kubernetes.io. The Katacoda scenarios on those pages will not be affected by the shutdown of the public site. My apologies for the miscommunication. @reylejano I've sent you an email with more context.

Does that mean even this is supported, because it also comes under Kubernetes upstream but not directly linked to kubernetes.io

@sftim
Copy link
Contributor

sftim commented Jun 6, 2022

Does that mean even this is supported, because it also comes under Kubernetes upstream but not directly linked to kubernetes.io

https://katacoda.com/k8scontributors will not survive the shutdown of https://katacoda.com/ and does need to be migrated. I recommend @Debanitrkl that you file a separate issue elsewhere, for SIG ContribEx to track.

@sftim
Copy link
Contributor

sftim commented Jun 20, 2022

/remove-priority important-soon

We need to decide what priority to set for this.

@afbjorklund
Copy link

afbjorklund commented Jan 8, 2023

I made a patched version of minikube (for NumCPU), and using this version it runs on killercoda:

ubuntu $ minikube version
minikube version: v1.28.0
commit: b45c13b3eb399ba7c63db31609f4a013b1f8d638
ubuntu $ minikube start --driver=none --force
😄  minikube v1.28.0 on Ubuntu 20.04 (amd64)
❗  minikube skips various validations when --force is supplied; this may lead to unexpected behavior
✨  Using the none driver based on existing profile

⛔  Requested cpu count 2 is greater than the available cpus of 1


⛔  None has less than 2 CPUs available, but Kubernetes requires at least 2 to be available


⛔  Requested cpu count 2 is greater than the available cpus of 1


⛔  None has less than 2 CPUs available, but Kubernetes requires at least 2 to be available


🧯  The requested memory allocation of 1983MiB does not leave room for system overhead (total system memory: 1983MiB). You may face stability issues.
💡  Suggestion: Start minikube with less memory allocated: 'minikube start --memory=1983mb'

👍  Starting control plane node minikube in cluster minikube
🔄  Restarting existing none bare metal machine for "minikube" ...
ℹ️  OS release is Ubuntu 20.04.5 LTS
🐳  Preparing Kubernetes v1.25.3 on Docker 20.10.12 ...
    ▪ kubelet.resolv-conf=/run/systemd/resolve/resolv.conf
    ▪ Generating certificates and keys ...
    ▪ Booting up control plane ...
    ▪ Configuring RBAC rules ...
🤹  Configuring local host environment ...

❗  The 'none' driver is designed for experts who need to integrate with an existing VM
💡  Most users should use the newer 'docker' driver instead, which does not require root!
📘  For more information, see: https://minikube.sigs.k8s.io/docs/reference/drivers/none/

❗  kubectl and minikube configuration will be stored in /root
❗  To use kubectl or minikube commands as your own user, you may need to relocate them. For example, to overwrite your own settings, run:

    ▪ sudo mv /root/.kube /root/.minikube $HOME
    ▪ sudo chown -R $USER $HOME/.kube $HOME/.minikube

💡  This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true
🔎  Verifying Kubernetes components...
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟  Enabled addons: default-storageclass, storage-provisioner
💡  kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
ubuntu $ minikube kubectl version
WARNING: This version information is deprecated and will be replaced with the output from kubectl version --short.  Use --output=yaml|json to get the full version.
Client Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.3", GitCommit:"434bfd82814af038ad94d62ebe59b133fcb50506", GitTreeState:"clean", BuildDate:"2022-10-12T10:57:26Z", GoVersion:"go1.19.2", Compiler:"gc", Platform:"linux/amd64"}
Kustomize Version: v4.5.7
Server Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.3", GitCommit:"434bfd82814af038ad94d62ebe59b133fcb50506", GitTreeState:"clean", BuildDate:"2022-10-12T10:49:09Z", GoVersion:"go1.19.2", Compiler:"gc", Platform:"linux/amd64"}
ubuntu $ minikube kubectl -- get nodes -o wide
NAME     STATUS     ROLES           AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
ubuntu   NotReady   control-plane   50s   v1.25.3   172.30.1.2    <none>        Ubuntu 20.04.5 LTS   5.4.0-131-generic   docker://20.10.12

There is of course a large number of warnings, and you do have to install some extra dependencies:

sudo apt update
sudo apt install -y conntrack socat

curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb
sudo dpkg -i minikube_latest_amd64.deb

curl -LO https://github.com/Mirantis/cri-dockerd/releases/download/v0.3.0/cri-dockerd_0.3.0.3-0.ubuntu-focal_amd64.deb
sudo dpkg -i cri-dockerd_0.3.0.3-0.ubuntu-focal_amd64.deb

But cri-tools and cni-plugins have already been installed, from the deprecated kubic repositories.

cri-tools/now 1.21.0~2 amd64 [installed,local]
containernetworking-plugins/now 100:1.1.1~1 amd64 [installed,local]

Docker was installed, using the system packages (not from the vendor packages, on docker.com).

https://packages.ubuntu.com/focal-updates/docker.io
https://packages.ubuntu.com/focal-updates/containerd

@sftim
Copy link
Contributor

sftim commented Jan 10, 2023

@reylejano I updated the issue description to highlight the new GitHub discussion.

@afbjorklund
Copy link

I would suggest to remove minikube, also from the first scenario (all other scenarios start with it running).

https://kubernetes.io/docs/tutorials/kubernetes-basics/create-cluster/ - call it "Connect to Cluster" or such ?

This will allow migrating to killercoda, and leaving "Hello, Minikube" as the only page needing minikube.


Then, if someone wants to contribute scenarios on how to install and run minikube or kind "from scratch"...

But those can probably refer to the project documentation, and link straight over to minikube and kind sites ?

The killercoda environment comes with a pre-installed and running kubeadm environment, without start.sh

For the user, this means they can start directly with kubectl without having to first look at the cluster installer.

@nitishfy
Copy link
Member

nitishfy commented Jan 16, 2023

I would suggest to remove minikube, also from the first scenario (all other scenarios start with it running).

https://kubernetes.io/docs/tutorials/kubernetes-basics/create-cluster/ - call it "Connect to Cluster" or such ?

This will allow migrating to killercoda, and leaving "Hello, Minikube" as the only page needing minikube.

Then, if someone wants to contribute scenarios on how to install and run minikube or kind "from scratch"...

But those can probably refer to the project documentation, and link straight over to minikube and kind sites ?

The killercoda environment comes with a pre-installed and running kubeadm environment, without start.sh

For the user, this means they can start directly with kubectl without having to first look at the cluster installer.

That's a good approach! However, I'm likely unsure if sig-docs is maintaining the minikube documentation. How would it sound to redirect an important topic link of Kubernetes documentation to the documentation outside the Kubernetes docs :( ?

@afbjorklund
Copy link

However, I'm likely unsure if sig-docs is maintaining the minikube documentation.

We are talking about the "Hello, Minikube" page for Katacoda here, not the minikube documentation...
Just saying that when the online tutorial is removed (with Katacoda), there will not be so much left of it ?

So it would then look more like the information on this page: https://kubernetes.io/docs/tasks/tools/
A short introduction, and then a link with details. Already happens, with e.g. the container runtimes ?

It's fine to keep the separate page of course, but then it needs to be kept in sync with the project.

And the k8s.io front page today, skips right over it - and goes straight to "Learn Kubernetes Basics"

@sftim
Copy link
Contributor

sftim commented Jan 16, 2023

This will allow migrating to killercoda

Please use #38878 to discuss what should replace Katacoda - we haven't yet decided.

@sftim
Copy link
Contributor

sftim commented Feb 4, 2023

I'm proposing that we work towards removing Katacoda by the end of March 2023. How does that sound, Kubernetes folks?

@sftim
Copy link
Contributor

sftim commented Feb 4, 2023

Banner to announce that: #39257

@tengqm
Copy link
Contributor

tengqm commented Feb 5, 2023

Let's get this done asap. We keep receiving complaints about Katacoda not working as documented. There are simply many issues reported none gets addressed in time.

@sftim
Copy link
Contributor

sftim commented Feb 6, 2023

I've contacted O'Reilly with our proposed shutdown date (end of March 2023).

@medyagh
Copy link
Member

medyagh commented Feb 13, 2023

I purpose to continue using minikube in the future implementation, (for example https://killercoda.com/examples/scenario/kubernetes-1node) since minikube provides special features for local development (such as fast "image build" and "dashboard" and mount, ...) , that would be more realistic way of helping user in their journey so they could continue it on their local machine as well.

most users are not interested to bootstrap using kubeadm but they are more interested in building/accessing their apps.

@sftim
Copy link
Contributor

sftim commented Feb 13, 2023

The best place to propose how we replace Katacoda is in the discussion that we're using.

@medyagh
Copy link
Member

medyagh commented Mar 22, 2023

Hello regarding the katakoda shutdown
https://kubernetes.io/blog/2023/02/14/kubernetes-katacoda-tutorials-stop-from-2023-03-31/

I would like to request to convert the katakoda tutorials to a plain-text format to keep on kuberentes websites, these scenarios are very important for new users who just wanna try Kubernetes and at least we could save these tutorials that users have loved for years in a text format

@sftim
Copy link
Contributor

sftim commented Mar 23, 2023

@medyagh, the best place to propose that work is as a new feature request. Visit https://github.com/kubernetes/website/issues/new/choose to file one, and reference #33936 (comment) when you do.


If you want to be part of the discussion about different options, see #38878.

@sftim
Copy link
Contributor

sftim commented Mar 23, 2023

@marcosnils you asked in #38878 (comment) about progress. This umbrella issue (and the child issues it covers) is where we track progress.

@sftim
Copy link
Contributor

sftim commented Apr 4, 2023

@sftim
Copy link
Contributor

sftim commented May 2, 2023

Let's close this, and open new issues for any snagging we encounter.

/close

@k8s-ci-robot
Copy link
Contributor

@sftim: Closing this issue.

In response to this:

Let's close this, and open new issues for any snagging we encounter.

/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@sftim
Copy link
Contributor

sftim commented Aug 11, 2023

Also see #42505

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. priority/important-soon Must be staffed and worked on either currently, or very soon, ideally in time for the next release. triage/accepted Indicates an issue or PR is ready to be actively worked on.
Projects
None yet
Development

No branches or pull requests