kubectl的安装以及用Kind配置本地集群

本文档介绍了如何使用curl在Linux上安装kubectl,包括安装最新版和指定版本,并验证二进制文件的完整性。接着,通过kind创建和管理本地Kubernetes集群,并学习如何连接和配置腾讯云的Kubernetes集群。最后,提到了设置和清理kubeconfig文件的方法。

1、Install kubectl binary with curl on Linux

(1)安装最新版本:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

安装指定版本:

curl -LO https://dl.k8s.io/release/v1.21.0/bin/linux/amd64/kubectl

(2)验证二进制文件(可选)

下载kubectl checksum file文件:

curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"

根据 checksum file文件验证kubectl 二进制文件:

echo "$(<kubectl.sha256) kubectl" | sha256sum --check

如果有效,则输出为:

kubectl: OK

如果检查失败,sha256以非零状态退出,并打印类似如下的输出:

kubectl: FAILED
sha256sum: WARNING: 1 computed checksum did NOT match

注意:要下载相同版本的二进制文件和checksum文件。

(3)安装 kubectl文件

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

注意:如果您在目标系统上没有root权限,您仍然可以安装kubectl到~/.local/bin目录。

mkdir -p ~/.local/bin/kubectl
mv ./kubectl ~/.local/bin/kubectl
# and then add ~/.local/bin/kubectl to $PATH

(4)测试以确保安装的版本是最新的:

kubectl version --client

2、用kind来配置本地集群

网址:https://kind.sigs.k8s.io/docs/user/quick-start/#installation

(1)安装与kubectl相对应的指定的版本:

go get sigs.k8s.io/kind@v0.8.0

(2)创建集群

kind create cluster # Default cluster context name is `kind`.
...
kind create cluster --name kind-2

列出集群:

kind get clusters

为了与特定的集群交互,你只需要在kubectl中指定集群名作为上下文:

kubectl cluster-info --context kind-kind
kubectl cluster-info --context kind-kind-2

删除集群

kind delete cluster

3、腾讯云等下载kubeconfig文件并通过Kubectl连接Kubenetes信息

export KUBECONFIG=xxxx-config文件 kubectl cluster-info

查看本地的kind的 kubeconfig配置并输出到指定的文件 查看:

kind get kubeconfig 输出到指定的文件: kind get kubeconfig > /usr/local/k8s/kind-config

清理KUBECONFIG文件

unset cluster-info

 

<think>我们正在配置Flink集群的高可用性(HA)并使用本地持久卷(PV)。Flink的HA通常需要配置ZooKeeper和持久化存储来保存JobManager的元数据,以便在故障时恢复。本地PV意味着我们将使用Kubernetes节点上的本地存储,而不是网络存储(如NFS)。根据引用[4],我们注意到一个Flink-Session-HA的部署示例,其中提到了通过持久化recovery和checkpoints实现故障恢复。我们将参考这个结构,但使用本地PV。步骤概述:1.准备本地存储:在每个将运行JobManager的节点上创建目录,并确保有适当的权限。2.创建PersistentVolume(PV)和PersistentVolumeClaim(PVC)以供Flink使用。3.配置Flink的HA设置,包括ZooKeeper和状态后端。4.部署Flink集群(包括JobManager和TaskManager),并将PVC挂载到JobManager的Pod中。详细步骤:步骤1:准备本地存储假设我们有两个节点(node1和node2)将运行JobManager(通常HA需要至少两个JobManager)。在每个节点上创建目录,例如:node1:/mnt/flink/hanode2:/mnt/flink/ha步骤2:创建PV和PVC我们需要为每个节点创建一个PV,并创建对应的PVC。注意,因为本地PV是节点绑定的,所以我们需要为每个节点创建单独的PV。示例PV定义(jobmanager-pv-node1.yaml):```yamlapiVersion:v1kind:PersistentVolumemetadata:name:flink-jobmanager-pv-node1namespace:flink-sessionspec:capacity:storage:10GivolumeMode:FilesystemaccessModes:-ReadWriteOncepersistentVolumeReclaimPolicy:RetainstorageClassName:local-storagelocal:path:/mnt/flink/hanodeAffinity:required:nodeSelectorTerms:-matchExpressions:-key:kubernetes.io/hostnameoperator:Invalues:-node1#替换为实际节点名称```同样创建另一个PV(flink-jobmanager-pv-node2.yaml)指向node2。然后创建PVC。由于HA需要两个JobManager,我们将创建两个PVC,分别绑定到两个PV。示例PVC定义(jobmanager-pvc-node1.yaml):```yamlapiVersion:v1kind:PersistentVolumeClaimmetadata:name:flink-jobmanager-pvc-node1namespace:flink-sessionspec:storageClassName:local-storageaccessModes:-ReadWriteOnceresources:requests:storage:10GivolumeName:flink-jobmanager-pv-node1```同样创建另一个PVC(flink-jobmanager-pvc-node2.yaml)绑定到node2的PV。步骤3:配置Flink的HA我们需要在Flink的配置文件中设置HA相关参数。主要配置包括:-high-availability:zookeeper-high-availability.zookeeper.quorum:[ZooKeeper服务地址]-high-availability.storageDir:[持久化存储路径,即PV挂载的路径]此外,我们还需要配置ZooKeeper服务。可以单独部署ZooKeeper集群,也可以使用已有的。步骤4:部署Flink集群我们将部署两个JobManager(以实现HA)和多个TaskManager。创建JobManager的StatefulSet(因为每个JobManager需要绑定特定的PVC):注意:由于每个JobManager需要不同的配置(比如不同的HAID),我们可能需要分别创建两个Deployment,或者使用StatefulSet并利用不同的环境变量。示例JobManagerDeployment(node1):```yamlapiVersion:apps/v1kind:Deploymentmetadata:name:flink-jobmanager-node1namespace:flink-sessionspec:replicas:1selector:matchLabels:app:flinkcomponent:jobmanagerha-node:node1template:metadata:labels:app:flinkcomponent:jobmanagerha-node:node1spec:serviceAccountName:flink-service-accountcontainers:-name:jobmanagerimage:apache/flink:1.14.2-scala_2.11args:["jobmanager"]env:-name:HA_IDvalue:"1"-name:POD_IPvalueFrom:fieldRef:fieldPath:status.podIPports:-containerPort:6123name:rpc-containerPort:6124name:blob-containerPort:6125name:query-containerPort:8081name:uilivenessProbe:tcpSocket:port:6123initialDelaySeconds:30periodSeconds:60volumeMounts:-name:flink-ha-volumemountPath:/opt/flink/haresources:requests:cpu:200mmemory:512Mivolumes:-name:flink-ha-volumepersistentVolumeClaim:claimName:flink-jobmanager-pvc-node1affinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:-matchExpressions:-key:kubernetes.io/hostnameoperator:Invalues:-node1```同样,创建另一个JobManagerDeployment(node2),修改HA_ID为2,PVC为node2的PVC,并绑定到node2。然后,创建TaskManagerDeployment(无状态,可以多个副本):```yamlapiVersion:apps/v1kind:Deploymentmetadata:name:flink-taskmanagernamespace:flink-sessionspec:replicas:2selector:matchLabels:app:flinkcomponent:taskmanagertemplate:metadata:labels:app:flinkcomponent:taskmanagerspec:serviceAccountName:flink-service-accountcontainers:-name:taskmanagerimage:apache/flink:1.14.2-scala_2.11args:["taskmanager"]env:-name:JOB_MANAGER_RPC_ADDRESSvalue:flink-jobmanager#使用Service名称ports:-containerPort:6121name:data-containerPort:6122name:rpc-containerPort:6125name:querylivenessProbe:tcpSocket:port:6121initialDelaySeconds:30periodSeconds:60resources:requests:cpu:200mmemory:1024Mi```注意:我们需要一个Service来暴露JobManager。由于有两个JobManager,我们可以创建一个Service指向两个JobManager,但Flink的HA要求客户端连接其中一个JobManager,而内部通过ZooKeeper协调。因此,我们可以创建一个HeadlessService,让每个JobManager有独立的DNS记录,然后配置ZooKeeper集群地址。创建Service:```yamlapiVersion:v1kind:Servicemetadata:name:flink-jobmanagernamespace:flink-sessionspec:clusterIP:None#HeadlessServiceselector:app:flinkcomponent:jobmanagerports:-name:rpcport:6123-name:blobport:6124-name:queryport:6125-name:uiport:8081```这样,每个JobManager的Pod都会有独立的DNS:flink-jobmanager-node1.flink-session.svc.cluster.local等。在Flink配置中,我们需要设置:high-availability.zookeeper.quorum:[zookeeper-service]:2181high-availability.storageDir:file:///opt/flink/ha我们可以通过ConfigMap来管理Flink的配置文件(flink-conf.yaml)。创建ConfigMap示例:```yamlapiVersion:v1kind:ConfigMapmetadata:name:flink-confignamespace:flink-sessiondata:flink-conf.yaml:|jobmanager.rpc.address:flink-jobmanagerjobmanager.rpc.port:6123blob.server.port:6124query.server.port:6125taskmanager.numberOfTaskSlots:2parallelism.default:2high-availability:zookeeperhigh-availability.storageDir:file:///opt/flink/hahigh-availability.zookeeper.quorum:zookeeper:2181#假设ZooKeeper服务名为zookeeper,在同一个namespacehigh-availability.zookeeper.path.root:/flinkhigh-availability.cluster-id:/flink-session-clusterstate.savepoints.dir:file:///opt/flink/savepointsstate.checkpoints.dir:file:///opt/flink/checkpointslog4j-console.properties:|#日志配置略```然后在JobManager和TaskManager的Pod中挂载这个ConfigMap。注意:由于我们使用了本地PV,当Pod被调度到其他节点时,将无法访问该节点的PV。因此,我们通过affinity确保JobManager始终调度到具有对应PV的节点。另外,ZooKeeper集群的部署可以参考其他文档,这里假设已经部署好。最后,初始化集群kubectlapply-f[上述所有yaml文件]这样,我们就配置了一个使用本地PV的FlinkHA集群。注意事项:-本地PV是节点绑定的,所以JobManager只能运行在指定的节点上。如果节点故障,需要手动干预。-建议使用更可靠的存储(如分布式文件系统)来存储HA元数据,但本地PV可以提供更好的性能。相关问题:1.如何验证Flink集群的高可用性?2.除了本地PV,还有哪些存储选项可用于FlinkHA?3.如何配置Flink的检查点(checkpoint)和保存点(savepoint)存储?4.在K
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DreamCatcher

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值