Kubernetes kubectl
Overview
Kubectl 명령어 내용 정리
Basic
Configuration file
To access the Kubernetes cluster, the kubectl client needs the master node endpoint and appropriate credentials to be able to interact with the API server running on the master node.
While starting the Minikube, the startup process creates, by default, a configuration file, config, inside the .kube directory(often referred to as the dot-kube-config file), which resides in the user's home directory. The configuration file has all the connection details required by kubectl.
By default, the kubectl binary parses this file to find the master node's connection endpoint, along with credentials. To look at the connection details, we can either see the content of the ~/.kube/config file or run the following command.
$ kubectl config view apiVersion: v1 clusters: - cluster: certificate-authority: /Users/sungtaekim/.minikube/ca.crt server: https://192.168.99.101:8443 name: minikube contexts: - context: cluster: minikube user: minikube name: minikube current-context: minikube kind: Config preferences: {} users: - name: minikube user: client-certificate: /Users/sungtaekim/.minikube/client.crt client-key: /Users/sungtaekim/.minikube/client.key
Actions
exec
Execute a command in a container.
logs
Print the logs for a container in a pod or specified resource. If the pod has only one container, the container name is optional.
proxy
Creates a proxy server or application-level gateway between localhost and the Kubernetes API server. It also allows serving static content over the specified HTTP path. All incoming data enters through one port and gets forwarded to the remote Kubernetes API server port, except for the path matching the static content path.
run
The run command creates a new deployment. This performed a few things.
- Searched for a suitable node where an instance of the application could be run.
- Scheduled the application to run on that Node.
- Configured the cluster to reschedule the instance on a new Node when needed.
scale
Set a new allows users to specify one or more preconditions for the scale action.
Scale also allows users to specify one or more preconditions for the scale action.
If --current-replicas or --resource-version is specified, it is validated before
config
Modify kubeconfig files using subcommands like "kubectl config set current-context my-context".
kubectl config use-context <context name>
Sets the current-context in a kubeconfig file.
$ kubectl config use-context minikube Switched to context "minikube".
kubectl config view
Display merged kubeconfig setting or a specified kubeconfig file.
$ kubectl config view apiVersion: v1 clusters: - cluster: certificate-authority: /Users/sungtaekim/.minikube/ca.crt server: https://192.168.99.101:8443 name: minikube contexts: - context: cluster: minikube user: minikube name: minikube current-context: minikube kind: Config preferences: {} users: - name: minikube user: client-certificate: /Users/sungtaekim/.minikube/client.crt client-key: /Users/sungtaekim/.minikube/client.key
cluster-info
Display cluster info.
$ kubectl cluster-info Kubernetes master is running at https://192.168.99.101:8443 KubeDNS is running at https://192.168.99.101:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
describe
Show details of a specific resource or group of resources.
Print a detailed description of the selected resources, including related resources such as events or controllers. You may select a single object by name, all objects of that type, provide a name prefix, or label selector. For example:
$ kubectl describe TYPE NAME_PREFIX
will first check for an exact match on TYPE and NAME PREFIX. If no such resource exists, it will output details for every resource that has a name prefixed with NAME PREFIX.
nodes
pods
deployment
Example
$ kubectl describe deployments kubernetes-bootcamp Name: kubernetes-bootcamp Namespace: default CreationTimestamp: Thu, 02 May 2019 11:23:50 +0000 Labels: run=kubernetes-bootcamp Annotations: deployment.kubernetes.io/revision: 1 Selector: run=kubernetes-bootcamp Replicas: 4 desired | 4 updated | 4 total | 4 available | 0 unavailable StrategyType: RollingUpdate MinReadySeconds: 0 RollingUpdateStrategy: 25% max unavailable, 25% max surge Pod Template: Labels: run=kubernetes-bootcamp Containers: kubernetes-bootcamp: Image: gcr.io/google-samples/kubernetes-bootcamp:v1 Port: 8080/TCP Host Port: 0/TCP Environment: <none> Mounts: <none> Volumes: <none> Conditions: Type Status Reason ---- ------ ------ Progressing True NewReplicaSetAvailable Available True MinimumReplicasAvailable OldReplicaSets: <none> NewReplicaSet: kubernetes-bootcamp-6bf84cb898 (4/4 replicas created) Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ScalingReplicaSet 22m deployment-controller Scaled up replica set kubernetes-bootcamp-6bf84cb898 to 1 Normal ScalingReplicaSet 10m deployment-controller Scaled up replica set kubernetes-bootcamp-6bf84cb898 to 4 $ kubectl describe deployments/kubernetes-bootcamp Name: kubernetes-bootcamp Namespace: default CreationTimestamp: Thu, 02 May 2019 11:23:50 +0000 Labels: run=kubernetes-bootcamp Annotations: deployment.kubernetes.io/revision: 1 Selector: run=kubernetes-bootcamp Replicas: 4 desired | 4 updated | 4 total | 4 available | 0 unavailable StrategyType: RollingUpdate MinReadySeconds: 0 RollingUpdateStrategy: 25% max unavailable, 25% max surge Pod Template: Labels: run=kubernetes-bootcamp Containers: kubernetes-bootcamp: Image: gcr.io/google-samples/kubernetes-bootcamp:v1 Port: 8080/TCP Host Port: 0/TCP Environment: <none> Mounts: <none> Volumes: <none> Conditions: Type Status Reason ---- ------ ------ Progressing True NewReplicaSetAvailable Available True MinimumReplicasAvailable OldReplicaSets: <none> NewReplicaSet: kubernetes-bootcamp-6bf84cb898 (4/4 replicas created) Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ScalingReplicaSet 22m deployment-controller Scaled up replica set kubernetes-bootcamp-6bf84cb898 to 1 Normal ScalingReplicaSet 10m deployment-controller Scaled up replica set kubernetes-bootcamp-6bf84cb898 to 4
get
Display one or many resources.
Prints a table of the most important information about the specified resources. You can filter the list using a label selector and the --selector flag. If the desired resource type is namespaced you will only see results in your current namespace unless you pass --all-namespaces.
Uninitialized objects are not shown unless --include-uninitialized is passed.
By specifying the output as 'template' and providing a Go template as the value of the --template flag, you can filter the attributes of the fetched resources.
pods
List all pods in ps output format.
Example
$ kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES kubernetes-bootcamp-6bf84cb898-7n6g4 1/1 Running 0 13m 172.18.0.4 minikube <none> <none> kubernetes-bootcamp-6bf84cb898-87l4t 1/1 Running 0 116s 172.18.0.6 minikube <none> <none> kubernetes-bootcamp-6bf84cb898-t4mht 1/1 Running 0 116s 172.18.0.5 minikube <none> <none> kubernetes-bootcamp-6bf84cb898-wf6f9 1/1 Running 0 116s 172.18.0.7 minikube <none> <none>
rollout
Manage the rollout of a resource.
Valid resource types.
- deployments
- daemonsets
- statefulsets
set
Configure application resources.
$ kubectl set SUBCOMMAND [options]
env
Update environment variables on a pod template.
image
Update image of a pod template.
Example
$ kubectl set image deployment/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2 deployment.apps/kubernetes-bootcamp image updated
resources
Update resource requests/limits on objects with pod templates.
selector
Set the selector on a resource.
subject
Update User, Group or ServiceAccount in a RoleBinding/ClusterRoleBinding.
ETC
$ kubectl version Client Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.3", GitCommit:"721bfa751924da8d1680787490c54b9179b1fed0", GitTreeState:"clean", BuildDate:"2019-02-01T20:08:12Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.3", GitCommit:"721bfa751924da8d1680787490c54b9179b1fed0", GitTreeState:"clean", BuildDate:"2019-02-01T20:00:57Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}