3

为了远程访问 Kubernetes 仪表板,我尝试将这里这里推荐的ClusterIP替换为。但是,编辑总是失败并出现以下错误:nodePort

Invalid value: "The edited file failed validation": ValidationError(Service.spec): unknown field "nodePort" in io.k8s.api.core.v1.ServiceSpec

上面参考推荐的命令是:

kubectl edit svc/kubernetes-dashboard --namespace=kube-system

这是yaml我在更改后尝试的内容:

apiVersion: v1
kind: Service
metadata
  creationTimestamp: "2019-07-24T13:03:48Z"
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
  resourceVersion: "2238"
  selfLink: /api/v1/namespaces/kube-system/services/kubernetes-dashboard
  uid: 79c37d2b-ae13-11e9-b2a1-0026b95c3009
spec:
  NodePort: 10.110.154.246
  ports:
    - port: 80
    protocol: TCP
    targetPort: 9090
 selector:
    k8s-app: kubernetes-dashboard
 sessionAffinity: None
 type: ClusterIP
status:
  loadBalancer: {}

客户端和服务器版本的输出如下:

   $kubectl version
   Client Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.2", GitCommit:"cff46ab41ff0bb44d8584413b598ad8360ec1def", GitTreeState:"clean", BuildDate:"2019-01-10T23:35:51Z", GoVersion:"go1.11.4", Compiler:"gc", Platform:"linux/amd64"}
   Server Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.8", GitCommit:"0c6d31a99f81476dfc9871ba3cf3f597bec29b58", GitTreeState:"clean", BuildDate:"2019-07-08T08:38:54Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}
4

2 回答 2

2

您使用了错误的配置。specKubernetes Service中没有名为NodePort. 您共享的文档告诉您将字段的值spec.type从更改ClusterIPNodePort。另一方面,您正在添加一个spec.NodePort完全无效的新字段。见,https://kubernetes.io/docs/concepts/services-networking/service/#nodeport

尝试这样,同时做kubectl edit

apiVersion: v1
kind: Service
metadata
  ...
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
  ...
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 9090
 ...
 type: NodePort
...

或者只是运行这个:

kubectl get svc -n kube-system kubernetes-dashboard -o yaml | sed 's/type: ClusterIP/type: NodePort/' | kubectl replace -f - 
于 2019-07-24T14:22:37.633 回答
0

我终于重新安装了,这里是按照这里Kuberbetes Dashboard给出的指南工作的文件的最终版本。

apiVersion: v1
kind: Service
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
    {"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"k8s- 
  app":"kubernetes-dashboard"},"name":"kubernetes-dashboard","namespace":"kube- 
  system"},"spec":{"ports":[{"port":443,"targetPort":8443}],"selector":{"k8s- 
  app":"kubernetes-dashboard"}}}
creationTimestamp: "2019-07-24T15:20:27Z"
labels:
   k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kube-system
resourceVersion: "13109"
selfLink: /api/v1/namespaces/kube-system/services/kubernetes-dashboard
uid: 90cb249d-ae26-11e9-b2a1-0026b95c3009
spec:
   clusterIP: 10.109.202.107
   externalTrafficPolicy: Cluster
   ports:
   - nodePort: 30255
   port: 443
   protocol: TCP
   targetPort: 8443
selector:
k8s-app: kubernetes-dashboard
sessionAffinity: None
type: NodePort
status:
    loadBalancer: {}
于 2019-07-24T16:05:30.817 回答