如果你想要从零开始搭建自己的k8s集群参考我的这篇博客,预计花费时间为1天:从零开始在ubuntu上安装和使用k8s集群及报错解决

自己搭建k8s集群的难点之一是需要3台ubuntu虚拟机,要求电脑至少10G内存:操作系统4G内存,3台虚拟机需要6G内存。

另一个难度是对初学者来说,搭建太复杂了。

如果你不想手动搭建集群,只想体验和使用kubernetes集群,推荐使用digitaloceankubernetes集群服务,自动搭建,无需安装。

digitaloceankubernetes集群提供3台ubuntu虚拟机(node),每台1核CPU,2G内存,共30$一个月,体验一天只要1$。

通过我的链接在digitalocean注册的新用户,可以获得100美元的2个月使用权,相当于前2个月免费用:DigitalOcean – sign up

创建kubernetes集群后,DO会提醒你使用kubectl或者doctl操作集群,我推荐kubectl这个通用工具。

在本地linux上安装kubectl,通过 kubectl 操作 k8s 集群。

echo "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo gpg --keyserver keyserver.ubuntu.com --recv-keys BA07F4FB #对安装包进行签名
sudo gpg --export --armor BA07F4FB | sudo apt-key add -
sudo apt-get update
sudo apt install kubectl

安装完成后下载yaml配置文件到目录~/.kube,然后运行:

-> # cd ~/.kube && mv k8s-zhang0peter-kubeconfig.yaml config
-> # kubectl get nodes
NAME                  STATUS   ROLES    AGE    VERSION
pool-7wa24lnka-v3sf   Ready    <none>   11m    v1.16.2
pool-7wa24lnka-v3sq   Ready    <none>   11m    v1.16.2
pool-7wa24lnka-v3sy   Ready    <none>   8m8s   v1.16.2

可以看到集群的状态是Ready

部署前先创建命名空间,防止污染:

-> # kubectl create namespace flask-test
namespace/flask-test created
-> # kubectl get namespace
NAME              STATUS   AGE
default           Active   169m
flask             Active   30m
flask-test        Active   65s
kube-node-lease   Active   169m
kube-public       Active   169m
kube-system       Active   169m

部署单个 pod

编辑flask-pod.yaml文件如下:

apiVersion: v1
kind: Pod
metadata:name: flask-podlabels:app: flask-helloworld
spec:containers:- name:  flaskimage: registry.cn-hangzhou.aliyuncs.com/zhang0peter/flask:v0ports:- containerPort: 5000

部署应用:

-> # kubectl apply -f flask-pod.yaml -n flask-test
pod/flask-pod created
-> # kubectl get pod -n flask-test
NAME        READY   STATUS    RESTARTS   AGE
flask-pod   1/1     Running   0          12s

转发端口并访问:

-> # kubectl port-forward pods/flask-pod 5000:5000 -n flask-test
Forwarding from 127.0.0.1:5000 -> 5000
Handling connection for 5000-> %  curl http://127.0.0.1:5000
hello world!

删除 Pod:

-> # kubectl delete pod flask-pod -n flask-test
pod "flask-pod" deleted

部署 Deployment

编写flask-deployment.yaml文件

apiVersion: apps/v1
kind: Deployment
metadata:name: flask-deplabels:app: flask-helloworld
spec:replicas: 2selector:matchLabels:app: flask-helloworldtemplate:metadata:labels:app: flask-helloworldspec:containers:- name:  flaskimage: 'registry.cn-hangzhou.aliyuncs.com/zhang0peter/flask:v0'ports:- containerPort: 5000

部署 Deployment:

-> # kubectl apply -f flask-deployment.yaml -n flask-test
deployment.apps/flask-dep created
-> # kubectl get deploy -n flask-test
NAME        READY   UP-TO-DATE   AVAILABLE   AGE
flask-dep   2/2     2            2           12s
-> # kubectl get pod -n flask-test
NAME                         READY   STATUS    RESTARTS   AGE
flask-dep-56bcc4b6c5-44gkv   1/1     Running   0          25s
flask-dep-56bcc4b6c5-kkkvl   1/1     Running   0          25s

转发端口并访问:

-> # kubectl port-forward deployment/flask-dep 5000:5000 -n flask-test
Forwarding from 127.0.0.1:5000 -> 5000
Handling connection for 5000-> %  curl http://127.0.0.1:5000
hello world!

不要删除Deployment,后面还要用。

部署负载均衡应用

编写flask-service.yaml

apiVersion: v1
kind: Service
metadata:name: flask-svclabels:app: flask-helloworld
spec:type: LoadBalancerports:- port: 80targetPort: 5000protocol: TCPselector:app: flask-helloworld

部署 LoadBalancer 负载均衡:

-> # kubectl apply -f flask-service.yaml -n flask-test
service/flask-svc created
-> # kubectl get service -n flask-test
NAME        TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
flask-svc   LoadBalancer   10.245.139.6   <pending>     80:32349/TCP   9s

等待约5分钟,负载均衡实现,对外暴露端口:

-> # kubectl get service -n flask-test
NAME        TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)        AGE
flask-svc   LoadBalancer   10.245.139.6   139.59.194.75   80:32349/TCP   4m23s
-> # curl 139.59.194.75
hello world!

删除 service

-> # kubectl delete service flask-svc -n flask-test
service "flask-svc" deleted

部署结束。

参考:

  • A DigitalOcean Workshop: Get Started with Containers and Kubernetes - YouTube
  • Getting Started with Containers and Kubernetes: A DigitalOcean Workshop Kit DigitalOcean

k8s免安装-使用kubectl部署Pod, Deployment, LoadBalancer相关推荐

  1. MySQL免安装版配置部署详细教程

    MySQL免安装版配置部署详细教程 这里写目录标题 MySQL免安装版配置部署详细教程 部署MySQL免安装版(windows版) 1.windows的mysql配置文件是my.ini,将此文件放到m ...

  2. MySQL免安装版配置部署

    MySQL下载地址:http://dev.mysql.com/downloads/mysql/ 1.Windows下安装MySQL 我下的是最新版的MySQL,解压后,目录如下: 将解压目录下默认文件 ...

  3. k8s利用deployment部署pod,以及应用更新和回滚操作

    deployment部署pod,也是通过yaml文件的方式部署.deployment通过yaml文件定义需要deploy名称,需要几个pod协助运行,拉取的镜像版本等内容.一般来说一个deployme ...

  4. k8s—centos7安装部署NFS服务器和客户端及基于nfs的动态存储storageclass使用总结

    ![技术公众号:后端技术解忧铺](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX ...

  5. K8s脱坑前的挣扎——Pod资源管理及部署Harbor创建私有项目

    前言:Pod是kubernetes中最小的资源管理组件,Pod也是最小化运行容器化应用的资源对象.kubernetes中其他大多数组件都是围绕着Pod来进行支撑和扩展Pod功能的,例如,用于管理Pod ...

  6. k8s二进制安装部署(详细)

    一.生产环境部署k8s常见的几种方式 说明:文章内使用到的yaml可到博客资源内下载 k8s-yaml 1.kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubea ...

  7. DockerK8s---跟我一步步部署K8s(二进制安装部署)

    文章目录 Docker&K8s---跟我一步步部署K8s(二进制安装部署) Kubernetes(K8s)概述 Kubernetes快速入门 四组基本概念 常见的K8s安装部署方式 准备工作 ...

  8. k8s集群部署——Pod管理和资源清单

    文章目录 一.Pod管理 二.资源清单 三.Pod生命周期 四.今日报错 一.Pod管理 Pod是可以创建和管理Kubernetes计算的最小可部署单元,一个Pod代表着集群中运行的一个进程,每个po ...

  9. k8s(Kubernetes)中Pod,Deployment,ReplicaSet,Service之间关系分析

    看完k8s文档,好多概念似乎明白了,又似乎不明白,多个概念之间的关系也很混乱,不是很明白,不要紧,接下来,好好分析一下. 结论 您有可能在急着找答案搜到我这篇文章,不费话,结论就在开头,请看下图. d ...

最新文章

  1. LeetCode简单题之交替合并字符串
  2. 1、Hive原理及查询优化
  3. Java防止Xss注入json_每日一题(java篇) 如何防止xss注入
  4. 干货,记一次解决录音杂音问题
  5. hdu3526(最小费用流)
  6. 【BZOJ1826】【tyvj2644】缓存交换,贪心+堆维护
  7. HBase之KeyValueScanner
  8. 动圈耳机振膜_动圈耳机和动铁耳机区别,以及选择
  9. Azure上七层负载均衡APP Gateway
  10. 怎样解决An internal error has occurred. Index out of bounds
  11. cgi/fastcgi停止工作
  12. java开发基础(面试必备)
  13. VB操作IE浏览器完全控制
  14. python打开网页后点击网页按钮_python怎么模拟点击网页按钮
  15. mysql数据库常用名词_【千寻】MySQL数据库名词注释(持续更新)
  16. WebRTC协议学习之一(WebRTC简介)
  17. 调节笔记本外接显示器亮度
  18. java毕业设计——基于Java+Socket的视频会议系统设计与实现(毕业论文+程序源码)——视频会议系统
  19. 【软考-中级】系统集成项目管理工程师-【2信息系统集成和服务管理】
  20. 两个DIV并列排在一个大的DIV中

热门文章

  1. 深度学习系列学习博客
  2. Win10下MySQL_Workbench连接远程主机MySQL5.7
  3. 10a大电流稳压芯片_稳压二极管你见过,但是它的这些参数你知道吗
  4. cytoscape绘图互作网络图(二)
  5. 从 pheatmap 无缝迁移至 ComplexHeatmap
  6. 陈程杰、夏瑞:数据分析工具TBtools介绍和操作视频+公众号/社群
  7. NEJM | 益生菌LGG治疗肠胃炎无效,Immunity|LGG促进生骨
  8. R语言:数据筛选match
  9. 肠道微生物的研究不复杂,不信看这篇Science
  10. 微生物组:3分和30分文章差距在哪里?