前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【愚公系列】2022年04月 Kubernetes容器集群快速部署之kind多节点集群

【愚公系列】2022年04月 Kubernetes容器集群快速部署之kind多节点集群

作者头像
愚公搬代码
发布2022-04-29 07:58:19
6330
发布2022-04-29 07:58:19
举报
文章被收录于专栏:历史专栏

文章目录

前言

集群是 Kubernetes 的核心优势:能够在内部或云端跨一组机器(无论是物理机还是虚拟机)调度和运行容器。Kubernetes 容器不受单个计算机的限制。相反,它们是跨整个集群进行抽象。

集群至少包含一个控制平面,以及一个或多个计算机器或节点。控制平面负责维护集群的预期状态,例如运行哪个应用以及使用哪个容器镜像。节点则负责应用和工作负载的实际运行。

单节点集群就是一个控制平面,其余节点由这个控制面负责。相当于一个领导人负责多个员工,相比于docker只要保证主节点正常还是可以实现高并发高可用的。

一、kind配置多节点集群

1.集群配置的使用

要在创建集群时指定配置文件,请使用以下标志:

代码语言:javascript
复制
kind create cluster --config kind-example-config.yaml

kind-example-config.yaml配置案例如下:

代码语言:javascript
复制
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
# 用一些额外的设置修补生成的kubeadm配置
kubeadmConfigPatches:
- |
  apiVersion: kubelet.config.k8s.io/v1beta1
  kind: KubeletConfiguration
  evictionHard:
    nodefs.available: "0%"
# 使用JSON 6902补丁对其进行进一步修补
kubeadmConfigPatchesJSON6902:
- group: kubeadm.k8s.io
  version: v1beta2
  kind: ClusterConfiguration
  patch: |
    - op: add
      path: /apiServer/certSANs/-
      value: my-hostname
# 1 控制平面节点和3个子节点
nodes:
# the control plane node config
- role: control-plane
# the three workers
- role: worker
- role: worker
- role: worker

2.单控制面集群

代码语言:javascript
复制
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
# 用一些额外的设置修补生成的kubeadm配置
name: app-1-cluster
kubeadmConfigPatches:
- |
  apiVersion: kubelet.config.k8s.io/v1beta1
  kind: KubeletConfiguration
  evictionHard:
    nodefs.available: "0%"
# 使用JSON 6902补丁对其进行进一步修补
kubeadmConfigPatchesJSON6902:
- group: kubeadm.k8s.io
  version: v1beta2
  kind: ClusterConfiguration
  patch: |
    - op: add
      path: /apiServer/certSANs/-
      value: my-hostname
# 1 控制平面节点和3个子节点
nodes:
# the control plane node config
- role: control-plane
# the three workers
- role: worker
- role: worker
- role: worker
在这里插入图片描述
在这里插入图片描述

3.单控制面特定版本集群

代码语言:javascript
复制
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
 - role: control-plane
  image: kindest/node:v1.18.15@sha256:5c1b980c4d0e0e8e7eb9f36f7df525d079a96169c8a8f20d8bd108c0d0889cc4
 - role: worker
  image: kindest/node:v1.18.15@sha256:5c1b980c4d0e0e8e7eb9f36f7df525d079a96169c8a8f20d8bd108c0d0889cc4
 - role: worker
  image: kindest/node:v1.18.15@sha256:5c1b980c4d0e0e8e7eb9f36f7df525d079a96169c8a8f20d8bd108c0d0889cc4
  • kindest/node:v1.18.15:为k8s版本号
  • sha256:加密信息

相关github网址:https://github.com/kubernetes-sigs/kind/releases

4.将端口映射到主机

可以使用以下命令将额外的端口从节点映射到主机:

代码语言:javascript
复制
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
  extraPortMappings:
  - containerPort: 80
    hostPort: 80
    listenAddress: "0.0.0.0" # Optional, defaults to "0.0.0.0"
    protocol: udp # Optional, defaults to tcp

5.创建一个包含 Ingress 的集群

5.1 配置文件

代码语言:javascript
复制
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
  image: kindest/node:v1.18.15@sha256:5c1b980c4d0e0e8e7eb9f36f7df525d079a96169c8a8f20d8bd108c0d0889cc4
  kubeadmConfigPatches:
  - |
    kind: InitConfiguration
    nodeRegistration:
      kubeletExtraArgs:
        node-labels: "ingress-ready=true"
  extraPortMappings:  
  - containerPort: 80
    hostPort: 80
    protocol: TCP
  - containerPort: 443
    hostPort: 443
    protocol: TCP
- role: worker
  image: kindest/node:v1.18.15@sha256:5c1b980c4d0e0e8e7eb9f36f7df525d079a96169c8a8f20d8bd108c0d0889cc4
- role: worker
  image: kindest/node:v1.18.15@sha256:5c1b980c4d0e0e8e7eb9f36f7df525d079a96169c8a8f20d8bd108c0d0889cc4
在这里插入图片描述
在这里插入图片描述

5.2 创建集群

代码语言:javascript
复制
kind create cluster --name kind --config  cluster.yaml

5.3 部署Ingress

代码语言:javascript
复制
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/kind/deploy.yaml

5.4 访问Ingress

代码语言:javascript
复制
curl http://127.0.0.1
curl -k https://127.0.0.1:443

6.特性门控

特性门控是描述 Kubernetes 特性的一组键值对。你可以在 Kubernetes 的各个组件中使用 --feature-gates flag 来启用或禁用这些特性。

相关网址:https://kubernetes.io/zh/docs/reference/command-line-tools-reference/feature-gates/

代码语言:javascript
复制
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
featureGates:
  FeatureGateName: true

7.运行nginx

代码语言:javascript
复制
kubectl run nginx --image=nginx:1.14-alpine
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/04/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 前言
  • 一、kind配置多节点集群
    • 1.集群配置的使用
      • 2.单控制面集群
        • 3.单控制面特定版本集群
          • 4.将端口映射到主机
            • 5.创建一个包含 Ingress 的集群
              • 5.1 配置文件
              • 5.2 创建集群
              • 5.3 部署Ingress
              • 5.4 访问Ingress
            • 6.特性门控
              • 7.运行nginx
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档