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 |