当前位置: 首页 > news >正文

马鞍山市网站建设公司商务网站规划与建设

马鞍山市网站建设公司,商务网站规划与建设,wordpress插件库,网站关键词描述字数kind 简介kind 架构安装 Kind (必备工具)docker官网kubectl官网kind官网校验安装结果 关于kind 命令 安装一个集群查看当前 Kubernetes 集群中的节点信息。查看当前命名空间下中的Pod#xff08;容器实例#xff09;的信息。使用 kind create cluster 安装#xff0c;关于安… kind 简介kind 架构安装 Kind (必备工具)docker官网kubectl官网kind官网校验安装结果 关于kind 命令 安装一个集群查看当前 Kubernetes 集群中的节点信息。查看当前命名空间下中的Pod容器实例的信息。使用 kind create cluster 安装关于安装方式查看当前集群运行组件查看一下 kind 下面是基础容器内部的 /kind 目录关于 Kubelet、kubeadm 和 kubectl关于Weave 创建集群查看当前拥有哪些集群删除某个集群 通过yaml 文件创建集群端口暴露搭建集群 带端口映射 部署nginx测试创建集群搭建 kubernetes-dashboard 控制台创建 kubernetes-dashboard .yaml配置 dashboard-config.yaml确认 kubernetes-dashboard.yaml 映射情况创建集群如果没有设置nodePort 会报错 not be used when type is ClusterIP创建Secret - service-account-secret.yaml应用权限并拿到tokenthisisunsafe java链接kind 创建的k8s关于IPv4和IPv6 k8s概念 简介 kind 是 Kubernetes in Docker 的简写是一个使用 Docker 容器作为 Nodes在本地创建和运行 Kubernetes 群集的工具。适用于在本机创建 Kubernetes 群集环境进行开发和测试。 官网https://kind.sigs.k8s.io/ kind 由以下组件构成: Go packages implementing cluster creation, image build, etc.A command line interface (kind) built on these packages.Docker image(s) written to run systemd, Kubernetes, etc.kubetest integration also built on these packages (WIP) kind 使用 kubeadm 创建和启动群集节点。 kind 架构 kind 官方架构图如下它将 docker 容器作为 kubernetes 的 “node”并在该 “node” 中安装 kubernetes 组件包括一个或者多个 Control Plane 和 一个或者多个 Work nodes。这就解决了在本机运行多个 node 的问题而不需要虚拟化 (sysin)。 安装 Kind (必备工具) docker官网 yum -y install yum-utils device-mapper-persistent-datalvm2yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum makecache fastyum install docker-ce docker-ce-cli containerd.iosystemctl start dockersystemctl enable dockerdocker run hello-worldkubectl官网 kubectl 是Kubernetes的命令行工具可以让我们通过命令访问、操作、管理Kubernetes集群。brew安装方法如下 curl -LO https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectlmv kubectl /usr/local/bin/kubectlkind官网 curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64 # 如果安装不了 用下面的 chmod x ./kind mv ./kind /usr/local/bin/kind校验安装结果 kubectl version --client kind version关于kind 命令 build 用来从 k8s source 构建一个镜像。create、delete 创建、删除集群。export 命令目前只有一个 logs 选项作用是将内部所有容器的日志拷贝到宿主机的某个目录下。get 查看当前有哪些集群哪些节点以及 kubectl 配置文件的地址load 可以从宿主机向 k8s 容器内导入镜像。 安装一个集群 kind create clusterexport KUBECONFIG$(kind get kubeconfig-path --namekind) kubectl cluster-info查看当前 Kubernetes 集群中的节点信息。 kubectl get node查看当前命名空间下中的Pod容器实例的信息。 kubectl get namespace kubectl get po -A kubectl get po -n kube-system使用 kind create cluster 安装关于安装方式 从安装打印出的输出来看分为4步 查看本地上是否存在一个基础的安装镜像默认是 kindest/node:v1.13.4这个镜像里面包含了需要安装的所有东西包括了 kubectl、kubeadm、kubelet 二进制文件以及安装对应版本 k8s 所需要的镜像准备你的 node这里就是做一些启动容器、解压镜像之类的工作生成对应的 kubeadm 的配置之后通过 kubeadm 安装安装之后还会做另外的一些操作比如像我刚才仅安装单节点的集群会帮你删掉 master 节点上的污点否则对于没有容忍的 pod 无法部署。启动完毕 查看当前集群运行组件 kubectl get po -n kube-system默认方式启动的节点类型是 control-plane 类型包含了所有的组件 两个corednsetcdapi-servercontroller-managerkube-proxysheduler网络插件方面默认使用的是 weave 查看一下 kind 下面是基础容器内部的 /kind 目录 进入容器 docker exec -it kind-control-plane /bin/bashcd /bin在 bin 目录下安装了 kubelet、kubeadm、kubectl 这些二进制文件在images 下面是镜像的 tar 包kind 在启动基础镜像后会执行一遍 docker load 操作将这些 tar 包导入在manifests 下面是 weave 的 cni 关于 Kubelet、kubeadm 和 kubectl Kubelet、kubeadm 和 kubectl 是 Kubernetes 生态系统中的三个关键组件各自具有不同的功能和职责。 Kubelet Kubelet 是运行在每个 Kubernetes 节点上的组件负责管理和控制节点上的容器。它与容器运行时如 Docker、containerd交互确保 Pod 的容器在节点上正确创建、启动、停止和删除。Kubelet 还与 Kubernetes 控制平面交互汇报节点状态和接收分配给节点的任务。Kubeadm Kubeadm 是 Kubernetes 官方提供的用于部署和管理 Kubernetes 集群的工具。它简化了 Kubernetes 集群的初始化过程帮助管理员在几个节点上快速创建一个稳定的、符合最佳实践的集群。Kubeadm 处理集群的引导、证书生成、网络配置、设置控制平面组件等任务使得集群部署变得更加容易。Kubectl kubectl 是 Kubernetes 的命令行工具用于与 Kubernetes 集群进行交互和管理。它是与 Kubernetes API 通信的主要方式允许用户执行各种操作如创建、删除和管理资源如 Pod、Service、Deployment 等、查看集群状态、进行日志和调试等。kubectl 是与 Kubernetes 交互的主要入口。 综上所述Kubelet 是在每个节点上运行的组件负责管理和控制容器kubeadm 是用于部署和初始化 Kubernetes 集群的工具kubectl 是用于与 Kubernetes 集群进行交互和管理的命令行工具。它们各自扮演着不同的角色共同构建和管理 Kubernetes 集群。 关于Weave Weave是一种 Kubernetes 网络插件它提供了一个容器网络接口Container Networking InterfaceCNI的实现。 CNI 是 Kubernetes 中用于管理容器网络的标准接口它定义了一组规范和API用于在容器运行时环境中创建、配置和连接容器网络。CNI 插件负责实现这些规范和API以便 Kubernetes 能够为容器提供网络功能。“Weave CNI” 是基于 Weave 网络的 CNI 插件。它使用 Weave 的技术和协议来创建和管理容器网络。当您在 Kubernetes 中使用 Weave CNI 时它将负责在各个节点上创建和配置网络接口使得容器能够在集群中进行通信。 Weave CNI 提供了一种简单而灵活的容器网络解决方案它能够自动创建虚拟网络并在不同节点上的容器之间建立安全的通信通道。它还支持网络策略和服务发现等功能使您能够对容器网络进行更精细的控制和管理。 总而言之通过使用 Weave CNI 插件您可以轻松地在 Kubernetes 集群中创建和管理容器网络实现容器之间的通信和连接。 创建集群 从上诉下载的文档来看默认安装的集群只带上了一个控制节点 默认的群集名称为kind使用参数–name指定创建的群集的名称可以创建多个群集 在 node 中可以配置的不是很多除了 role 另外的可以更改 node 使用的镜像不过我还是使用默认的镜像创建集群 # default kind create cluster --image kindest/node:latest # 1.20.0 kind create cluster --image kindest/node:v1.20.0 因为前面已经创建了kind 所以命令如下 使用默认景象创建为kind-test2 集群 kind create cluster --name kind-2查看当前拥有哪些集群 通过 kind get clusters 可以看到当前有两个集群 既然有两个集群可以通过集群切换到指定对应集群处理。kind-集群 # 切换到群集kind kubectl cluster-info --context kind-kind# 切换到群集kind-2 kubectl cluster-info --context kind-kind-2删除某个集群 kind get clusters # 指定删除某个kind delete cluster --name kind# 删除全部kind delete cluster --all通过yaml 文件创建集群 首先删除所有集群 kind delete cluster --all创建配置文件 kind-config.yaml vim kind-config.yaml 创建集群 两个节点 一个平面 apiVersion: kind.sigs.k8s.io/v1alpha3 kind: Cluster nodes:- role: control-plane- role: worker- role: worker kind create cluster --name multi-node --configkind-config.yaml端口暴露 docker ps在这里我被坑了好久127.0.0.1:38884 映射容器里里面的k8s 6443 导致后无法访问serviceApi 6443端口因为他要本地的12.0.0.1的ip4网段,这个后面会说 127.0.0.1:38884-6443/tcp 目前可以看到只有33884这个端口可以从外部访问,用kind创建K8s时相当在本地运行了一个容器而K8s Cluster就运行在这个容器中。 所以如果我想从外部访问kind K8s的话就需要把这个容器的端口(K8s的端口)暴露出来。首先删除所有 k8s cluster kind delete cluster --all搭建集群 带端口映射 vim kind-single #创建一个测试单节点集群kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes:- role: control-planekubeadmConfigPatches:- |kind: InitConfigurationnodeRegistration:kubeletExtraArgs:node-labels: ingress-readytrueextraPortMappings:- containerPort: 80hostPort: 8001protocol: TCP 创建单节点集群脚本 主机端口 8001 映射到内部容器 80 关于于 ingress-readytrue 需要解释一下 role: control-plane 表示该节点将作为控制平面节点运行。kubeadmConfigPatches 是一个配置补丁列表用于向节点的 kubeadm 配置添加额外的配置项。kind: InitConfiguration 表示正在修改节点的初始化配置。nodeRegistration 部分用于修改节点注册的相关配置。kubeletExtraArgs 是一个用于在节点的 kubelet 配置中添加额外参数的字段。在这个例子中我们添加了一个 node-labels 参数并将它设置为 “ingress-readytrue”。 “ingress-readytrue” 下面扩展端口映射确保只将流量发送到已准备好的节点上 kind create cluster --name tsk8s --config /usr/local/kind-config/kind-single部署nginx测试 切换到当前 kind kubectl cluster-info --context kind-kind docker ps创建一个需要部署的应用 nginx.yaml apiVersion: apps/v1 kind: Deployment metadata:labels:app: web-nginxname: web-nginx-Deployment spec:replicas: 3selector:matchLabels:app: web-nginxtemplate:metadata:labels:app: web-nginxspec:containers:- image: nginxname: nginxports:- containerPort: 80 --- apiVersion: v1 kind: Service metadata:name: web-nginx spec:selector:app: web-nginxtype: NodePortports:- port: 80nodePort: 30080这是一个 Kubernetes 的 YAML 配置文件示例描述了一个 Deployment 和一个 Service 的定义。 apiVersion: apps/v1 和 apiVersion: v1 分别指定了所使用的 Kubernetes API 的版本。apps/v1 表示使用的是 Apps API 的 v1 版本而 v1 表示使用的是核心 API 的 v1 版本。kind: Deployment 和 kind: Service 定义了资源的类型。Deployment 表示定义一个 Deployment 资源用于管理应用程序的副本。Service 表示定义一个 Service 资源用于暴露应用程序的网络服务。metadata 区域包含元数据信息如资源的标签和名称。spec 区域定义了资源的规范或配置。 对于 Deployment 部分 replicas: 3 指定了要创建的副本数量为 3。selector 指定了用于选择要进行部署的 Pod 的标签。template 定义了要创建的 Pod 的模板其中包含了 Pod 的标签、容器以及相关的配置信息。 在 containers 下的 image: nginx 指定了要使用的容器镜像name: nginx 为容器命名ports 下的 - containerPort: 80 指定了容器监听的端口号为 80。 对于 Service 部分selector 指定了要将该 Service 与哪些 Pod 进行关联通过匹配标签 app: web-nginx。type: NodePort 表示 Service 类型为 NodePort可以通过任意节点的 IP 和指定的 NodePort 来访问该 Service。ports 下的 - port: 80 指定了 Service 其他 Pod 可以通过的端口号为 80nodePort: 30080 指定了节点上的端口号为 30080用于外部访问 Service。 这个配置文件描述了一个使用 Nginx 镜像构建的 Deployment 和一个相关的 Service用于管理和暴露一个名为 web-nginx 的应用程序。 执行以下命令启动应用部署3个pod单位的nginx 本次发布部署为 web-nginx-Deployment kubectl create -f nginx.yamlhttp://你的主机:30070/ . 可以看到 创建集群搭建 kubernetes-dashboard 控制台 可能你会需要kubernetes的控制台 创建 kubernetes-dashboard .yaml # Copyright 2017 The Kubernetes Authors. # # Licensed under the Apache License, Version 2.0 (the License); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an AS IS BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License.apiVersion: v1 kind: Namespace metadata:name: kubernetes-dashboard---apiVersion: v1 kind: ServiceAccount metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard---kind: Service apiVersion: v1 metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard spec:ports:- port: 443targetPort: 8443selector:k8s-app: kubernetes-dashboard---apiVersion: v1 kind: Secret metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboard-certsnamespace: kubernetes-dashboard type: Opaque---apiVersion: v1 kind: Secret metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboard-csrfnamespace: kubernetes-dashboard type: Opaque data:csrf: ---apiVersion: v1 kind: Secret metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboard-key-holdernamespace: kubernetes-dashboard type: Opaque---kind: ConfigMap apiVersion: v1 metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboard-settingsnamespace: kubernetes-dashboard---kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard rules:# Allow Dashboard to get, update and delete Dashboard exclusive secrets.- apiGroups: []resources: [secrets]resourceNames: [kubernetes-dashboard-key-holder, kubernetes-dashboard-certs, kubernetes-dashboard-csrf]verbs: [get, update, delete]# Allow Dashboard to get and update kubernetes-dashboard-settings config map.- apiGroups: []resources: [configmaps]resourceNames: [kubernetes-dashboard-settings]verbs: [get, update]# Allow Dashboard to get metrics.- apiGroups: []resources: [services]resourceNames: [heapster, dashboard-metrics-scraper]verbs: [proxy]- apiGroups: []resources: [services/proxy]resourceNames: [heapster, http:heapster:, https:heapster:, dashboard-metrics-scraper, http:dashboard-metrics-scraper]verbs: [get]---kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboard rules:# Allow Metrics Scraper to get metrics from the Metrics server- apiGroups: [metrics.k8s.io]resources: [pods, nodes]verbs: [get, list, watch]---apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard roleRef:apiGroup: rbac.authorization.k8s.iokind: Rolename: kubernetes-dashboard subjects:- kind: ServiceAccountname: kubernetes-dashboardnamespace: kubernetes-dashboard---apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata:name: kubernetes-dashboard roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: kubernetes-dashboard subjects:- kind: ServiceAccountname: kubernetes-dashboardnamespace: kubernetes-dashboard---kind: Deployment apiVersion: apps/v1 metadata:labels:k8s-app: kubernetes-dashboardname: kubernetes-dashboardnamespace: kubernetes-dashboard spec:replicas: 1revisionHistoryLimit: 10selector:matchLabels:k8s-app: kubernetes-dashboardtemplate:metadata:labels:k8s-app: kubernetes-dashboardspec:securityContext:seccompProfile:type: RuntimeDefaultcontainers:- name: kubernetes-dashboardimage: kubernetesui/dashboard:v2.5.0imagePullPolicy: Alwaysports:- containerPort: 8443protocol: TCPargs:- --auto-generate-certificates- --namespacekubernetes-dashboard# Uncomment the following line to manually specify Kubernetes API server Host# If not specified, Dashboard will attempt to auto discover the API server and connect# to it. Uncomment only if the default does not work.# - --apiserver-hosthttp://my-address:portvolumeMounts:- name: kubernetes-dashboard-certsmountPath: /certs# Create on-disk volume to store exec logs- mountPath: /tmpname: tmp-volumelivenessProbe:httpGet:scheme: HTTPSpath: /port: 8443initialDelaySeconds: 30timeoutSeconds: 30securityContext:allowPrivilegeEscalation: falsereadOnlyRootFilesystem: truerunAsUser: 1001runAsGroup: 2001volumes:- name: kubernetes-dashboard-certssecret:secretName: kubernetes-dashboard-certs- name: tmp-volumeemptyDir: {}serviceAccountName: kubernetes-dashboardnodeSelector:kubernetes.io/os: linux# Comment the following tolerations if Dashboard must not be deployed on mastertolerations:- key: node-role.kubernetes.io/mastereffect: NoSchedule---kind: Service apiVersion: v1 metadata:labels:k8s-app: dashboard-metrics-scrapername: dashboard-metrics-scrapernamespace: kubernetes-dashboard spec:ports:- port: 8000targetPort: 8000selector:k8s-app: dashboard-metrics-scraper---kind: Deployment apiVersion: apps/v1 metadata:labels:k8s-app: dashboard-metrics-scrapername: dashboard-metrics-scrapernamespace: kubernetes-dashboard spec:replicas: 1revisionHistoryLimit: 10selector:matchLabels:k8s-app: dashboard-metrics-scrapertemplate:metadata:labels:k8s-app: dashboard-metrics-scraperspec:securityContext:seccompProfile:type: RuntimeDefaultcontainers:- name: dashboard-metrics-scraperimage: kubernetesui/metrics-scraper:v1.0.7ports:- containerPort: 8000protocol: TCPlivenessProbe:httpGet:scheme: HTTPpath: /port: 8000initialDelaySeconds: 30timeoutSeconds: 30volumeMounts:- mountPath: /tmpname: tmp-volumesecurityContext:allowPrivilegeEscalation: falsereadOnlyRootFilesystem: truerunAsUser: 1001runAsGroup: 2001serviceAccountName: kubernetes-dashboardnodeSelector:kubernetes.io/os: linux# Comment the following tolerations if Dashboard must not be deployed on mastertolerations:- key: node-role.kubernetes.io/mastereffect: NoSchedulevolumes:- name: tmp-volumeemptyDir: {}配置 dashboard-config.yaml kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 nodes:- role: control-planekubeadmConfigPatches:- |kind: InitConfigurationnodeRegistration:kubeletExtraArgs:node-labels: ingress-readytrueextraPortMappings:- containerPort: 31000hostPort: 31000protocol: TCP 查看端口映射情况 docker ps0.0.0.0:31000-31000/tcp, 127.0.0.1:35017-6443/tcp 确认 kubernetes-dashboard.yaml 映射情况 节点映射 31000. 设置类型为nodePort 供外部访问 spec:type: NodePortselector:app: kubernetes-dashboardports:- port: 443targetPort: 8443nodePort:31000protocol: TCP创建集群 kind create cluster --name kind-dashboard --config/usr/local/kind-config/cluster/dashboard-cluster-config.yaml切换到当前容器 kubectl cluster-info --context kind-kind-dashboard应用 Dashboard kubectl apply -f /usr/local/kind-config/kubernetes-dashboard.yaml如果没有设置nodePort 会报错 not be used when type is ‘ClusterIP’ The Service kubernetes-dashboard is invalid: spec.ports[0].nodePort: Forbidden: may not be used when type is ClusterIP表明在 Service 对象的定义中当 type 字段设置为 ClusterIP 时不允许使用 nodePort 字段。nodePort 字段是用于 NodePort 类型的 Service而不是 ClusterIP 类型的 Service。 为了解决这个问题您可以考虑以下两种方法之一 修改 Service 对象的 type 字段为 NodePort如果您只需要 ClusterIP 类型的 Service请删除 nodePort 字段 因为是修改dashboard.yaml service 端口映射如果没有类型默认是 类型 所以要修改一下 创建Secret - service-account-secret.yaml # 在kubernetes-dashboard命名空间下创建名为 admin-user 的服务账户 apiVersion: v1 kind: ServiceAccount metadata:name: admin-usernamespace: kubernetes-dashboard---# 将服务账户admin-user绑定到内置的ClusterRole集群角色cluster-admin上, 实现授权 apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata:name: admin-user roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: cluster-admin subjects: - kind: ServiceAccountname: admin-usernamespace: kubernetes-dashboard---# 对名为admin-user的服务账户手动创建Secret apiVersion: v1 kind: Secret metadata:name: admin-user-secretnamespace: kubernetes-dashboardannotations:kubernetes.io/service-account.name: admin-user type: kubernetes.io/service-account-token也可以不创建但是需要创建 ClusterRoleBinding 获得群集 admin 访问权限都是一样的这个后面说 应用权限并拿到token kubectl apply -f /usr/local/kind-config/service-account-secret.yaml通过service-account-secret.yaml配置文件给kubernetes-dashboard命名空间下名为admin-user的服务账户手动创建了一个名为admin-user-secret的Secret。现在可以通过该Secret获取相应的Token。通过kubectl describe、kubectl get两种方式获取。 kubectl describe secret admin-user-secret -n kubernetes-dashboard查看是否ok kubectl get po,svc -n kubernetes-dashboardservice 上面有对应的端口映射我们前文已经暴露了所以31000应该打service的31000 如果不想像上面一样拿token获取还有一种不过前期学习不建议操作如下 创建 ClusterRoleBinding 获得群集 admin 访问权限 kubectl create clusterrolebinding default-admin --clusterrole cluster-admin --serviceaccountdefault:default #提示 clusterrolebinding.rbac.authorization.k8s.io/default-admin created创建登录 Dashboard 的 token token$(kubectl get secrets -o jsonpath{.items[?(.metadata.annotations[kubernetes\.io/service-account\.name]default)].data.token}|base64 --decode)拿到token echo $token最后访问https://你的主机ip:31000/。拿到对应的token去访问如果访问为不安全的的可能是证书问题如何解决 thisisunsafe 如果不处理证书似乎没有什么终极解决办法 两种方案 一点击“高级”再点击“继续浏览……”下一次再打开该网页时谷歌浏览器就不会提示不是私密连接了。 二、看到“你的连接不是私密连接”画面时直接在键盘上敲击“thisisunsafe”12个字母谷歌浏览器会自动刷新显示网页。 java链接kind 创建的k8s 上面的案例如果看完了基本我的坑就走完了你已经大致明白了如何通过kind去如何创建一个k8s了我也是摸了好多坑肝出来了但是在机器上面操作并不满足我们的日常需求太麻烦了所以能不能像k8s一样去链接service端进行操作。首先说结论是可行的。连接方式跟我们连接k8s是一样的你完全可以按我的demo进行操作不过我也刚打通里面的还不是很清楚 整体demo依赖可以建一个空项目 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdk8sDemo/artifactIdversion1.0.0-SNAPSHOT/versionnamespringboot-k8s/namedescriptionk8s 介入/descriptionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.0.4.RELEASE/version/parentdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdcom.google.api-client/groupIdartifactIdgoogle-api-client/artifactIdversion1.32.1/versionexclusionsexclusionartifactIdguava/artifactIdgroupIdcom.google.guava/groupId/exclusion/exclusions/dependencydependencygroupIdorg.quartz-scheduler/groupIdartifactIdquartz/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-configuration-processor/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.20/version/dependencydependencygroupIdorg.apache.commons/groupIdartifactIdcommons-lang3/artifactIdversion3.7/version/dependencydependencygroupIdio.kubernetes/groupIdartifactIdclient-java/artifactIdversion12.0.1/version/dependencydependencygroupIdio.fabric8/groupIdartifactIdkubernetes-client/artifactIdversion5.10.0/version/dependencydependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.78/version/dependency/dependencies/projectpackage com.k8s.demo;import io.kubernetes.client.openapi.ApiClient; import io.kubernetes.client.openapi.Configuration; import io.kubernetes.client.openapi.apis.CoreV1Api; import io.kubernetes.client.openapi.models.V1Pod; import io.kubernetes.client.openapi.models.V1PodList; import io.kubernetes.client.util.ClientBuilder; import io.kubernetes.client.util.KubeConfig; import lombok.extern.slf4j.Slf4j; import okhttp3.OkHttpClient; import org.springframework.util.ResourceUtils;import java.io.FileReader; import java.io.IOException;Slf4j public class KubernetesExample {public static void main(String[] args) {try {// 创建ApiClientString kubeConfigPath ResourceUtils.getURL(classpath:config).getPath();ApiClient client ClientBuilder.kubeconfig(KubeConfig.loadKubeConfig(new FileReader(kubeConfigPath))).build();OkHttpClient httpClient client.getHttpClient().newBuilder().hostnameVerifier((hostname, session) - true) // 允许任何主机名.build();client.setHttpClient(httpClient);Configuration.setDefaultApiClient(client);CoreV1Api api new CoreV1Api();// invokes the CoreV1Api clientV1PodList list api.listPodForAllNamespaces(null, null, null, null, null, null, null, null, null, null);System.out.println(Listing all pods: );for (V1Pod item : list.getItems()) {System.out.println(item.getMetadata().getName());}} catch (IOException e) {log.error(读取kubeConfigPath异常, e);} catch (Exception e) {log.error(构建K8s-Client异常, e);}} }关于这个classpath:config在你主机上输入 vim ~/.kube/config把这个配置文件拿下来里面有你这个主机所有集群的配置你也可以作为参数传入进去这个就看你自己 如果你看到这个样子已经通了。但是这个连接没有证书后面可能需要处理一下既然已经到这里了其实还是要聊一下k8s 可能你在连接的时候会出现以下错误 当你连接到 Kubernetes 集群时可能会遇到 javax.net.ssl.SSLPeerUnverifiedException 异常而异常消息是 Hostname not verified 或者类似的错误信息。 这个错误通常是由于连接的主机名与证书中的主机名不匹配引起的。为了确保安全SSL/TLS 连接需要验证证书中的主机名与实际连接的主机名是否匹配。上文我已经忽略了 还有可能出现Kubernetes control plane is running at https://[::1]:对应端口 这是你用了ipv6 但是又没有指定以为他是支持ipv4 和 ipv6的 你如果对于ipv4和ipv6不了解没关系下面我会说一下 你还可能会出现 你的主机不是 127.0.0.1而你无法通过 kubectl 访问 kind 创建的本地 Kubernetes 集群这时候你需要指定在创建集群的时候来源为kind 的配置文件 kind配置文件网址 对应配置 以下为我摘要的 您可以在 iptables 和 ipvs 之间配置将使用的 kube-proxy 模式。默认情况下使用 iptables kind: Cluster apiVersion: kind.x-k8s.io/v1alpha4 networking:kubeProxyMode: ipvs所以你可能需要配置一下地址为0.0.0.0 这样所有ipv4的都可以访问 关于IPv4和IPv6 IPv4和IPv6是互联网协议的两个版本它们之间的主要区别在于地址的格式和长度。 IPv4使用32位地址表示为4个十进制数每个数的取值范围为0-255例如192.168.0.100。IPv4地址空间有限随着互联网的快速发展IPv4地址已经趋于枯竭。 IPv6使用128位地址表示为8组16进制数每组之间用冒号分隔例如2001:0db8:85a3:0000:0000:8a2e:0370:7334。IPv6拥有更大的地址空间可以容纳更多的设备和连接。 在容器服务中使用IPv4或IPv6来访问容器的服务有以下区别 IP地址格式IPv4使用点分十进制表示法IPv6使用冒号分隔的16进制表示法。 地址空间IPv4地址空间有限而IPv6地址空间更加广阔。 支持设备数量IPv6能够支持更多的设备和连接可以满足互联网发展的需求。 兼容性由于IPv4和IPv6是不同的地址格式不同的网络设备和应用程序可能对IPv6支持程度不同。一些旧的设备和应用程序可能仅支持IPv4。 在选择使用IPv4还是IPv6来访问容器服务时需要考虑网络环境、设备支持和应用程序需求等因素。同时还需要确保网络配置正确并与容器服务的网络配置相匹配以确保能够成功访问容器的服务。 k8s概念
http://www.pierceye.com/news/884498/

相关文章:

  • 怎么看出网站是dede做的网页的响应式布局
  • 中国农村建设网站静安广州网站建设
  • 全国 做网站的企业wordpress+编辑模板
  • 网站开发需要的编程软件有哪些海门住房和城乡建设局网站
  • 南宁上林网站建设交换链接是什么
  • 什么网站做简历好api模式网站开发
  • 网站建设与管理专业好吗网络推广seo培训班
  • 常用网站架构辽宁建设工程信息网审计报告
  • 绿色大气网站模板坪山网站建设公司
  • 网站建设动态wordpress禁止自动升级
  • 网站建设网站建设平台网站建设费计入什么科目比较好
  • 豪圣建设项目管理网站公司网站设计与管理
  • 网站开发很难么交互网站图
  • 做网站用什么语音网站开发绪论
  • 中国建设银行徐州分行网站网站如何做视频教程
  • 烟台建站服务荥阳市建设局 网站
  • 网站备案登记推广网站案例
  • 企业网站设计论文摘要怎么写网络广告是什么意思
  • 自建站服务快应用 小程序
  • 上海网站建设过程邯郸网站建设推荐咨询
  • 公司有网站域名 如何做网站wordpress 字段
  • 做网站的类型东莞网页设计制作公司
  • 有品质的网站推广公司网站建设彩铃语
  • wordpress提示更新网站页面seo
  • 建设全国科技中心网站郑州百姓网官网
  • 漂亮网站wordpress 文章统计
  • 广西建设厅培训中心兰州seo网站排名
  • 布吉医院网站建设鞍山市网络销售平台
  • 开发一个网站系统报价wordpress文章摘要
  • 做脚本从网站引流外贸网站建设不可缺少的灵活性