资讯专栏INFORMATION COLUMN

基于 Docker for MAC 的 Kubernetes 本地环境搭建与应用部署

jone5679 / 827人阅读

摘要:基于的本地环境搭建与应用部署归纳于分布式容器与编排,参考了一文,更多或者相关资料参阅。最后我们还可以用与命令来删除应用

</>复制代码

  1. 基于 Docker for MAC 的 Kubernetes 本地环境搭建与应用部署归纳于分布式容器与编排,参考了 Docker + Kubernetes一文,更多 Docker 或者 Kubernetes 相关资料参阅 Awesome Reference。
基于 Docker for MAC 的 Kubernetes 本地环境搭建与应用部署

下载最新的 Docker for Mac 或者 Edge 版本,即可以看到内置的 Kubernetes 集群,直接点击安装即可在本地搭建好单节点的 Kubernetes 环境:

安装完毕后,如果我们也勾选了 Show system containers 选项,那么使用如下的 Docker 命令,能看到自动安装的 Kubernetes 相关容器:

</>复制代码

  1. ➜ ~ docker container ls --format "table{{.Names}}
  2. {{.Image }}
  3. {{.Command}}"
  4. NAMES IMAGE COMMAND
  5. k8s_compose_compose-75f8bb4779-stxv9_docker_3c963862-f9f4-11e7-93cc-025000000001_0 docker/kube-compose-controller "/compose-controller…"
  6. k8s_POD_compose-75f8bb4779-stxv9_docker_3c963862-f9f4-11e7-93cc-025000000001_0 gcr.io/google_containers/pause-amd64:3.0 "/pause"
  7. k8s_sidecar_kube-dns-545bc4bfd4-799pr_kube-system_139bf000-f9f4-11e7-93cc-025000000001_0 gcr.io/google_containers/k8s-dns-sidecar-amd64 "/sidecar --v=2 --lo…"
  8. k8s_dnsmasq_kube-dns-545bc4bfd4-799pr_kube-system_139bf000-f9f4-11e7-93cc-025000000001_0 gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64 "/dnsmasq-nanny -v=2…"
  9. k8s_kubedns_kube-dns-545bc4bfd4-799pr_kube-system_139bf000-f9f4-11e7-93cc-025000000001_0 gcr.io/google_containers/k8s-dns-kube-dns-amd64 "/kube-dns --domain=…"
  10. k8s_kube-proxy_kube-proxy-rrd8t_kube-system_139b00df-f9f4-11e7-93cc-025000000001_0 gcr.io/google_containers/kube-proxy-amd64 "/usr/local/bin/kube…"
  11. k8s_POD_kube-dns-545bc4bfd4-799pr_kube-system_139bf000-f9f4-11e7-93cc-025000000001_0 gcr.io/google_containers/pause-amd64:3.0 "/pause"
  12. k8s_POD_kube-proxy-rrd8t_kube-system_139b00df-f9f4-11e7-93cc-025000000001_0 gcr.io/google_containers/pause-amd64:3.0 "/pause"
  13. k8s_kube-scheduler_kube-scheduler-docker-for-desktop_kube-system_972d74c9fc2f4ebd8ab673058e386a65_0 gcr.io/google_containers/kube-scheduler-amd64 "kube-scheduler --ad…"
  14. k8s_kube-apiserver_kube-apiserver-docker-for-desktop_kube-system_f7a81e8fe624bd46059fc6084e86bb81_0 gcr.io/google_containers/kube-apiserver-amd64 "kube-apiserver --ad…"
  15. k8s_etcd_etcd-docker-for-desktop_kube-system_56a21c0a5f545c0cca5388c457bb1b3b_0 gcr.io/google_containers/etcd-amd64 "etcd --advertise-cl…"
  16. k8s_kube-controller-manager_kube-controller-manager-docker-for-desktop_kube-system_8d1848c1e562e35a225e402988eadcd1_0 gcr.io/google_containers/kube-controller-manager-amd64 "kube-controller-man…"
  17. k8s_POD_kube-apiserver-docker-for-desktop_kube-system_f7a81e8fe624bd46059fc6084e86bb81_0 gcr.io/google_containers/pause-amd64:3.0 "/pause"
  18. k8s_POD_kube-controller-manager-docker-for-desktop_kube-system_8d1848c1e562e35a225e402988eadcd1_0 gcr.io/google_containers/pause-amd64:3.0 "/pause"
  19. k8s_POD_kube-scheduler-docker-for-desktop_kube-system_972d74c9fc2f4ebd8ab673058e386a65_0 gcr.io/google_containers/pause-amd64:3.0 "/pause"
  20. k8s_POD_etcd-docker-for-desktop_kube-system_56a21c0a5f545c0cca5388c457bb1b3b_0 gcr.io/google_containers/pause-amd64:3.0 "/pause"

关于各个容器的作用,可以参阅 这里。在安装过程中,Docker 也为我们安装了 kubectl 控制命令:

</>复制代码

  1. $ kubectl get namespaces
  2. $ kubectl get posts --namespace kube-system

接下来我们可以使用 kubectl 命令来创建简单的 kubernetes-dashboard 服务:

</>复制代码

  1. ➜ ~ kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
  2. secret "kubernetes-dashboard-certs" created
  3. serviceaccount "kubernetes-dashboard" created
  4. role "kubernetes-dashboard-minimal" created
  5. rolebinding "kubernetes-dashboard-minimal" created
  6. deployment "kubernetes-dashboard" created
  7. service "kubernetes-dashboard" created

服务安装完毕后可以查看部署的容器与服务:

</>复制代码

  1. ➜ ~ kubectl get deployments --namespace kube-system
  2. NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
  3. kube-dns 1 1 1 1 22m
  4. kubernetes-dashboard 1 1 1 0 26s
  5. ➜ ~ kubectl get services --namespace kube-system
  6. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  7. kube-dns ClusterIP 10.96.0.10 53/UDP,53/TCP 22m
  8. kubernetes-dashboard ClusterIP 10.111.242.95 443/TCP 30s

在 Dashboard 启动完毕后,可以使用 kubectl 提供的 Proxy 服务来访问该面板:

</>复制代码

  1. $ kubectl proxy
  2. # 打开如下地址:
  3. # http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

如果访问报错,可以尝试编辑 kubernetes-dashboard 服务,或者参阅这里:

</>复制代码

  1. $ kubectl -n kube-system edit service kubernetes-dashboard
  2. # Please edit the object below. Lines beginning with a "#" will be ignored,
  3. # and an empty file will abort the edit. If an error occurs while saving this file will be
  4. # reopened with the relevant failures.
  5. #
  6. apiVersion: v1
  7. ...
  8. name: kubernetes-dashboard
  9. namespace: kube-system
  10. resourceVersion: "343478"
  11. selfLink: /api/v1/namespaces/kube-system/services/kubernetes-dashboard-head
  12. uid: 8e48f478-993d-11e7-87e0-901b0e532516
  13. spec:
  14. clusterIP: 10.100.124.90
  15. externalTrafficPolicy: Cluster
  16. ports:
  17. - port: 443
  18. protocol: TCP
  19. targetPort: 8443
  20. selector:
  21. k8s-app: kubernetes-dashboard
  22. sessionAffinity: None
  23. type: ClusterIP ->> NodePort
  24. status:
  25. loadBalancer: {}

访问上述地址,我们可以看到登录界面:

此时可暂时直接跳过,进入到控制面板中:

Docker 同样为我们提供了简单的应用示范,可以直接使用如下的 Docker Compose 配置文件:

</>复制代码

  1. version: "3.3"
  2. services:
  3. web:
  4. build: web
  5. image: dockerdemos/lab-web
  6. volumes:
  7. - "./web/static:/static"
  8. ports:
  9. - "80:80"
  10. words:
  11. build: words
  12. image: dockerdemos/lab-words
  13. deploy:
  14. replicas: 5
  15. endpoint_mode: dnsrr
  16. resources:
  17. limits:
  18. memory: 16M
  19. reservations:
  20. memory: 16M
  21. db:
  22. build: db
  23. image: dockerdemos/lab-db

然后使用 stack 命令创建应用栈:

</>复制代码

  1. $ docker stack deploy --compose-file stack.yml demo
  2. Stack demo was created
  3. Waiting for the stack to be stable and running...
  4. - Service web has one container running

应用栈创建完毕后,可以使用 kubectl 查看创建的 Pods:

</>复制代码

  1. $ kubectl get pods
  2. NAME READY STATUS RESTARTS AGE
  3. db-7f99cc64b7-cbd9t 1/1 Running 0 2m
  4. web-758c6998f8-tmxfm 1/1 Running 0 2m
  5. words-54bf6c5d57-8bxc8 1/1 Running 0 2m
  6. words-54bf6c5d57-dzxm8 1/1 Running 0 2m
  7. words-54bf6c5d57-k2448 1/1 Running 0 2m
  8. words-54bf6c5d57-mhh4p 1/1 Running 0 2m
  9. words-54bf6c5d57-w2q82 1/1 Running 0 2m

也可以来查看部署的集群与服务:

</>复制代码

  1. $ kubectl get deployments
  2. NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
  3. db 1 1 1 1 3m
  4. web 1 1 1 1 3m
  5. words 5 5 5 5 3m
  6. $ kubectl get services
  7. NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
  8. db ClusterIP None 55555/TCP 3m
  9. kubernetes ClusterIP 10.96.0.1 443/TCP 52m
  10. web LoadBalancer 10.97.154.28 80:30577/TCP 3m
  11. words ClusterIP None 55555/TCP 3m

可以看到这里的 web 有所谓的 LoadBalancer 类型,即可以对外提供服务。最后我们还可以用 stack 与 kubectl 命令来删除应用:

</>复制代码

  1. $ docker stack remove demo
  2. $ kubectl delete deployment kubernetes-dashboard --namespace kube-system

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/32614.html

相关文章

  • 基于 Docker for MAC Kubernetes 本地环境搭建应用部署

    摘要:基于的本地环境搭建与应用部署归纳于分布式容器与编排,参考了一文,更多或者相关资料参阅。最后我们还可以用与命令来删除应用 showImg(https://segmentfault.com/img/remote/1460000006760432); 基于 Docker for MAC 的 Kubernetes 本地环境搭建与应用部署归纳于分布式容器与编排,参考了 Docker + Kub...

    SKYZACK 评论0 收藏0
  • DockerKubernetes 从听过到略懂:给程序员旋风教程

    摘要:默认监听在端口,所以我们把宿主机的端口映射到容器的端口用下面的命令可以看到正在运行中的容器这时如果你用浏览器访问,就能看到我们刚才创建的页面。这时如果刷新浏览器,就可以看到更新的内容。 早在 Docker 正式发布几个月的时候,LeanCloud 就开始在生产环境大规模使用 Docker,在过去几年里 Docker 的技术栈支撑了我们主要的后端架构。这是一篇写给程序员的 Docker ...

    jackzou 评论0 收藏0
  • Kubernetes几种主流部署方式01-minikube部署

    摘要:代表的解决方案为。虽然官网列出的部署方式很多,但也不用被这么多种部署方式搞糊涂了。虽然只是一条命令,但其实执行了很多步骤命令执行后输出如下可以看到,主要做了这些事创建了名为的虚拟机,并在虚拟机中安装了容器运行时。 综述 Kubernetes集群的组件众多,要部署一套符合生产环境的集群不是一件容易的事。好在随着社区的快速发展,特别是在它成为事实上的容器编排标准以后,基本所有的主流云平台都...

    Lionad-Morotar 评论0 收藏0
  • Kubernetes几种主流部署方式01-minikube部署

    摘要:代表的解决方案为。虽然官网列出的部署方式很多,但也不用被这么多种部署方式搞糊涂了。虽然只是一条命令,但其实执行了很多步骤命令执行后输出如下可以看到,主要做了这些事创建了名为的虚拟机,并在虚拟机中安装了容器运行时。 综述 Kubernetes集群的组件众多,要部署一套符合生产环境的集群不是一件容易的事。好在随着社区的快速发展,特别是在它成为事实上的容器编排标准以后,基本所有的主流云平台都...

    浠ラ箍 评论0 收藏0
  • 数人云|20种终极工具,为你Docker搭建安全防火墙

    摘要:为容器设计的商业安全套件,功能包括安全审计容器镜像验证运行时保护自动策略学习或入侵预防。基于一种称为的新内核技术,允许根据容器身份定义并执行网络层和层安全策略。自动发现应用程序容器和服务的行为,以及与其他类似方式检测安全升级和其他威胁。 数人云:随着越来越多的企业将生产工作负载迁移到容器当中,关于Docker的安全性,成了普遍关注的问题。 这是一个简单却又没有答案的问题,不要试图用二进...

    jlanglang 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<