1. 程式人生 > 程式設計 >快速搭建kubernetes與kubeSphere環境(親測有效)

快速搭建kubernetes與kubeSphere環境(親測有效)

最近在學習k8s,但是安裝k8s實在太麻煩了,也耗費了不少時間,下面來說說安裝步驟。以下是我的機器配置,其實2核4G也可以,但是因為我想學習下kubeSphere就要求配置高了,我在這上面也耗費了不少時間,鄙人特將學習過程記錄下來,希望各位看官給個贊,碼字不易,越看越有勁。

第一步-修改hostname(可選)

如果在安裝使用k8s中出現以下錯誤,則需要修改hostname:

name: Invalid value: "k8s_master": a DNS-1123 subdomain must consist of lower case alphanumeric characters,'-'
or '.',and must start and end with an alphanumeric character (e.g. 'example.com',regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*') 複製程式碼

出現hostname不合法的情況,執行以下命令修改hostname

# 修改 hostname
hostnamectl set-hostname your-new-host-name
# 檢視修改結果
hostnamectl status
# 設定 hostname 解析
echo "127.0.0.1 $(hostname)" >> /etc/hosts 複製程式碼

第二步-安裝必要軟體

使用 root 身份在所有節點執行如下程式碼,以安裝軟體:

  • docker
  • nfs-utils
  • kubectl / kubeadm / kubelet
# 在 master 節點和 worker 節點都要執行
curl -sSL https://kuboard.cn/install-script/v1.15.4/install-kubelet.sh | sh
複製程式碼

指令碼具體內容=> install-kubelet.sh

第三步-安裝k8s單Master節點叢集

注意事項:

  • 以 root 身份在 master-k8s 機器上執行
  • 初始化 master 節點時,如果因為中間某些步驟的配置出錯,想要重新初始化 master 節點,請先執行 kubeadm reset 操作
  • POD_SUBNET 所使用的網段不能與 master節點/worker節點 所在的網段重疊。該欄位的取值為一個 CIDR 值,如果您對 CIDR 這個概念還不熟悉,請不要修改這個欄位的取值 10.100.0.1/20

執行以下命令只在 master-k8s 節點機器執行

# 替換 x.x.x.x 為 master-k8s 節點實際 IP(請使用內網 IP)
# export 命令只在當前 shell 會話中有效,開啟新的 shell 視窗後,如果要繼續安裝過程,請重新執行此處的 export 命令
export MASTER_IP=172.18.24.217
# 替換 apiserver.demo 為 您想要的 dnsName (不建議使用 master 的 hostname 作為 APISERVER_NAME)
export APISERVER_NAME=apiserver.demo
# Kubernetes 容器組所在的網段,該網段安裝完成後,由 kubernetes 建立,事先並不存在於您的物理網路中
export POD_SUBNET=10.100.0.1/20
echo "${MASTER_IP}    ${APISERVER_NAME}" >> /etc/hosts
curl -sSL https://kuboard.cn/install-script/v1.15.4/init-master.sh | sh
複製程式碼

指令碼具體內容=> init-master.sh

檢查 master 初始化結果

# 執行如下命令,等待 3-10 分鐘,直到所有的容器組處於 Running 狀態
watch kubectl get pod -n kube-system -o wide

# 檢視 master 節點初始化結果
kubectl get nodes -o wide
複製程式碼

第四步-初始化 worker節點

在 master-k8s 節點上執行以下命令

# 只在 master 節點執行
kubeadm token create --print-join-command
# 檢視 master 節點初始化結果
kubectl get nodes -o wide
複製程式碼

可獲取 kubeadm join 命令及引數,如圖所示

在其它的work節點(也就是首圖ecs中的node1,2,3)執行kubeadm join 命令及引數,如下圖所示
此時再到 master-k8s節點執行 kubectl get nodes -o wide 可以看到有新的節點加入了

第五步-安裝helm(kubeSphere準備工作)

執行以下命令

wget https://get.helm.sh/helm-v2.16.0-linux-amd64.tar.gz
tar zxvf helm-v2.16.0-linux-amd64.tar.gz 
mv linux-amd64/helm /usr/local/bin/
helm version
複製程式碼

執行helm version 可以看到client已經安裝好了,但是server端還沒有安裝。

建立rbac-config.yaml檔案

vi rbac-config.yaml
複製程式碼

輸入以下內容:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system
複製程式碼

儲存後執行kubectl create -f rbac-config.yaml

以上步驟配置成功後,安裝tiller (和helm client的版本要一樣)

# 以下命令二選一

# google源
helm init --service-account tiller --upgrade -i gcr.io/kubernetes-helm/tiller:v2.16.0
# 阿里源
helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.16.0 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

# 引數--stable-repo-url用於拉取charts所在源的位置,如果不設定則預設訪問官方charts
複製程式碼
# 檢視tiller是否安裝成功    
kubectl get pod -n kube-system -l app=helm
複製程式碼

再次執行 helm version可以看到client和service都安裝好了

第六步-正式部署 KubeSphere

版本要求:

框架 版本
Kubernetes >=1.13.0 && <=1.16.0
GitVersion >v1.13.0
Helm >= 2.10.0

機器要求:

叢集work節點可用總記憶體至少10G以上,建議20G

如果你的 Kubernetes 環境滿足以上的要求,那麼可以接著執行下面的步驟了。

  1. 在master-k8s 節點安裝kubeSphere
# 在Kubernetes 叢集中建立名為 kubesphere-system 和 kubesphere-monitoring-system 的 namespace。

cat <<EOF | kubectl create -f -
---
apiVersion: v1
kind: Namespace
metadata:
    name: kubesphere-system
---
apiVersion: v1
kind: Namespace
metadata:
    name: kubesphere-monitoring-system
EOF
複製程式碼
  1. 建立 Kubernetes 叢集 CA 證書的 Secret。

注:按照當前叢集 ca.crt 和 ca.key 證書路徑建立(Kubeadm 建立叢集的證書路徑一般為 /etc/kubernetes/pki)

kubectl -n kubesphere-system create secret generic kubesphere-ca  \
--from-file=ca.crt=/etc/kubernetes/pki/ca.crt  \
--from-file=ca.key=/etc/kubernetes/pki/ca.key
複製程式碼
  1. 建立叢集 etcd 的證書 Secret。

注:根據叢集實際 etcd 證書位置建立;

  • 若 etcd 已經配置過證書,則參考如下建立(以下命令適用於 Kubeadm 建立的 Kubernetes 叢集環境):
kubectl -n kubesphere-monitoring-system create secret generic kube-etcd-client-certs  \
--from-file=etcd-client-ca.crt=/etc/kubernetes/pki/etcd/ca.crt  \
--from-file=etcd-client.crt=/etc/kubernetes/pki/etcd/healthcheck-client.crt  \
--from-file=etcd-client.key=/etc/kubernetes/pki/etcd/healthcheck-client.key
複製程式碼
  • 若 etcd 沒有配置證書,則建立空 Secret:
kubectl -n kubesphere-monitoring-system create secret generic kube-etcd-client-certs
複製程式碼
  1. 克隆 kubesphere-installer 倉庫至本地。
yum install git
git clone https://github.com/kubesphere/ks-installer.git
複製程式碼
  1. 進入 ks-installer,然後在 Kubernetes 叢集部署 KubeSphere。
cd deploy

# 根據引數說明列表,編輯 kubesphere-installer.yaml 中 ks-config.yaml 為當前叢集引數資訊(若 etcd 無證書,設定 etcd_tls_enable: False)
vim kubesphere-installer.yaml

kubectl apply -f kubesphere-installer.yaml
複製程式碼

修改kube_apiserver_hostetcd_endpoint_ips為機器的內網IP

可選安裝項,用不上的可以先禁用

  1. 檢視部署日誌資訊
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l job-name=kubesphere-installer -o jsonpath='{.items[0].metadata.name}') -f
複製程式碼
  1. 安裝成功 安裝成功執行以下命令檢視狀態
kubectl get svc -n kubesphere-system
複製程式碼

使用 IP:30880 訪問 KubeSphere UI 介面,預設的叢集管理員賬號為 admin/P@88w0rd

由於也是學習中,所以把環境也共享出來給大家體驗以下==> 線上體驗地址-賬號為 test/Test123

小技巧

檢視指定 namespace 下 pod 所屬的 node 節點

kubectl get pods -n istio-system -o wide

# 檢視dev下的pod
kubectl get pods -n dev
## 檢視pod xxx的yaml檔案
kubectl get pods -n dev xxx -o yaml
# 獲取namespace 為dev 的pod詳情
kubectl get pods -n dev -o wide
# 建立pod
kubectl apply -f xxx.yaml
# 顯示node的labeal
kubectl get nodes --show-labels
# 檢視 namespace為dev下的pod詳情
kubectl describe pods -n dev [podName]
## 檢視node節點詳情
kubectl describe nodes [nodeName] -o wide
複製程式碼

碰到 status為ContainerCreating ,可以到對應pod所在的node節點上執行journalctl -f檢視映象或容器實時狀態

參考

helm安裝
使用 kubeadm 安裝 kubernetes v1.15.4
kubesphere source 安裝指南