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

举报
愚公搬代码 发表于 2022/04/29 00:07:44 2022/04/29
【摘要】 前言集群是 Kubernetes 的核心优势:能够在内部或云端跨一组机器(无论是物理机还是虚拟机)调度和运行容器。Kubernetes 容器不受单个计算机的限制。相反,它们是跨整个集群进行抽象。集群至少包含一个控制平面,以及一个或多个计算机器或节点。控制平面负责维护集群的预期状态,例如运行哪个应用以及使用哪个容器镜像。节点则负责应用和工作负载的实际运行。多节点集群就是一个控制平面,其余节点...

前言

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

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

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

一、kind配置多节点集群

1.集群配置的使用

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

kind create cluster --config kind-example-config.yaml

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

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.单控制面集群

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.单控制面特定版本集群

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.将端口映射到主机

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

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 配置文件

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 创建集群

kind create cluster --name kind --config  cluster.yaml

5.3 部署Ingress

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/kind/deploy.yaml

5.4 访问Ingress

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/

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
featureGates:
  FeatureGateName: true

7.运行nginx

kubectl run nginx --image=nginx:1.14-alpine

在这里插入图片描述

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。