Skip to content

Instantly share code, notes, and snippets.

@dkeightley
dkeightley / replace-nodes.sh
Last active June 1, 2023 23:03
replace-nodes.sh
# Label used to determine nodes that should be replaced
LABEL="ami=old"
replace_nodes=$(kubectl get nodes --sort-by=.metadata.creationTimestamp --no-headers -o=name --selector=$LABEL)
echo "-- Replacing the following nodes:"
echo "$replace_nodes"
for node in $replace_nodes
do
echo "-- Checking $node"
@dkeightley
dkeightley / kubeconfig-rke1.md
Created April 20, 2023 23:06
kubeconfig-rke1.md

Retrieve a kubeconfig - without jq

This option does not require kubectl or jq on the server because this uses the rancher/rancher-agent image to retrieve the kubeconfig.

  • Get kubeconfig
docker run --rm --net=host -v $(docker inspect kubelet --format '{{ range .Mounts }}{{ if eq .Destination "/etc/kubernetes" }}{{ .Source }}{{ end }}{{ end }}')/ssl:/etc/kubernetes/ssl:ro --entrypoint bash $(docker inspect $(docker images -q --filter=label=org.opencontainers.image.source=https://github.com/rancher/hyperkube.git) --format='{{index .RepoTags 0}}' | tail -1) -c 'kubectl --kubeconfig /etc/kubernetes/ssl/kubecfg-kube-node.yaml get configmap -n kube-system full-cluster-state -o json | jq -r .data.\"full-cluster-state\" | jq -r .currentState.certificatesBundle.\"kube-admin\".config | sed -e "/^[[:space:]]*server:/ s_:.*_: \"https://127.0.0.1:6443\"_"' > kubeconfig_admin.yaml
  • Run kubectl get nodes
@dkeightley
dkeightley / http-echo-deployment.yaml
Created March 29, 2023 01:19
http echo deployment service and ingress for testing
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: http-echo
name: http-echo
namespace: default
spec:
selector:
matchLabels:
@dkeightley
dkeightley / rancher-pod-logs.sh
Last active March 26, 2023 22:28
rancher-pod-logs.sh
for pod in $(kubectl get pods -n cattle-system -l app=rancher --no-headers -o custom-columns=":metadata.name")
do
kubectl logs -n cattle-system $pod -c rancher --since=48h |& gzip > $pod.log.gz
done
@dkeightley
dkeightley / sa-migration.sh
Created March 19, 2023 20:49
sa-migration.sh
#!/bin/sh
set -e
DRIVER=rancherKubernetesEngine
PREFIX=sa-fix
if ! command -v "grep" &> /dev/null; then
echo "Missing grep"
exit 1
@dkeightley
dkeightley / rancher-pod-logs.sh
Last active March 16, 2023 01:29
rancher-pod-logs
for pod in $(kubectl get pods -n cattle-system -l app=rancher --no-headers -o custom-columns=":metadata.name")
do
kubectl logs -n cattle-system $pod -c rancher |& gzip > $pod.log.gz
kubectl logs -n cattle-system $pod -c rancher -p |& gzip > $pod.previous.log.gz
done
@dkeightley
dkeightley / pod-network-failure.yml
Last active March 1, 2023 20:36
pod-network-failure.yml
apiVersion: apps/v1
kind: Deployment
metadata:
name: working-nginx
spec:
selector:
matchLabels:
name: working-nginx
replicas: 1
template:
@dkeightley
dkeightley / ingress-to-rancher.sh
Created December 14, 2022 20:36
ingress-to-rancher.sh
for ingresspod in $(kubectl -n ingress-nginx get pods -l app=ingress-nginx --template '{{range.items}}{{.metadata.name}}{{"\n"}}{{end}}')
do
echo $ingresspod
for rancherep in $(kubectl -n cattle-system get ep rancher -o json | jq -r .subsets[].addresses[].ip)
do
echo "=> ${rancherep}"
kubectl -n ingress-nginx exec $ingresspod -- curl -o /dev/null -s -w 'Connect: %{time_connect}\nStart Transfer: %{time_starttransfer}\nTotal: %{time_total}\nResponse code: %{http_code}\n' -k https://${rancherep}
echo
done
done
@dkeightley
dkeightley / coredns-autoscaler.yml
Created July 20, 2022 19:29
k3s coredns-autoscaler.yml
kind: ServiceAccount
apiVersion: v1
metadata:
name: coredns-autoscaler
namespace: kube-system
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
@dkeightley
dkeightley / userdata.sh
Last active December 4, 2023 13:33
RKE2 AWS cloud controller manager
#!/bin/sh
PUBLIC_IP=$(curl ifconfig.io)
# export INSTALL_RKE2_VERSION="v1.20.5+rke2r1"
curl -sfL https://get.rke2.io | sh -
provider_id="$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone)/$(curl -s http://169.254.169.254/latest/meta-data/instance-id)"