这位博主应该是第一个在博客和小型项目中使用Kubernetes的人,是不是有点大炮轰蚊子的感觉。他认为:
毫无疑问,Kubernetes是做了很多的引擎盖下复杂的事情。但是,作为最终用户,我不会遇到这种复杂性。在花了几个小时通过官方教程学习了关键概念之后,日常使用起来确实非常容易。
例如,此博客的整个部署配置包含在此yml 文件中:
apiVersion: v1 kind: Service metadata: name: blog spec: ports: - port: 80 selector: app: blog <hr> apiVersion: apps/v1 kind: Deployment metadata: name: blog spec: selector: matchLabels: app: blog replicas: 2 template: metadata: labels: app: blog spec: containers: - image: marcusbuffett/blog:latest name: blog ports: - containerPort: 80 name: blog <hr> apiVersion: extensions/v1beta1 kind: Ingress metadata: name: blog annotations: kubernetes.io/tls-acme: "true" cert-manager.io/cluster-issuer: letsencrypt konghq.com/override: "https-only" spec: tls: - secretName: blog-tls hosts: - mbuffett.com rules: - host: mbuffett.com http: &http_rules paths: - backend: serviceName: blog servicePort: 80
|
只有50行,完全是自包含的。它比在AWS控制台中单击要好得多,而且易于使用,因为我所需的一切都在那个文件中。如果我需要更新任何内容,我所要做的就是编辑该文件并运行k apply -f deploy.yml(kubectl别名为k)。
在我的项目中,我有一个像这样的脚本:
#!/bin/bash docker build -t marcusbuffett/blog:latest . docker push marcusbuffett/blog:latest kubectl rollout restart deployment blog
|
如果要部署,请运行./deploy.sh。滚动部署开始。如果失败,将使用最新的工作版本。对于我的大多数副项目,我可以像这样复制配置和部署脚本,并使该项目在生产环境中的启动和运行比其他解决方案更快。
从Ansible剧本到Docker Compose,再到Heroku,再到AWS,再到裸机,我在部署技术方面经历了几次尝试。我只是说这是为了说明我已经尝试过替代方法,我不仅在第一轮跳入Kubernetes,而且会说“这是最好的!”。