一、安裝環境
本次部署使用阿里雲ECS
操作系統: Ubuntu 18.04 64位
實例規格: ecs.c6.large 2U4G
二、kubernetes 版本
k8s.gcr.io/kube-apiserver:v1.16.2
k8s.gcr.io/kube-controller-manager:v1.16.2
k8s.gcr.io/kube-scheduler:v1.16.2
k8s.gcr.io/kube-proxy:v1.16.2
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.15-0
k8s.gcr.io/coredns:1.6.2
三、shell
# 添加鏡像源 cat <<EOF >/etc/apt/sources.list.d/docker-k8s.list deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable EOF # 更新並安裝 apt update && apt install -y docker-ce kubelet kubeadm kubectl
# 關閉 swap
swapoff -a
vim /etc/fstab
# 注釋掉這一行
# /swapfile none swap sw 0 0
設置阿里雲鏡像加速
進入阿里雲;=》容器鏡像服務=》鏡像中心 =》 鏡像加速器
頁面會提供配置文檔;當前只給出主要代碼,如果沒有阿里雲賬號,此步驟可以忽略;
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://{阿里雲分配的地址前綴}.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
安裝鏡像包
這里需要注意:kubernetes 鏡像包是放在 google 容器托管平台,國內下載會出現超時等情況
vi k8s-image-pull.sh
# 1、將對應的包從國內鏡像上拉下來
# 2、在tag成腳本中需要的image名稱
# 3、移除多余的image
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;
初始化
# kubeadm初始化 kubeadm init --pod-network-cidr=10.244.0.0/16 -–apiserver-advertise-address=0.0.0.0 --ignore-preflight-errors=NumCPU
# --apiserver-bind-port API server 將綁定的端口。默認為 6443。
# --apiserver-advertise-address 這是 API server 用來告知集群中其它成員的地址,這也是在 init 流程的時候用來構建kubeadm join
命令行的地址。
如果不設置(或者設置為 0.0.0.0)那么將使用默認接口的 IP 地址。該地址也被添加到 API Server 使用的證書中。
# --ignore-preflight-errors=NumCPU 如果只有一個 cpu 請加參數
# kubeadm init 輸出的 token 用於 master 和加入節點間的身份認證,token 是機密的,需要保證它的安全,因為擁有此標記的人都可以隨意向集群中添加節點。
# 設置網絡插件
export KUBECONFIG=/etc/kubernetes/admin.conf
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
安裝 kubernetes-dashboard
wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta5/aio/deploy/recommended.yaml
# 在需要做外網映射的情況下,我們使用nodeport方式訪問,此段也可以忽略
vi recommended.yaml
# spec:下邊添加 type: NodePort
# targetPort 下邊添加 nodePort: 30001
下載kubernetes-dashboard 鏡像
# 拉取 kubernetes-dashboard 鏡像, 注意版本, 可在 kubernetes-dashboard.yaml 文件中查看 docker pull kubernetesui/dashboard:v2.0.0-beta5
# 官方Kubernetes儀表板映像已從k8s.gcr.io
注冊表移至kubernetesui/dashboard
。
# 我們仍將嘗試從提供圖像k8s.gcr.io
,但是要推送這些圖像,需要Google員工的幫助。
# 目前只有從 v2.0.0-beta1 以及以后的版本
# 安裝 kubernetes-dashboard
kubectl create -f kubernetes-dashboard.yaml
# 查看安裝結果
kubectl get pod --namespace=kubernetes-dashboard
kubectl get pod --namespace=kube-system
# 從 v2.0.0-beta1 以及以后的版本,已將儀表板從kube-system
移至kubernetes-dashboard
名稱空間
# 查看端口
kubectl get svc --namespace=kube-system
或者
kubectl get svc --namespace=kubernetes-dashboard
查看賬號
kubectl get sa --all-namespaces
cat <<EOF > admins.yaml
apiVersion: v1 kind: ServiceAccount metadata: labels: k8s-app: kubernetes-dashboard name: admins namespace: kubernetes-dashboard --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admins roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admins namespace: kubernetes-dashboard
EOF
# 創建用戶
kubectl create -f admins.yaml
獲取用戶token
kubectl describe serviceaccount admins -n kubernetes-dashboard
獲取token
kubectl describe secret admins-token-r5thw -n kubernetes-dashboard
copy token
然后訪問外網地址
https://外網ip:30001
選擇token 貼入 copy的token信息