【愚公系列】2022年04月 Kubernetes容器集群快速部署之kind多节点集群
【摘要】 前言集群是 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)