kubectl 是 Kubernetes 的命令行工具,通过 API server 与集群进行交互。
kubectl 可以通过 ~/.kube/config
配置连接到一个或多个集群。
具体如何配置可以参考: 配置对多集群的访问 。如果需要配置远程集群,可以参考: 搭建远程 Kubernetes 开发环境 。
查看配置的集群:
$ kubectl config get-contexts CURRENT NAME CLUSTER AUTHINFO NAMESPACE * minikube minikube minikube
选择某个集群:
$ kubectl config set-context minikube Context "minikube" modified.
$ kubectl kubectl controls the Kubernetes cluster manager. Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/ Basic Commands (Beginner): create Create a resource from a file or from stdin. expose Take a replication controller, service, deployment or pod and expose it as a new Kubernetes Service run Run a particular image on the cluster set Set specific features on objects run-container Run a particular image on the cluster. This command is deprecated, use "run" instead Basic Commands (Intermediate): get Display one or many resources explain Documentation of resources edit Edit a resource on the server delete Delete resources by filenames, stdin, resources and names, or by resources and label selector Deploy Commands: rollout Manage the rollout of a resource rolling-update Perform a rolling update of the given ReplicationController scale Set a new size for a Deployment, ReplicaSet, Replication Controller, or Job autoscale Auto-scale a Deployment, ReplicaSet, or ReplicationController Cluster Management Commands: certificate Modify certificate resources. cluster-info Display cluster info top Display Resource (CPU/Memory/Storage) usage. cordon Mark node as unschedulable uncordon Mark node as schedulable drain Drain node in preparation for maintenance taint Update the taints on one or more nodes Troubleshooting and Debugging Commands: describe Show details of a specific resource or group of resources logs Print the logs for a container in a pod attach Attach to a running container exec Execute a command in a container port-forward Forward one or more local ports to a pod proxy Run a proxy to the Kubernetes API server cp Copy files and directories to and from containers. auth Inspect authorization Advanced Commands: apply Apply a configuration to a resource by filename or stdin patch Update field(s) of a resource using strategic merge patch replace Replace a resource by filename or stdin convert Convert config files between different API versions Settings Commands: label Update the labels on a resource annotate Update the annotations on a resource completion Output shell completion code for the specified shell (bash or zsh) Other Commands: api-versions Print the supported API versions on the server, in the form of "group/version" config Modify kubeconfig files help Help about any command plugin Runs a command-line plugin version Print the client and server version information Usage: kubectl [flags] [options] Use "kubectl <command> --help" for more information about a given command. Use "kubectl options" for a list of global command-line options (applies to all commands).
使用语法:
$ kubectl [command] [TYPE] [NAME] [flags]
create
、 get
、 describe
、 delete
。 $ kubectl get pod pod_name
。 $ kubectl get pods
。 $ kubectl create namespace jenkins
新增 jenkins-deployment.yaml 文件。
$ cat jenkins-deployment.yaml apiVersion: extensions/v1beta1 kind: Deployment metadata: name: jenkins-deployment spec: replicas: 1 selector: matchLabels: app: jenkins template: metadata: labels: app: jenkins spec: containers: - name: jenkins image: jenkins:2.60.3 ports: - containerPort: 8080
执行命令,部署 Deployment。
$ kubectl create -f jenkins-deployment.yaml --namespace=jenkins deployment.extensions/jenkins-deployment created
$ kubectl describe deployments --namespace=jenkins
新增 jenkins-service.yaml 文件。
$ cat jenkins-service.yaml apiVersion: v1 kind: Service metadata: name: jenkins spec: type: NodePort ports: - port: 8080 targetPort: 8080 nodePort: 30000 selector: app: jenkins
执行命令,部署 service ,nodePort 参数指定对外的服务端口。
$ kubectl create -f jenkins-service.yaml --namespace=jenkins
在浏览器打开链接: http://your_node_host_ip:30000 ,发现需要输入初始密码。
查看 Pod 名称:
$ kubectl get pods --namespace=jenkins NAME READY STATUS RESTARTS AGE jenkins-deployment-868cc579df-42lpn 1/1 Running 0 21m
获取密码:
$ kubectl log jenkins-deployment-868cc579df-42lpn --namespace=jenkins
在日志中,可以查看到初始化密码。