我对 Kubernetes 真的很陌生。我使用 kubeadm使用本指南创建了一个 kubernetes 集群。集群由一个主节点和两个节点组成。由于我想通过主 apiserver(通过我笔记本电脑上的浏览器)访问 kubernetes Web UI,我/etc/kubernetes/manifests/kube-apiserver.yaml
按照这些K8 WebUI进行了修改,访问控制。我所做的是我在中添加了以下参数/etc/kubernetes/manifests/kube-apiserver.yaml
:
- --authentication-mode=basic
- --basic-auth-file=/etc/kubernetes/auth.csv
- hostPath:
path: /etc/kubernetes/auth.csv
name: kubernetes-dashboard
- mountPath: /etc/kubernetes/auth.csv
name: kubernetes-dashboard
readOnly: true
我在auth.csv
文件中有密码和用户名。但是,在我修改.yaml
文件后,我的 kube-apiserver 进程崩溃了。我通过运行检查ps -aux|grep kube
以了解哪些进程正在运行。结果是kube-scheduler,kube-controller-manager,/usr/bin/kubelet
全部运行,但kube-apiserver
没有找到进程。我想知道什么是重新启动 kubernetes 并让我的集群立即恢复到更改.yaml
.
此外,如果有人可以向我展示添加用户名/密码身份验证的确切步骤,以便我可以通过笔记本电脑上的浏览器访问 Kubernetes Dashboad UI,或者任何其他可以帮助我在我的 Mac 上查看 K8 Web UI 的方式,我将不胜感激笔记本电脑。我发现了一个类似的问题类似的问题,但我仍然无法做到。
环境:
- 三台ubuntu 16服务器:一主两节点
- Kubernetes 1.9 版
- 我可以通过 SSH 连接到三台机器并拥有 root 权限。
更新:kube-apiserver.yaml
附加的文件。
apiVersion: v1
kind: Pod
metadata:
annotations:
scheduler.alpha.kubernetes.io/critical-pod: ""
creationTimestamp: null
labels:
component: kube-apiserver
tier: control-plane
name: kube-apiserver
namespace: kube-system
spec:
containers:
- command:
- kube-apiserver
- --requestheader-client-ca-file=/etc/kubernetes/pki/front-proxy-ca.crt
- --proxy-client-cert-file=/etc/kubernetes/pki/front-proxy-client.crt
- --insecure-port=0
- --advertise-address=172.16.28.125
- --kubelet-client-certificate=/etc/kubernetes/pki/apiserver-kubelet-client.crt
- --secure-port=6443
- --enable-bootstrap-token-auth=true
- --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
- --requestheader-group-headers=X-Remote-Group
- --requestheader-allowed-names=front-proxy-client
- --service-account-key-file=/etc/kubernetes/pki/sa.pub
- --client-ca-file=/etc/kubernetes/pki/ca.crt
- --tls-private-key-file=/etc/kubernetes/pki/apiserver.key
- --kubelet-client-key=/etc/kubernetes/pki/apiserver-kubelet-client.key
- --allow-privileged=true
- --requestheader-username-headers=X-Remote-User
- --requestheader-extra-headers-prefix=X-Remote-Extra-
- --service-cluster-ip-range=10.96.0.0/12
- --admission-control=Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,ResourceQuota
- --tls-cert-file=/etc/kubernetes/pki/apiserver.crt
- --proxy-client-key-file=/etc/kubernetes/pki/front-proxy-client.key
- --authorization-mode=Node,RBAC
- --etcd-servers=http://127.0.0.1:2379
- --authentication-mode=basic
- --basic-auth-file=/etc/kubernetes/auth.csv
image: gcr.io/google_containers/kube-apiserver-amd64:v1.9.4
livenessProbe:
failureThreshold: 8
httpGet:
host: 172.16.28.125
path: /healthz
port: 6443
scheme: HTTPS
initialDelaySeconds: 15
timeoutSeconds: 15
name: kube-apiserver
resources:
requests:
cpu: 250m
volumeMounts:
- mountPath: /etc/kubernetes/pki
name: k8s-certs
readOnly: true
- mountPath: /etc/ssl/certs
name: ca-certs
readOnly: true
- mountPath: /etc/pki
name: ca-certs-etc-pki
readOnly: true
- mountPath: /etc/kubernetes/auth.csv
name: kubernetes-dashboard
readOnly: true
hostNetwork: true
volumes:
- hostPath:
path: /etc/kubernetes/pki
type: DirectoryOrCreate
name: k8s-certs
- hostPath:
path: /etc/ssl/certs
type: DirectoryOrCreate
name: ca-certs
- hostPath:
path: /etc/pki
type: DirectoryOrCreate
name: ca-certs-etc-pki
- hostPath:
path: /etc/kubernetes/auth.csv
name: kubernetes-dashboard
status: {}