Kubernetes (minikube)

kubectlのインストール

minikubeにはkubernetesクライアントであるkubectlがセットでインストールされますが、単独でkubectlをインストールした場合と比較してコマンド入力方法が異なります。

minikube kubectlを使用する場合

$ minikube kubectl -- <subcommand> <object-type> <object-name> -o --option

単独でkubectlをインストールした場合

$ kubectl <subcommand> <object-type> <object-name> -o --option

エイリアスを指定してminikubeのkubectlを使用しても良いですが、利便性と本番環境のことを考慮し、スタンドアローンで最新版kubectlをインストールします。

最新バージョンのダウンロード

$ curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

チェックサムファイルのダウンロードと認証

$ curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
$ echo "$(cat kubectl.sha256)  kubectl" | sha256sum --check
kubectl: OK

インストール

$ sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

動作兼バージョン確認

$ kubectl version --client --output=yaml
clientVersion:
  buildDate: "2022-08-17T18:54:23Z"
  compiler: gc
  gitCommit: 95ee5ab382d64cfe6c28967f36b53970b8374491
  gitTreeState: clean
  gitVersion: v1.24.4
  goVersion: go1.18.5
  major: "1"
  minor: "24"
  platform: linux/amd64
kustomizeVersion: v4.5.4

minikube起動時に作成されるkubernetesデフォルトクラスター(profile:minikube)へのAPI接続設定確認
~/.kube/config

$ kubectl config view

apiVersion: v1
clusters:
- cluster:
    certificate-authority: /home/student/.minikube/ca.crt
    server: https://192.168.99.100:8443
  name: minikube
contexts:
- context:
    cluster: minikube
    user: minikube
  name: minikube
current-context: minikube
kind: Config
preferences: {}
users:
- name: minikube
  user:
    client-certificate: /home/student/.minikube/profiles/minikube/client.crt
    client-key: /home/student/.minikube/profiles/minikube/client.key

kubernetesクラスターインフォ

$ kubectl cluster-info

Kubernetes master is running at https://192.168.99.100:8443
KubeDNS is running at https://192.168.99.100:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

kubectl get

$ kubectl get nodes
NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   5d    v1.24.3
$ kubectl get namespaces
NAME                   STATUS   AGE
default                Active   5d
kube-node-lease        Active   5d
kube-public            Active   5d
kube-system            Active   5d
kubernetes-dashboard   Active   5d
$ kubectl get pods -A
NAMESPACE              NAME                                         READY   STATUS    RESTARTS       AGE
kube-system            coredns-6d4b75cb6d-gv9md                     1/1     Running   3 (54m ago)    5d
kube-system            etcd-minikube                                1/1     Running   3 (54m ago)    5d
kube-system            kube-apiserver-minikube                      1/1     Running   3 (4d2h ago)   5d
kube-system            kube-controller-manager-minikube             1/1     Running   3 (4d2h ago)   5d
kube-system            kube-proxy-l596g                             1/1     Running   3 (54m ago)    5d
kube-system            kube-scheduler-minikube                      1/1     Running   3 (54m ago)    5d
kube-system            storage-provisioner                          1/1     Running   7 (52m ago)    5d
kubernetes-dashboard   dashboard-metrics-scraper-78dbd9dbf5-w2kj5   1/1     Running   3 (54m ago)    5d
kubernetes-dashboard   kubernetes-dashboard-5fd5574d9f-j6chx        1/1     Running   4 (52m ago)    5d

kubectlリファレンス

kubectlコマンドリファレンス

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands


マニフェストyamlファイルに記述する際のリソースタイプ( apiVersion, kind )や略称などの確認

$ kubectl api-resources
NAME SHORTNAMES APIVERSION NAMESPACED KIND
bindings v1 true Binding
componentstatuses cs v1 false ComponentStatus
configmaps cm v1 true ConfigMap
endpoints ep v1 true Endpoints
events ev v1 true Event
limitranges limits v1 true LimitRange
namespaces ns v1 false Namespace
nodes no v1 false Node
persistentvolumeclaims pvc v1 true PersistentVolumeClaim
persistentvolumes pv v1 false PersistentVolume
pods po v1 true Pod
podtemplates v1 true PodTemplate
replicationcontrollers rc v1 true ReplicationController
resourcequotas quota v1 true ResourceQuota
secrets v1 true Secret
serviceaccounts sa v1 true ServiceAccount
services svc v1 true Service
mutatingwebhookconfigurations admissionregistration.k8s.io/v1 false MutatingWebhookConfiguration
validatingwebhookconfigurations admissionregistration.k8s.io/v1 false ValidatingWebhookConfiguration
customresourcedefinitions crd,crds apiextensions.k8s.io/v1 false CustomResourceDefinition
apiservices apiregistration.k8s.io/v1 false APIService
controllerrevisions apps/v1 true ControllerRevision
daemonsets ds apps/v1 true DaemonSet
deployments deploy apps/v1 true Deployment
replicasets rs apps/v1 true ReplicaSet
statefulsets sts apps/v1 true StatefulSet
tokenreviews authentication.k8s.io/v1 false TokenReview
localsubjectaccessreviews authorization.k8s.io/v1 true LocalSubjectAccessReview
selfsubjectaccessreviews authorization.k8s.io/v1 false SelfSubjectAccessReview
selfsubjectrulesreviews authorization.k8s.io/v1 false SelfSubjectRulesReview
subjectaccessreviews authorization.k8s.io/v1 false SubjectAccessReview
horizontalpodautoscalers hpa autoscaling/v2 true HorizontalPodAutoscaler
cronjobs cj batch/v1 true CronJob
jobs batch/v1 true Job
certificatesigningrequests csr certificates.k8s.io/v1 false CertificateSigningRequest
leases coordination.k8s.io/v1 true Lease
endpointslices discovery.k8s.io/v1 true EndpointSlice
events ev events.k8s.io/v1 true Event
flowschemas flowcontrol.apiserver.k8s.io/v1beta2 false FlowSchema
prioritylevelconfigurations flowcontrol.apiserver.k8s.io/v1beta2 false PriorityLevelConfiguration
ingressclasses networking.k8s.io/v1 false IngressClass
ingresses ing networking.k8s.io/v1 true Ingress
networkpolicies netpol networking.k8s.io/v1 true NetworkPolicy
runtimeclasses node.k8s.io/v1 false RuntimeClass
poddisruptionbudgets pdb policy/v1 true PodDisruptionBudget
podsecuritypolicies psp policy/v1beta1 false PodSecurityPolicy
clusterrolebindings rbac.authorization.k8s.io/v1 false ClusterRoleBinding
clusterroles rbac.authorization.k8s.io/v1 false ClusterRole
rolebindings rbac.authorization.k8s.io/v1 true RoleBinding
roles rbac.authorization.k8s.io/v1 true Role
priorityclasses pc scheduling.k8s.io/v1 false PriorityClass
csidrivers storage.k8s.io/v1 false CSIDriver
csinodes storage.k8s.io/v1 false CSINode
csistoragecapacities storage.k8s.io/v1 true CSIStorageCapacity
storageclasses sc storage.k8s.io/v1 false StorageClass
volumeattachments storage.k8s.io/v1 false VolumeAttachment