中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

部署k8s集群(親測無坑)

發布時間:2020-07-15 11:32:10 來源:網絡 閱讀:3638 作者:李佳良 欄目:系統運維

kubernetes 簡介
kubernetes,簡稱K8s,是一個開源的,用于管理云平臺中多個主機上的容器化的應用,Kubernetes的目標是讓部署容器化的應用簡單并且高效(powerful),Kubernetes提供了應用部署,規劃,更新,維護的一種機制。


優勢:
傳統的應用部署方式是通過插件或腳本來安裝應用。這樣做的缺點是應用的運行、配置、管理、所有生存周期將與當前操作系統綁定,這樣做并不利于應用的升級更新/回滾等操作,當然也可以通過創建虛擬機的方式來實現某些功能,但是虛擬機非常重,并不利于可移植性。
新的方式是通過部署容器方式實現,每個容器之間互相隔離,每個容器有自己的文件系統 ,容器之間進程不會相互影響,能區分計算資源。相對于虛擬機,容器能快速部署,由于容器與底層設施、機器文件系統解耦的,所以它能在不同云、不同版本操作系統間進行遷移。
容器占用資源少、部署快,每個應用可以被打包成一個容器鏡像,每個應用與容器間成一對一關系也使容器有更大優勢,使用容器可以在build或release 的階段,為應用創建容器鏡像,因為每個應用不需要與其余的應用堆棧組合,也不依賴于生產環境基礎結構,這使得從研發到測試、生產能提供一致環境。類似地,容器比虛擬機輕量、更“透明”,這更便于監控和管理。


? Master 組件
? 節點(Node)組件
Kubernetes是Google開源的一個容器編排引擎,它支持自動化部署、大規模可伸縮、應用容器化管理。在生產環境中部署一個應用程序時,通常要部署該應用的多個實例以便對應用請求進行負載均衡
在Kubernetes中,我們可以創建多個容器,每個容器里面運行一個應用實例,然后通過內置的負載均衡策略,實現對這一組應用實例的管理、發現、訪問,而這些細節都不需要運維人員去進行復雜的手工配置和處理。


Kubernetes 特點
可移植: 支持公有云,私有云,混合云,多重云(multi-cloud)
可擴展: 模塊化,插件化,可掛載,可組合
自動化: 自動部署,自動重啟,自動復制,自動伸縮/擴展


Master 組件
1.1kube-apiserver
1.2ETCD
1.3kube-controller-manager
1.4cloud-controller-manager
1.5kube-scheduler
1.6插件 addons
1.6.1DNS
1.6.2用戶界面
1.6.3容器資源監測
1.6.4Cluster-level Logging


節點(Node)組件
2.1kubelet
2.2kube-proxy
2.3docker
2.4RKT
2.5supervisord
2.6fluentd


Master 組件
Master組件提供集群的管理控制中心。Master組件可以在集群中任何節點上運行。但是為了簡單起見,通常在一臺VM/機器上啟動所有Master組件,并且不會在此VM/機器上運行用戶容器。請參考構建高可用群集以來構建multi-master-VM。


kube-apiserver
kube-apiserver用于暴露Kubernetes API。任何的資源請求/調用操作都是通過kube-apiserver提供的接口進行。請參閱構建高可用群集。


ETCD
etcd是Kubernetes提供默認的存儲系統,保存所有集群數據,使用時需要為etcd數據提供備份計劃。


kube-controller-manager
kube-controller-manager運行管理控制器,它們是集群中處理常規任務的后臺線程。邏輯上,每個控制器是一個單獨的進程,但為了降低復雜性,它們都被編譯成單個二進制文件,并在單個進程中運行。


這些控制器包括:
節點(Node)控制器。
副本(Replication)控制器:負責維護系統中每個副本中的pod。
端點(Endpoints)控制器:填充Endpoints對象(即連接Services&Pods)。
Service Account和Token控制器:為新的Namespace創建默認帳戶訪問API Token。


cloud-controller-manager
云控制器管理器負責與底層云提供商的平臺交互。云控制器管理器是Kubernetes版本1.6中引入的,目前還是Alpha的功能。
云控制器管理器僅運行云提供商特定的(controller loops)控制器循環。可以通過將--cloud-providerflag設置為external啟動kube-controller-manager ,來禁用控制器循環。


cloud-controller-manager 具體功能:
節點(Node)控制器
路由(Route)控制器
Service控制器
卷(Volume)控制器


kube-scheduler
kube-scheduler監視新創建沒有分配到Node的Pod,為Pod選擇一個Node。
插件 addons
插件(addon)是實現集群pod和Services功能的。Pod由Deployments,ReplicationController等進行管理。Namespace 插件對象是在kube-system Namespace中創建。
DNS
雖然不嚴格要求使用插件,但Kubernetes集群都應該具有集群 DNS。
群集 DNS是一個DNS服務器,能夠為 Kubernetes services提供 DNS記錄。
由Kubernetes啟動的容器自動將這個DNS服務器包含在他們的DNS searches中。
用戶界面
kube-ui提供集群狀態基礎信息查看。
容器資源監測
容器資源監控提供一個UI瀏覽監控數據。


Cluster-level Logging
Cluster-level logging,負責保存容器日志,搜索/查看日志。
節點(Node)組件
節點組件運行在Node,提供Kubernetes運行時環境,以及維護Pod。
kubelet
kubelet是主要的節點代理,它會監視已分配給節點的pod,具體功能:
安裝Pod所需的volume。
下載Pod的Secrets。
Pod中運行的 docker(或experimentally,rkt)容器。
定期執行容器健康檢查。
Reports the status of the pod back to the rest of the system, by creating amirror podif necessary.
Reports the status of the node back to the rest of the system.


kube-proxy
kube-proxy通過在主機上維護網絡規則并執行連接轉發來實現Kubernetes服務抽象。
docker
docker用于運行容器。
RKT
rkt運行容器,作為docker工具的替代方案。


supervisord
supervisord是一個輕量級的監控系統,用于保障kubelet和docker運行。
fluentd
fluentd是一個守護進程,可提供cluster-level logging.。

集群環境:
系統centos7
master、node
----------------(前期調試在每臺進行操作)----------------
設置三臺機器的主機名:

master上執行:hostnamectl --static set-hostname k8s-master
node1上執行:hostnamectl --static set-hostname k8s-node-1
node2上執行:hostnamectl --static set-hostname k8s-node-2

修改每臺hosts文件互解:

cat << EOF >> /etc/hosts 
192.168.180.128 k8s-master
192.168.180.133 k8s-node-1
EOF

關閉防火墻和selinux

systemctl stop firewalld && systemctl disable firewalld && setenforce 0

setenforce 0 
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

開啟linux路由轉發功能

echo "1" > /proc/sys/net/ipv4/ip_forward

設置ssh使服務器之間互信

mkdir ~/.ssh
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server

kubernetes集群組件(需要配置的)
-etcd :一個高可用的K/V鍵值對存儲和服務發現系統
-flannel:實現跨主機的容器網絡的通信
-kube-apiserver:提供kubernetes集群的api調用
-kube-controller-manager:確保集群服務
-kube-scheduler調度容器:分配到node
-kubelet:在node節點上按照配置文件中定義的容器規格啟動容器
-kube-proxy提供網絡代理服務

下載依賴包-lvm2-docker等

yum update -y && yum -y install yum-utils device-mapper-persistent-data lvm2 
yum-config-manager --enable docker-ce-nightly
yum-config-manager --enable docker-ce-test

添加官方yum庫

sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo

安裝docker

sudo yum install docker-ce docker-ce-cli containerd.io
systemctl enable docker && systemctl start docker
yum-config-manager --enable docker-ce-nightly
yum-config-manager --enable docker-ce-test

或者使用腳本一鍵安裝

curl -fsSL "https://get.docker.com/" | sh
systemctl enable --now docker

修改docker cgroup驅動,與k8s一致,使用systemd 修改docker cgroup驅動:

native.cgroupdriver=systemd
cat > /etc/docker/daemon.json <<EOF
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ]
}
EOF
systemctl restart docker  # 重啟使配置生效

所有節點安裝/kubeadm/kubelet/kubectl

添加YUM源

-------------------阿里云YUM-------------------

cat > /etc/yum.repos.d/kubernetes.repo << EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

-------------------Google YUM-------------------

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

安裝kubelet kubeadm kubectl

yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet

----------------(master操作)--------------
部署Kubernetes Master

在(Master)執行。

 kubeadm init \
  --apiserver-advertise-address=192.168.180.128 \
  --image-repository registry.aliyuncs.com/google_containers \
  --service-cidr=10.1.0.0/16 \
  --pod-network-cidr=10.244.0.0/16

--apiserver-advertise-address 指定與其它節點通信的接口
--pod-network-cidr 指定pod網絡子網,使用fannel網絡必須使用這個CIDR
--image-repository=registry.aliyuncs.com/google_containers初始化時可以添加下載鏡像的源地址。因為默認是google的,國內無法訪問。這樣前面就不要提前下載好鏡像了。

用戶設置權限(root用戶也需要執行)
master 執行

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

安裝Pod網絡插件(CNI)
master 執行

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

----------------(node操作)--------------

node節點加入到master

node1:kubeadm join 192.168.1.100:6443 --token te0fvk.dbf7t1qsu4kpvxe2 \
--discovery-token-ca-cert-hash sha256:dd74bd1b52313dd8664b8147cb6d18a6f8b25c6c5aa4debc3

結果檢查
node節點加入master輸出信息如下:

[preflight] Running pre-flight checks
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
[kubelet-start] Downloading configuration for the kubelet from the "kubelet-config-1.15" ConfigMap in the kube-system namespace
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Activating the kubelet service
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.

----------------(master操作)--------------

master 節點執行kubectl get nodes

[root@master ~]# kubectl get nodesNAME     
STATUS   ROLES    AGE     VERSION
master   Ready    master   14m     v1.15.2
node1    Ready    <none>   3m36s   v1.15.2
node2    Ready    <none>   101s    v1.15.2

測試kubernetes集群

在Kubernetes集群中創建一個pod,驗證是否正常運行:

$ kubectl create deployment nginx --image=nginx
 kubectl expose deployment nginx --port=80 --type=NodePort
 kubectl get pod,svc

《《 初始化 Kubernetes (端口被占用的問題)
報錯信息
[root@k8s-master01 ~]# kubeadm init --config config.yaml

[init] Using Kubernetes version: v1.10.0
[init] Using Authorization modes: [Node RBAC]
[preflight] Running pre-flight checks.
[preflight] Some fatal errors occurred:
[ERROR Port-6443]: Port 6443 is in use
[ERROR Port-10250]: Port 10250 is in use
[ERROR Port-10251]: Port 10251 is in use
[ERROR Port-10252]: Port 10252 is in use
[ERROR FileAvailable--etc-kubernetes-manifests-kube-apiserver.yaml]: /etc/kubernetes/manifests/kube-apiserver.yaml already exists
[ERROR FileAvailable--etc-kubernetes-manifests-kube-controller-manager.yaml]: /etc/kubernetes/manifests/kube-controller-manager.yaml already exists
[ERROR FileAvailable--etc-kubernetes-manifests-kube-scheduler.yaml]: /etc/kubernetes/manifests/kube-scheduler.yaml already exists
[preflight] If you know what you are doing, you can make a check non-fatal with --ignore-preflight-errors=...
解決方案:發現殺死進程都沒有用,最終重啟一下kubeadm就可以了,如下:
[root@k8s-master01 ~]# kubeadm reset 》》

部署 Dashboard

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
wget  https://raw.githubusercontent.com/kubernetes/dashboard/v1.5.1/src/deploy/kubernetes-dashboard.yaml

默認鏡像國內無法訪問,修改鏡像地址為: lizhenliang/kubernetes-dashboard-amd64:v1.10.1

默認Dashboard只能集群內部訪問,修改Service為NodePort類型,暴露到外部:

vim kubernetes-dashboard.yaml

kind: Service
apiVersion: v1
metadata:
  labels:
    k8s-app: kubernetes-dashboard
  name: kubernetes-dashboard
  namespace: kube-system
spec:
  type: NodePort
  ports:
    - port: 443
      targetPort: 8443
      nodePort: 30001
  selector:
    k8s-app: kubernetes-dashboard
$ kubectl apply -f kubernetes-dashboard.yaml

注意:安裝v1.10.1之前先將配置文件中版本信息v1.5.1修改為v1.10.1

docker pull gcr.io/google_containers/kubernetes-dashboard-amd64:v1.10.1

創建service account并綁定默認cluster-admin管理員集群角色:

$ kubectl create serviceaccount dashboard-admin -n kube-system
 kubectl create clusterrolebinding dashboard-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dashboard-admin
 kubectl describe secrets -n kube-system $(kubectl -n kube-system get secret | awk '/dashboard-admin/{print $1}')

使用輸出的token登錄Dashboard。

使用apiserver方式訪問平臺

注:自行修改ip以及端口

打開瀏覽器訪問 https://192.168.255.140:8443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

報錯如下:

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {
  },
  "status": "Failure",
  "message": "services \"https:kubernetes-dashboard\" is forbidden: User \"system:anonymous\" cannot get services/proxy in the namespace \"kube-system\"",
  "reason": "Forbidden",
  "details": {
    "name": "https:kubernetes-dashboard",
    "kind": "services"
  },
  "code": 403
}

通過message和code,我們使用的是system:anonymous這樣的用戶來訪問位于kube-system命名空間中的名為https:kubernetes-dashboard的service資源。然后這個用戶沒有權限訪問,所以被拒絕了。

k8s中的用戶和認證及授權機制。

k8s中的用戶、認證及授權機制簡介,k8s中的用戶有兩種
真實用戶 :如kubelet
服務賬戶: 即service account(簡寫為sa)
k8s中的認證機制
k8s通過ClusterRoleBinding或者RoleBinding資源來實現對用戶權限的賦予。
ClusterRole或者Role:意思是集群角色或角色,他們是規定了一組對集群內資源的權限規則。
roles和clusterroles的區別在于: roles只能對某個命令空間內的資源定義權限。而集群角色定義的權限都是針對整個集群的命名空間的。

將用戶和role綁定起來就實現了對用戶權限的授予。
部署k8s集群(親測無坑)

創建并導入認證證書
創建證書
首先需要確認kubectl命令的配置文件,默認情況下為/etc/kubernetes/admin.conf,而且已經自動創建在$HOME/.kube/config中,如果沒有創建則需要手動賦值。

cat $HOME/.kube/config

如果確認有集群的配置,則運行以下命令來生成一個p12格式的瀏覽器證書

先生成kubecfg-crt

grep 'client-certificate-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.crt

生成kubecfg-key

grep 'client-key-data' ~/.kube/config | head -n 1 | awk '{print $2}' | base64 -d >> kubecfg.key

生成p12證書,按要求輸入密碼直接回車即可,密碼不要胡亂輸,后面給瀏覽器導入的時候要用。

openssl pkcs12 -export -clcerts -inkey kubecfg.key -in kubecfg.crt -out kubecfg.p12 -name "kubernetes-client"

運行完后在當前目錄會有個kubecfg.p12證書文件,將這個kubecfg.p12證書文件傳到桌面上,可以通過安裝yum install lrzsz,將文件發送到桌面上

[root@master1] ~$ sz kubecfg.p12

將證書導入chrome瀏覽器

點擊瀏覽器:菜單-設置-高級-管理證書

選擇“個人”這一欄(適用于chrome71以上版本,71以下不確定行不行),然后點擊導入kubecfg.p12。

剩下的步驟全部默認,完成后如下:

部署k8s集群(親測無坑)

部署k8s集群(親測無坑)

導入成功后,重啟瀏覽器

chrome://restart

注:使用如下鏈接,更改ip和端口訪問再次訪問

https://192.168.255.140:8443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

此時會彈出類似如下的證書信息對話框,點擊確定即可。

部署k8s集群(親測無坑)

部署k8s集群(親測無坑)
點擊確定之后,會出現下面的界面

選擇登錄方式
kubeconfig、令牌、用戶名和密碼,直接訪問,不使用任何登錄,使用令牌方式登錄,全部資源訪問權限,先創建一個賬號,再創建一個有全部權限的clusterroles,將二者用clusterrolebinding綁定起來。

安裝yaml文件時,已創建了一個名為kubernetes-dashboard的服務賬戶,查看詳情

[root@master2] ~$ kubectl describe serviceaccount/kubernetes-dashboard -n kube-system
Name:                kubernetes-dashboard
Namespace:           kube-system
Labels:              k8s-app=kubernetes-dashboard
Annotations:         <none>
Image pull secrets:  <none>
Mountable secrets:   kubernetes-dashboard-token-jwld4
Tokens:              kubernetes-dashboard-token-jwld4
Events:              <none>

而kubernetes集群安裝好后,他會自動生成一些clusterroles集群權限對象,你可以用下面的命令查看都有哪些

[root@master2] ~$ kubectl get  clusterroles
NAME                                                                   AGE
admin                                                                  4h31m
cluster-admin                                                          4h31m
edit                                                                   4h31m
flannel                                                                3h68m
system:aggregate-to-admin                                              4h31m
system:aggregate-to-edit                                               4h31m

比如集群管理員,我們詳細的看一下,*號表示對所有資源有所有權限。

[root@master2] ~$ kubectl describe  clusterroles/cluster-admin
Name:         cluster-admin
Labels:       kubernetes.io/bootstrapping=rbac-defaults
Annotations:  rbac.authorization.kubernetes.io/autoupdate: true
PolicyRule:
  Resources  Non-Resource URLs  Resource Names  Verbs
  ---------  -----------------  --------------  -----
  *.*        []                 []              [*]
             [*]                []              [*]

用戶和權限都有了,將他們綁定起來

將kubernetes-dashboard這個服務賬戶和cluster-admin這個集群管理員權限對象綁定起來。

##13. 創建一個yaml文件, vim dashboard.yaml,內容如下

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: kubernetes-dashboard
  labels:
    k8s-app: kubernetes-dashboard
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: kubernetes-dashboard
  namespace: kube-system

執行

[root@master2] ~$ kubectl create -f dashboard.yaml

查看是否創建成功

[root@master2] ~$ kubectl get clusterrolebindings kubernetes-dashboard
NAME                   AGE
kubernetes-dashboard   88s

找到kubernetes-dashboard賬戶的token,記下這串token,登錄的時候會使用,這個token默認是永久的。

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kubernetes-dashboard-token | awk '{print $1}')
Name:         kubernetes-dashboard-token-jwld4
Namespace:    kube-system
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: kubernetes-dashboard
              kubernetes.io/service-account.uid: a2ced45f-8b61-11e9-b98f-0050563ff983

Type:  kubernetes.io/service-account-token

Data

namespace:  11 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZC10b2tlbi1qd2xkNCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImEyY2VkNDVmLThiNjEtMTFlOS1iOThmLTAwNTA1NjNmZjk4MyIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTprdWJlcm5ldGVzLWRhc2hib2FyZCJ9.VzsWE80t7AEMB891rxBKJVMxwt5DtuzA23_-SLxxQcjpaB80LBfB09WqUSe6G6vrkRdpMQ3wDLA2SIFCQVAapAHl-J45NuPyhxh8A-DNpfGpEk3uxFqXkn5WXYasbeCIcHw6TII27PTwG6wgS_q1qEbOf4LYJHjExdqypIqAj__F2RRGTqER378qVvJrHJndL5M6W2PhINazLOEqezxKxDRBigMFU7luOYvWCxSPFhjSd3LrsMfWwSRY-Jq5-tUEhsI7uU7Yyb3UIDDiXex-8Mwbida_TgpcIZi6BaEclPygSSfq1a177r97hnxcdv02X9ooOghztSGKM-1bDBWhNg
ca.crt:     1025 bytes

再次訪問dashboard,輸入token登錄后界面如下;
此時訪問dashboard的主體是kubernetes-dashboard這個服務賬戶,它擁有對集群所有資源的所有使用權限。
部署k8s集群(親測無坑)

通過web方式操作很方便,如下:進行擴縮容

部署k8s集群(親測無坑)

生產環境要對不同的人賦予不同的權限,自定義資源訪問權限,用kubeconfig方式登錄,每次都要復制token,會比較麻煩

1、先把config文件復制到別的地方

[root@master2] ~$ cp .kube/config .

然后把一個具有全部訪問權限的token追加到最后一行。先找出token

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-token | awk '{print $1}') |grep token|tail -1

追加到config中,如下

users:
- name: kubernetes-admin
  user:
    client-certificate-data: LS0tLS1CRUd....
    client-key-data: LS0tLS1CRUdJTiBSU......
    token: eyJhbGciO... ...

上傳到桌面,選擇登錄

部署k8s集群(親測無坑)

使用用戶名密碼方式登錄,默認情況下用戶名密碼登錄沒有啟用。

如果沒有該參數,默認使用的是匿名用戶,并且無法檢查提供的憑據是否有效。
原因是Kubernetes 需要有配置

如果要啟用用戶名和密碼驗證,必須在apiserver的部署文件中配置參數 --authorization-mode=ABAC和and --basic-auth-file。

然后在dashboard的部署文件中設置authentication-mode = basic。默認情況下,它的設置是--authentication-mode = token。

部署k8s集群(親測無坑)

跳過登錄過程,直接訪問
添加參數- --enable-skip-login

  containers:
  - args:
    - --auto-generate-certificates
    - --enable-skip-login

部署k8s集群(親測無坑)

官方文檔:
https://github.com/kubernetes/dashboard/wiki/Accessing-Dashboard—1.7.X-and-above
https://github.com/kubernetes/dashboard/wiki/Creating-sample-user

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

苍梧县| 东方市| 横峰县| 屏南县| 卓资县| 保德县| 新邵县| 洛南县| 白沙| 白水县| 板桥市| 万安县| 张家界市| 库伦旗| 吐鲁番市| 大余县| 盖州市| 望江县| 湖州市| 新邵县| 惠来县| 天峻县| 明光市| 轮台县| 河西区| 阿城市| 邹城市| 贵州省| 新和县| 恭城| 闻喜县| 蒙山县| 南乐县| 名山县| 个旧市| 宣汉县| 郸城县| 海阳市| 西乌珠穆沁旗| 华池县| 泰来县|