我已经通过 Kubespray 成功部署了 Kubernetes,一切似乎都运行良好。我能够通过 kubectl 访问集群并列出节点、pod、服务、机密等。也可以应用新资源,仪表板端点为我提供仪表板登录页面。
我已经使用不同服务帐户(默认、kubernetes-dashboard、kubernetes-admin、...)的令牌登录......每次登录时,我都会收到与kubespray 仪表板警告禁止弹出窗口中描述的相同的弹出窗口。
因此,我按照描述为默认服务帐户应用了集群角色绑定。当我现在使用默认帐户令牌登录时,我只会得到一个
Unknown Server Error (404)
the server could not find the requested resource
Redirecting to previous state in 3 seconds...
Run Code Online (Sandbox Code Playgroud)
之后将我重定向到登录页面的框。如果我通过kubectl proxy. 访问是通过公共集群 IP 的 HTTPS 和通过代理的 HTTP
我正在使用 Kubernetes 1.16.2 和最新的 Kubespray master commit 18d19d9e
编辑:我销毁并重新配置集群以获得一个新的 Kubespray 配置实例,使所有步骤都具有确定性,添加更多信息...
kubectl -n kube-system logs --follow kubernetes-dashboard-556b9ff8f8-jbmgg -- 在登录尝试期间给了我
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Incoming HTTP/2.0 GET /api/v1/csrftoken/login request from 10.233.74.0:57458: { contents hidden }
2019/12/16 12:35:02 [2019-12-16T12:35:02Z] Outcoming …Run Code Online (Sandbox Code Playgroud) 当使用Kubespray、CRI-O和Cilium部署集群时,我收到一个关于有多个 CRI 套接字可供选择的错误。
完全错误
fatal: [p3kubemaster1]: FAILED! => {"changed": true, "cmd": " mkdir -p /etc/kubernetes/external_kubeconfig && /usr/local/bin/kubeadm init phase kubeconfig admin --kubeconfig-dir /etc/kubernetes/external_kubeconfig --cert-dir /etc/kubernetes/ssl --apiserver-advertise-address 10.10.3.15 --apiserver-bind-port 6443 >/dev/null && cat /etc/kubernetes/external_kubeconfig/admin.conf && rm -rf /etc/kubernetes/external_kubeconfig ", "delta": "0:00:00.028808", "end": "2019-09-02 13:01:11.472480", "msg": "non-zero return code", "rc": 1, "start": "2019-09-02 13:01:11.443672", "stderr": "Found multiple CRI sockets, please use --cri-socket to select one: /var/run/dockershim.sock, /var/run/crio/crio.sock", "stderr_lines": ["Found multiple CRI sockets, please use --cri-socket to …Run Code Online (Sandbox Code Playgroud) 我通过 kubespray 在我自己的几个虚拟机上配置了一个 kubernetes 集群。Kubespray 使用project-calico 作为默认网络插件,这非常适合我将集群网络中的代理服务连接到外部世界的要求。
Kubespray 将 apiserver 本身部署为 ClusterIP 服务。为了使其可以从外部访问,它使用主节点主机 IP 地址定义了该服务的端点,据我自己计算,该地址由 Calico 路由到内部 ClusterIP。
我的问题是:如何定义我自己的端点(用于另一个服务),因为这些端点已经通过配置 service.yaml 隐式定义并且不能被覆盖。我想遵循类似的方法让我的 Rook/Ceph 仪表板从集群外部可见。
编辑:请注意kubectl get ingresses.networking.k8s.io --all-namespaces返回No resources found.和kubectl describe service kubernete返回
Name: kubernetes
Namespace: default
Labels: component=apiserver
provider=kubernetes
Annotations: <none>
Selector: <none>
Type: ClusterIP
IP: 10.233.0.1
Port: https 443/TCP
TargetPort: 6443/TCP
Endpoints: 192.168.103.254:6443
Session Affinity: None
Events: <none>
Run Code Online (Sandbox Code Playgroud) 我有一个由 6 台服务器、3 个主服务器和 3 个工作人员组成的集群。直到今天早上,一切都工作正常,直到我从集群中删除了两名工作人员。
现在内部 DNS 不再工作了。我无法解析内部名称。显然 google.com 已解析,我可以 ping 通它。
我的集群正在运行 Kubernetes V1.18.2(用于网络的 calico),与 kubespray 一起安装。我可以从外部访问我的服务,但是当它们需要相互连接时,它们会失败(例如,当 UI 尝试连接到数据库时)。
我在下面提供了此处列出的命令的一些输出:https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/
kubectl exec -ti busybox-6899b748d7-pbdk4 -- cat /etc/resolv.conf
nameserver 10.233.0.10
search default.svc.cluster.local svc.cluster.local cluster.local ovh.net
options ndots:5
Run Code Online (Sandbox Code Playgroud)
kubectl exec -ti busybox-6899b748d7-pbdk4 -- nslookup kubernetes.default
Server: 10.233.0.10
Address: 10.233.0.10:53
** server can't find kubernetes.default: NXDOMAIN
*** Can't find kubernetes.default: No answer
command terminated with exit code 1
Run Code Online (Sandbox Code Playgroud)
kubectl exec -ti busybox-6899b748d7-pbdk4 -- nslookup google.com
Server: 10.233.0.10
Address: 10.233.0.10:53
Non-authoritative …Run Code Online (Sandbox Code Playgroud) 我使用 kubespray 部署了一个全新的 k8s 集群,一切正常,但所有与 calico 相关的 pod 尚未准备好。经过几个小时的调试,我找不到 calico pod 崩溃的原因。我什至禁用/停止了整个防火墙服务,但没有任何改变。
另一件重要的事情是calicoctl node status输出不稳定,每次调用都会显示不同的内容:
Calico process is not running.
Run Code Online (Sandbox Code Playgroud)
Calico process is running.
None of the BGP backend processes (BIRD or GoBGP) are running.
Run Code Online (Sandbox Code Playgroud)
Calico process is running.
IPv4 BGP status
+----------------+-------------------+-------+----------+---------+
| PEER ADDRESS | PEER TYPE | STATE | SINCE | INFO |
+----------------+-------------------+-------+----------+---------+
| 192.168.231.42 | node-to-node mesh | start | 06:23:41 | Passive |
+----------------+-------------------+-------+----------+---------+
IPv6 BGP status
No IPv6 peers found.
Run Code Online (Sandbox Code Playgroud)
另一个经常出现的日志是以下消息: …
正如您在图像中看到的,集群将由 3 台 Ubuntu 18.04 虚拟专用服务器组成,一台是主服务器,另外两台服务器是节点。对于 kubernetes 安装,我将选择kubespray。首先,我要关心的是,3个VPS可以相互通信。这是第一个问题,我该怎么做,3 个 VPS 服务器可以相互通信?
第二个问题是,我必须如何以及在哪里安装 kubespray?我猜在主服务器上。
我正在尝试使用 kubespray 在一台机器上设置一个新的 kubernetes 集群(提交 7e84de2ae116f624b570eadc28022e924bd273bc)。
运行剧本后(在新的 ubuntu 16.04 上),我打开仪表板并看到那些警告弹出窗口:
- configmaps is forbidden: User "system:serviceaccount:default:default" cannot list configmaps in the namespace "default"
- persistentvolumeclaims is forbidden: User "system:serviceaccount:default:default" cannot list persistentvolumeclaims in the namespace "default"
- secrets is forbidden: User "system:serviceaccount:default:default" cannot list secrets in the namespace "default"
- services is forbidden: User "system:serviceaccount:default:default" cannot list services in the namespace "default"
- ingresses.extensions is forbidden: User "system:serviceaccount:default:default" cannot list ingresses.extensions in the namespace "default"
- daemonsets.apps is forbidden: User …Run Code Online (Sandbox Code Playgroud) 在使用 kubespray 将 Kubernetes 从 1.14 升级到 1.15 期间,我的团队在“升级第一个 master”步骤中遇到了阻塞问题,并显示以下消息:
\n\n[upgrade/apply] FATAL: couldn\'\'t upgrade control plane.\nkubeadm has tried to recover everything into the earlier state.\nErrors faced: [failed to renew certificates for component "kube-apiserver":\nfailed to renew certificate apiserver-kubelet-client:\nunable to sign certificate:\nmust specify at least one ExtKeyUsage,\nrename /etc/kubernetes/tmp/kubeadm\n-backup-manifests-2019-09-19-09-06-27/kube-apiserver.yaml /etc/kubernetes/manifests/kube-apiserver.yaml: no such file or directory]\'\nRun Code Online (Sandbox Code Playgroud)\n\n尝试隔离任务并手动运行 kubeadm 命令行会导致相同的错误消息:
\n\n#/usr/local/bin/kubeadm upgrade apply -y v1.15.3 --config=/etc/kubernetes/kubeadm-config.yaml --ignore-preflight-errors=all --allow-experimental-upgrades --allow-release-candidate-upgrades --etcd-upgrade=false -v 6 \nRun Code Online (Sandbox Code Playgroud)\n\n或者甚至尝试手动更新证书:
\n\n/etc/kubernetes/pki# kubeadm alpha certs renew apiserver-kubelet-client …Run Code Online (Sandbox Code Playgroud) 您好,我在通过 kubespray 使用 ansible 时不断收到此错误,我想知道如何克服它
TASK [bootstrap-os : Assign inventory name to unconfigured hostnames (non-CoreOS, non-Flatcar, Suse and ClearLinux)] ********************************************************************************************************************************************************************************************************
task path: /home/dc/xcp-projects/kubespray/roles/bootstrap-os/tasks/main.yml:50
<192.168.10.55> (1, b'\x1b[1;31m==== AUTHENTICATING FOR org.freedesktop.hostname1.set-hostname ===\r\n\x1b[0mAuthentication is required to set the local host name.\r\nMultiple identities can be used for authentication:\r\n 1. test\r\n 2. provision\r\n 3. dc\r\nChoose identity to authenticate as (1-3): \r\n{"msg": "Command failed rc=1, out=, err=\\u001b[0;1;31mCould not set property: Connection timed out\\u001b[0m\\n", "failed": true, "invocation": {"module_args": {"name": "node3", "use": null}}}\r\n', b'Shared connection to 192.168.10.55 closed.\r\n') …Run Code Online (Sandbox Code Playgroud)