kubernetes之kubectl与YAML详解1( 四 )

kubectl部署应用的周期通过kubectl部署一个应用,他的生命周期如下,会经历如下过程 。创建资源,发布应用,应用更新,应用回滚,以及应用删除 。我们的应用一般都是直接构建好的镜像 , 然后直接就能部署 。应用可以实现多个副本 。
1、创建kubectl run nginx --replicas=3 --image=nginx:1.14 --port=80kubectl get deploy,pods2、发布kubectl expose deployment nginx --port=80 --type=NodePort --target-port=80 --name=nginx-servicekubectl get service3、更新kubectl set image deployment/nginx nginx=nginx:1.154、回滚kubectl rollout history deployment/nginxkubectl rollout undo deployment/nginx5、删除kubectl delete deploy/nginxkubectl delete svc/nginx-servicekubectl部署应用过程详解kubectl run 运行容器kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...] [options]
NAM:容器的名称
--image:指定使用的镜像
--env:指定容器内的环境变量,
--port:指定容器中需要映射的端口 , 也就是需要暴露的服务的端口
--replicas:指定副本数
--dry-run:指定是创建还是测试用
--overrides:可以重写配置
--command :可以替换容器启动时的命令 。
[root@mcwk8s04 ~]#[root@mcwk8s04 ~]# kubectl run mcw-nginx-deployment --image=nginx --port=80 --replicas=3kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.deployment.apps/mcw-nginx-deployment created[root@mcwk8s04 ~]#[root@mcwk8s04 ~]# kubectl get pod -o wideNAMEREADYSTATUSRESTARTSAGEIPNODENOMINATED NODEREADINESS GATESmcw-nginx-deployment-86466dbd78-fkrs71/1Running027m172.17.13.2mcwk8s05<none><none>mcw-nginx-deployment-86466dbd78-rnvsc1/1Running027m172.17.13.4mcwk8s05<none><none>mcw-nginx-deployment-86466dbd78-znjbm1/1Running027m172.17.21.3mcwk8s06<none><none>[root@mcwk8s04 ~]# kubectl get指定查看多个资源
[root@mcwk8s04 ~]# kubectl get deploy,podsNAMEREADYUP-TO-DATEAVAILABLEAGEdeployment.extensions/mcw-nginx-deployment3/33329mNAMEREADYSTATUSRESTARTSAGEpod/mcw-nginx-deployment-86466dbd78-fkrs71/1Running029mpod/mcw-nginx-deployment-86466dbd78-rnvsc1/1Running029mpod/mcw-nginx-deployment-86466dbd78-znjbm1/1Running029m[root@mcwk8s04 ~]# 查看副本
[root@mcwk8s04 ~]# kubectl get replicasetsNAMEDESIREDCURRENTREADYAGEmcw-nginx-deployment-86466dbd7833331m[root@mcwk8s04 ~]# kubectl get rsNAMEDESIREDCURRENTREADYAGEmcw-nginx-deployment-86466dbd7833331m[root@mcwk8s04 ~]# kubectl expose 让pod提供对外服务kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP|SCTP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type] [options]-f FILENAME | TYPE NAME :可以是yaml文件,指定资源类型 。
--port:指定暴露的端口 , 集群内访问service的端口--protocol:指定service转发的协议类型--target-port:容器内服务端口--name :指定service的名字--type:指定service类型 ClusterIP, NodePort, LoadBalancer, or ExternalName
[root@mcwk8s04 ~]# kubectl expose deployment--port=80 --target-port=80 --name=mcw-nginx-service --type=NodePorterror: resource(s) were provided, but no name, label selector, or --all flag specifiedSee 'kubectl expose -h' for help and examples[root@mcwk8s04 ~]# kubectl get deploymentNAMEREADYUP-TO-DATEAVAILABLEAGEmcw-nginx-deployment3/33354m[root@mcwk8s04 ~]# kubectl expose deployment mcw-nginx-deployment--port=80 --target-port=80 --name=mcw-nginx-service --type=NodePortservice/mcw-nginx-service exposed[root@mcwk8s04 ~]# kubectl get svcNAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGEkubernetesClusterIP10.2.0.1<none>443/TCP5d19hmcw-nginx-serviceNodePort10.2.0.252<none>80:39719/TCP11s[root@mcwk8s04 ~]# kubectl api-resources资源简写[root@mcwk8s04 ~]# kubectl api-resourcesNAMESHORTNAMESAPIGROUPNAMESPACEDKINDbindingstrueBindingcomponentstatusescsfalseComponentStatusconfigmapscmtrueConfigMapendpointseptrueEndpointseventsevtrueEventlimitrangeslimitstrueLimitRangenamespacesnsfalseNamespacenodesnofalseNodepersistentvolumeclaimspvctruePersistentVolumeClaimpersistentvolumespvfalsePersistentVolumepodspotruePodpodtemplatestruePodTemplatereplicationcontrollersrctrueReplicationControllerresourcequotasquotatrueResourceQuotasecretstrueSecretserviceaccountssatrueServiceAccountservicessvctrueServicemutatingwebhookconfigurationsadmissionregistration.k8s.iofalseMutatingWebhookConfigurationvalidatingwebhookconfigurationsadmissionregistration.k8s.iofalseValidatingWebhookConfigurationcustomresourcedefinitionscrd,crdsapiextensions.k8s.iofalseCustomResourceDefinitionapiservicesapiregistration.k8s.iofalseAPIServicecontrollerrevisionsappstrueControllerRevisiondaemonsetsdsappstrueDaemonSetdeploymentsdeployappstrueDeploymentreplicasetsrsappstrueReplicaSetstatefulsetsstsappstrueStatefulSettokenreviewsauthentication.k8s.iofalseTokenReviewlocalsubjectaccessreviewsauthorization.k8s.iotrueLocalSubjectAccessReviewselfsubjectaccessreviewsauthorization.k8s.iofalseSelfSubjectAccessReviewselfsubjectrulesreviewsauthorization.k8s.iofalseSelfSubjectRulesReviewsubjectaccessreviewsauthorization.k8s.iofalseSubjectAccessReviewhorizontalpodautoscalershpaautoscalingtrueHorizontalPodAutoscalercronjobscjbatchtrueCronJobjobsbatchtrueJobcertificatesigningrequestscsrcertificates.k8s.iofalseCertificateSigningRequestleasescoordination.k8s.iotrueLeaseeventsevevents.k8s.iotrueEventdaemonsetsdsextensionstrueDaemonSetdeploymentsdeployextensionstrueDeploymentingressesingextensionstrueIngressnetworkpoliciesnetpolextensionstrueNetworkPolicypodsecuritypoliciespspextensionsfalsePodSecurityPolicyreplicasetsrsextensionstrueReplicaSetingressesingnetworking.k8s.iotrueIngressnetworkpoliciesnetpolnetworking.k8s.iotrueNetworkPolicyruntimeclassesnode.k8s.iofalseRuntimeClasspoddisruptionbudgetspdbpolicytruePodDisruptionBudgetpodsecuritypoliciespsppolicyfalsePodSecurityPolicyclusterrolebindingsrbac.authorization.k8s.iofalseClusterRoleBindingclusterrolesrbac.authorization.k8s.iofalseClusterRolerolebindingsrbac.authorization.k8s.iotrueRoleBindingrolesrbac.authorization.k8s.iotrueRolepriorityclassespcscheduling.k8s.iofalsePriorityClasscsidriversstorage.k8s.iofalseCSIDrivercsinodesstorage.k8s.iofalseCSINodestorageclassesscstorage.k8s.iofalseStorageClassvolumeattachmentsstorage.k8s.iofalseVolumeAttachment[root@mcwk8s04 ~]#

推荐阅读