一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第6天,点击查看活动详情。
Kubernetes通过各种Controller来管理Pod的生命周期。为了满足各种不同使用场景,Kubernetes开发了Deployment、ReplicaSet、DaemonSet、StatefuleSet、Job等多种Controller
通过Kubectl连接Kubernetes集群
类似openssh是通过.ssh文件夹来记录ssh相关信息,k8s中是通过.kube文件夹来记录cluster相关信息。我们如果需要远程访问,直接进行拷贝即可
kubectl config view
cat ~/.kube/config
KUBECONFIG=~/.kube/config:~/.kube/config.183 kubectl config view --merge --flatten > ~/.kube/config
export KUBECONFIG=~/.kube/config
Deployment
运行Deployment
通过以下命令,可以将一个deployment运行起来
kubectl run nginx-deployment --image=nginx:1.7.9 --replicas=2
kubectl create deployment nginx-deployment --image=nginx:1.7.9 --replicas=2
kubectl describe deployment kubernetes-bootcamp
Events是用于记录Deployment的日志,也就是将ReplicaSet的启动过程进行了记录。通过上面的例子,可以知道Deployment是通过ReplicaSet来管理Pod
kubectl get replicaset
kubectl describe replicaset kubernetes-bootcamp-123456789
Controlled By这里说明当前ReplicaSet是由Deployment nginx-deployment来创建的
kubectl describe pod kubernetes-bootcamp-123456789-12345
Controlled By这里说明当Pod是由ReplicaSet nginx-deployment-123456789来创建的。跟上面类似Pod的启动过程由Events来记录。比如image不存在导致操作失败,在这个地方也能查到原因。
过程如下
(1)通过kubectl创建Deployment。
(2)通过Deployment创建ReplicaSet。
(3)通过ReplicaSet创建Pod。
Kubernetes支持两种创建资源的方式
(1)使用kubectl命令创建,比如“kubectl run nginx-deployment --image=nginx:1.7.9--replicas=2”,同时通过参数来指定我们需要资源的属性。
(2)通过配置文件和kubectl apply创建。可执行命令“kubectl apply -fnginx.yml”
总结
下面对这两种方式进行比较
(1)基于命令的方式:简单、直观、快捷
(2)基于配置文件的方式:配置文件支持创建资源的template,也能够重复部署。类似代码管理。在生产环境试用较多。我们大多数会采用配置文件的方式
Kubernets还提供了其它的几个命令,比方说kubectl create、kubectl replace、kubectl edit和kubectl patch。为避免产生误导,本文尽量只使用kubectl apply,这个命令已经能够应对大多数场景,用起来更加方便。