前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >k8s——一个简单示例

k8s——一个简单示例

作者头像
崔哥
发布2022-05-25 20:32:58
2600
发布2022-05-25 20:32:58
举报
文章被收录于专栏:崔哥的专栏
代码语言:javascript
复制
apiVersion #API对象版本,可通过`kubectl api-versions`命令查看

kind #资源类型,区分大小写,可通过`kubectl api-resources`命令查看,这里使用Deployment对象

metadata #是该资源的元数据,name是必需的元数据项

spec# 部分是该Deployment的规格说明

    replicas#指明副本数量,默认为1

    template#定义Pod的模板,这是配置文件的重要部分

        metadata#定义Pod的元数据,至少要定义一个label。label的key和value可以任意指定

        spec # 描述Pod的规格,此部分定义Pod中每一个容器的属性,name和image是必需的

status

准备镜像

这里直接使用nginx官方镜像

创建Deployment

方式一

代码语言:javascript
复制
kubectl create deployment nginx-deployment --image=nginx --replicas=2 --port=80

方式二

kubectl apply -f nginx-deployment.yaml

代码语言:javascript
复制
# nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2 # tells deployment to run 2 pods matching the template
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:latest
          ports:
            - containerPort: 80

创建Service

方式一

代码语言:javascript
复制
kubectl expose deployment nginx-deployment --type=NodePort --port=80

方式二

kubectl create -f nginx-service.yaml

代码语言:javascript
复制
# nginx-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  labels:
    name: nginx-service
spec:
  type: NodePort
  ports:
    - port: 80
  selector:
    app: nginx # 名称与deployment中定义的app名称保持一致

测试

我们这里设置了replicas=2,会产生两个容器(名称为 k8s_nginx_nginx-deployment-开头), 分别进入两个容器,增加一个文件

echo 'aaa' >/usr/share/nginx/html/a.html

查询nodePort

kubectl get service

代码语言:javascript
复制
NAME               TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes         ClusterIP   10.96.0.1       <none>        443/TCP        157m
nginx-deployment   NodePort    10.106.195.35   <none>        80:32352/TCP   6m51s

如上nodePort为32352

测试

http://localhost:32352/a.html

清理

代码语言:javascript
复制
kubectl delete -n default deployment nginx-deployment
kubectl delete -n default service nginx-service
kubectl delete -n default ingress test-ingress

进阶 —— ingress-nginx

k8s ingress 两种部署方式nodePort和hostNetwork

API 参考

https://kubernetes.io/zh/docs/reference/

Kubernetes API 参考 v1.21

历史版本

https://v1-20.docs.kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#deployment-v1-apps

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备镜像
  • 创建Deployment
  • 创建Service
  • 测试
  • 清理
  • 进阶 —— ingress-nginx
  • API 参考
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档