目錄node
若是系統自己自帶得鏡像地址,服務器在國外,下載速度會很慢,能夠打開 /etc/apt/sources.lis
替換爲國內得鏡像源。nginx
apt upgrade
將系統得軟件組件更新至最新穩定版本。git
apt update
apt-get install docker.io
若是須要配置爲開機啓動,可執行如下命令github
systemcd enable docker systemcd start docker
若是要配置 Docker 鏡像加速,打開 /etc/docker/daemon.json
文件,registry-mirrors 增長或修改,加入https://registry.docker-cn.com
這個地址,也能夠填寫阿里雲騰訊雲等鏡像加速地址。web
示例docker
{ "registry-mirrors": [ "https://registry.docker-cn.com" ] }
重啓 Docker,使配置生效shell
sudo systemctl daemon-reload sudo systemctl restart docker
執行如下命令安裝 https 工具以及 k8s。json
apt-get update && apt-get install -y apt-transport-https curl apt-get install -y kubelet kubeadm kubectl --allow-unauthenticated
執行下面命令測試是否正常ubuntu
kubeadm init
若是安裝時,出現下面狀況,說明系統得鏡像源中,找不到 k8s 的軟件包。c#
No apt package "kubeadm", but there is a snap with that name. Try "snap install kubeadm" No apt package "kubectl", but there is a snap with that name. Try "snap install kubectl" No apt package "kubelet", but there is a snap with that name. Try "snap install kubelet"
能夠打開 /etc/apt/sources.list
文件,添加一行
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
再次執行安裝 K8s 的命令。
若是出現
The following signatures couldn't be verified because the public key is not available
則執行下面命令,爲期添加 key。
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add
上面命令,安裝了 kubelet
、kubeadm
、kubectl
,kubelet
是 k8s 相關服務,kubectl
是 k8s
管理客戶端,kubeadm
是部署工具。
執行下面命令進行初始化,會自動從網絡中下載須要的 Docker 鏡像。
此命令是用來部署主節點的(Master)。
執行 kubeadm version
查看版本,GitVersion:"v1.17.2"
中即爲版本號。
執行如下命令初始化
kubeadm init --pod-network-cidr=10.244.0.0/16 --ignore-preflight-errors=NumCPU
--ignore-preflight-errors=NumCPU
是在只有一個 CPU 的時候使用,例如 1G1M 的學生服務器。
可是由於須要鏈接到 Google ,因此可能沒法下載內容。
咱們能夠經過使用 kubeadm config images list
命令,列舉須要拉取的鏡像。咱們來手動經過 Docker 拉取。這個過程比較麻煩,還須要手動修改鏡像名稱。
拉取方法 docker pull {鏡像名稱}
。
Google 訪問不了,不過 DockerHub 已經備份好須要的鏡像。
mirrorgooglecontainers 這個倉庫備份了相應的鏡像。遺憾的是,鏡像不必定都是最新的備份。阿里雲上面的 google_containers 倉庫應該是備份最新的。
例如須要如下鏡像
k8s.gcr.io/kube-apiserver:v1.17.2 k8s.gcr.io/kube-controller-manager:v1.17.2 k8s.gcr.io/kube-scheduler:v1.17.2 k8s.gcr.io/kube-proxy:v1.17.2 k8s.gcr.io/pause:3.1 k8s.gcr.io/etcd:3.4.3-0 k8s.gcr.io/coredns:1.6.5
則拉取對應的鏡像
docker pull mirrorgooglecontainers/kube-apiserver:v1.17.2 docker pull mirrorgooglecontainers/kube-controller-manager:v1.17.2 docker pull mirrorgooglecontainers/kube-scheduler:v1.15.0 docker pull mirrorgooglecontainers/kube-proxy:v1.17.2 docker pull mirrorgooglecontainers/pause:3.1 docker pull mirrorgooglecontainers/etcd:3.4.3-0 docker pull coredns/coredns:1.6.5
使用 docker tag {舊名稱:版本}:{新名稱:版本}
,將鏡像更名。
考慮到各類狀況和可能會出現問題,筆者這裏給出一個別人寫的一鍵腳本,能夠直接一鍵完成這一步。
touch pullk8s.sh # 建立腳本文件
nano pullk8s.sh # 編輯腳本
而後將如下內容複製進去
for i in `kubeadm config images list`; do imageName=${i#k8s.gcr.io/} docker pull registry.aliyuncs.com/google_containers/$imageName docker tag registry.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName docker rmi registry.aliyuncs.com/google_containers/$imageName done;
保存文件
Ctrl + O 回車鍵 Ctrl + x
給腳本文件賦權限
chmod +x pullk8s.sh
執行腳本
sh pullk8s.sh
而後執行 docker images
命令查看須要的鏡像是否都準備好了。
root@instance-wxxixh4k:~# docker images REPOSITORY TAG IMAGE ID CREATED SIZE k8s.gcr.io/kube-proxy v1.17.2 cba2a99699bd 2 weeks ago 116MB k8s.gcr.io/kube-apiserver v1.17.2 41ef50a5f06a 2 weeks ago 171MB k8s.gcr.io/kube-controller-manager v1.17.2 da5fd66c4068 2 weeks ago 161MB k8s.gcr.io/kube-scheduler v1.17.2 f52d4c527ef2 2 weeks ago 94.4MB k8s.gcr.io/coredns 1.6.5 70f311871ae1 3 months ago 41.6MB k8s.gcr.io/etcd 3.4.3-0 303ce5db0e90 3 months ago 288MB k8s.gcr.io/pause 3.1 da86e6ba6ca1 2 years ago 742kB
最後執行 開頭的初始化命令。
實在不行的話,能夠嘗試 https://learnku.com/articles/29209 中的安裝教程。
添加環境變量
export KUBECONFIG=/etc/kubernetes/admin.conf
添加網絡插件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
運行別人編寫好的 yaml 配置文件
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
這一步也能夠本身編寫 yaml 。
執行後出現
odsecuritypolicy.policy/psp.flannel.unprivileged created clusterrole.rbac.authorization.k8s.io/flannel created clusterrolebinding.rbac.authorization.k8s.io/flannel created serviceaccount/flannel created configmap/kube-flannel-cfg created daemonset.apps/kube-flannel-ds-amd64 created daemonset.apps/kube-flannel-ds-arm64 created daemonset.apps/kube-flannel-ds-arm created daemonset.apps/kube-flannel-ds-ppc64le created daemonset.apps/kube-flannel-ds-s390x created
保存使用配置
kubeadm join
執行如下命令查看 Node
kubectl get nodes
結果示例
root@instance-wxxixh4k:~# kubectl get nodes NAME STATUS ROLES AGE VERSION instance-wxxixh4k Ready master 9m23s v1.17.2
說明已經成功了,而且可以添加移除 Node。
下載 yaml 配置文件
wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/alternative/kubernetes-dashboard.yaml
使用 cat kubernetes-dashboard.yaml
命令查看 yaml 文件內容,記錄版本號。
文件中有類型如下內容的語句,後面的數字就是版本號。
image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
拉取 kubernetes-dashboard
鏡像(注意修改後面的版本號)。
docker pull registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1 docker tag registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1 docker rmi registry.aliyuncs.com/google_containers/kubernetes-dashboard-amd64:v1.10.1
安裝 kubernetes-dashboard
kubectl create -f kubernetes-dashboard.yaml
查看安裝結果
kubectl get pod --namespace=kube-system
配置面板,添加 Admin 帳號和權限
複製粘貼下面內容到終端,按回車鍵。
cat <<EOF > dashboard-admin.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 EOF
上面代碼會建立一個 dashboard-admin.yaml 文件。
執行安裝
kubectl create -f dashboard-admin.yaml
查看節點端口
kubectl get svc --namespace=kube-system
找到名爲 kubernetes-dashboard
的節點,記錄端口 。
查看 pod 名稱
kubectl get pod --namespace=kube-system
其中有一個 kubernetes-dashboard
開頭的,例如 kubernetes-dashboard-6bf999dbcc-nc4hq
,記錄名稱。
若是如下方法沒法使用,請參考
https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/
方法一:kubectl proxy
執行
kubectl proxy
內網便可使用下面地址訪問
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
方法二:API Server
訪問方法
這裏再也不贅述,詳細請參考網路資料。
方法三:直接暴露端口(NodePort)
不推薦使用。
執行
kubectl -n kube-system edit service kubernetes-dashboard
找到 type: ClusterIP
,改爲 type: NodePort
。
另外 port
也能夠改一下。
提示:
進入時,先使用方向鍵盤移動到合適位置;刪除字符請使用 Delete
鍵;
而後按一下 Esc
鍵,按下 i
鍵進入編輯;
按一下 Esc
鍵,按一下 Shift + q
,會提示輸入內容,輸入 wq!
保存並退出。
執行 kubectl -n kube-system get service kubernetes-dashboard
查看到端口映射。
例如
80:31901/TCP
則訪問方法是 https://{ip}:31901
方法三
kubectl port-forward kubernetes-dashboard-6bf999dbcc-nc4hq 8080:80 --namespace=kube-system &
kubectl create deployment nginx --image=nginx kubectl expose deployment nginx --port=8090 --type=NodePort
外網訪問 8090 便可訪問到 Nginx。