可以通过kubectl run的方式启动一个Pod
$ kubectl run --image=nginx:alpine nginx-app --port=80deployment "nginx-app" created$ kubectl get podsNAME READY STATUS RESTARTS AGEnginx-app-4028413181-cnt1i 1/1 Running 0 52s
当容器的STATUS变成Runing以后,就可以用kubectl命令来操作它了,比如
kubectl get- 类似于docker ps,查询资源列表kubectl describe- 类似于docker inspect,获取资源的详细信息kubectl logs- 类似于docker logs,获取容器的日志kubectl exec- 类似于docker exec,在容器内执行一个命令
上面是通过kubectl run来启动了第一个Pod,但是kubectl run不支持所有的功能。在kubernetes中,更常用的方法是使用yaml文件来定义资源,并通过kubectl create -f file.yaml来创建资源。比如一个简单的nginx Pod可以定义为:
apiVersion: v1kind: Podmetadata:name: nginxlabels:app: nginxspec:containers:- name: nginximage: nginxports:- containerPort: 80
kubectl run 并不是直接创建一个Pod,而是先创建一个Deployment资源(replicas = 1),再由与Deployment关联的ReplicaSet来自动创建Pod,这等价于这样一个配置:
apiVersion: extensions/v1beta1kind: Deploymentmetadata:labels:run: nginx-appname: nginx-appnamespace: defaultspec:replicas: 1selector:matchLabels:run: nginx-appstrategy:rollingUpdate:maxSurge: 1maxUnavailable: 1type: RollingUpdatetemplate:metadata:labels:run: nginx-appspec:containers:- image: nginxname: nginx-appports:- containerPort: 80protocol: TCPdnsPolicy: ClusterFirstrestartPolicy: Always
