k8s安裝
- master節(jié)點(diǎn)內(nèi)存不能小于2G
- 虛擬機(jī)采用vitualbox扣癣,網(wǎng)絡(luò)可選用橋接網(wǎng)卡的形式,虛機(jī)可訪問(wèn)外網(wǎng)忘分、可互訪缸剪、可與宿主機(jī)通信
- dashboard的token失效時(shí)間更改
- 測(cè)試部署采用1個(gè)部署節(jié)點(diǎn),1個(gè)(3個(gè))master節(jié)點(diǎn)材部,1個(gè)(3個(gè))node節(jié)點(diǎn)
- 部署采用kubeasz AllinOne的方式部署即可
- 百度云資料下載可通過(guò)BaiduPCS-Go工具進(jìn)行下載
- 每臺(tái)機(jī)器需要配置好 SSH 互訪
- 安裝完成后毫缆,主要在部署節(jié)點(diǎn)進(jìn)行 k8s 操作
dashboard設(shè)置
- 修改dashboard的token過(guò)期時(shí)間
# 在dashboar的部署文件修改如下參數(shù)
args:
- --auto-generate-certificates
- --token-ttl=43200 //增加該參數(shù),43200單位為秒
- 獲取登陸dashboard的token
# 獲取dashboard的token
kubectl get secrets -n kube-system
# 其中admin-user開(kāi)頭的即為dashboard使用的賬號(hào)
kubectl describe secrets -n kube-system admin-user-token-dvcqz
# 獲取token或者如下一步獲取
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')
helm安裝
# 客戶端
# 下載helm 客戶端的tgz包,需要翻墻下載
# 例如 wget https://storage.googleapis.com/kubernetes-helm/helm-v2.9.1-windows-amd64.zip
# 服務(wù)端安裝
helm init --tiller-image jmgao1983/tiller:v2.9.1
# 客戶端與服務(wù)器的版本必須匹配,可輸入命令
helm version 查看
# 使用helm安裝軟件 helm install
# 直接下載未成功乐导,需要將helm的chart的
# Git倉(cāng)庫(kù)克隆到本地下載苦丁,比如安裝traefik ingress
使用如下命令
helm install --name traefik -f value.yaml ./traefik
# 如果k8s項(xiàng)目采用了RBAC授權(quán),需要先創(chuàng)建traefik所使用的serviceaccount物臂,并授權(quán)
# value.yaml作如下修改
serviceType: NodePort
ssl.enabled: true # 開(kāi)啟ssl
ssl.enforced: true # 80跳轉(zhuǎn)到443
acme.enabled: true # 開(kāi)啟acme(自動(dòng)創(chuàng)建使用let's encrypt證書(shū))
acme.email: xiechao1211@126.com
acme.domains.enabled: true
acme.domains.domainsList: "*.example.con"
# 泛域名證書(shū)
# 以下4項(xiàng)為 let's encrypt的證書(shū)申請(qǐng)要求旺拉,采用自動(dòng)DNS的txt記錄認(rèn)證产上,通過(guò)指定的DNS服務(wù)器提供的API,會(huì)自動(dòng)往域名的DNS解析中寫(xiě)入一條txt記錄
challengeType: "dns-01"
dnsProvider.name: godaddy
dnsProvider.godaddy.GODADDY_API_KEY: "KEY"
dnsProvider.godaddy.GODADDY_API_SECRET: "SECRET"
安裝heapster相關(guān)
安裝完成后dashborad自動(dòng)增加顯示節(jié)點(diǎn)性能圖表
# 直接使用以下命令即可安裝 heapster influxdb grafana
# 安裝完成后蛾狗,稍等1分鐘即可在dashboard中看到CPU 內(nèi)存消耗相關(guān)數(shù)據(jù)
kubectl create -f /etc/ansible/manifests/heapster/
NFS持久化處理
- 搭建服務(wù)端(Ubuntu)
apt-get install nfs-kernel-server
mkdir /nfs/data
chmod a+rw /nfs/data
vi /etc/exports
# 增加如下一行
/nfs/data *(rw,sync,no_subtree_check)
# 將 /nfs/data 開(kāi)放晋涣,* 代表所有ip可訪問(wèn)
# rw是讀寫(xiě)權(quán)限,sync是同步權(quán)限淘太,no_subtree_check表示如果輸出目錄是一個(gè)子目錄姻僧,nfs服務(wù)器不檢查其父目錄的權(quán)限
- 安裝客戶端
# 所有Node機(jī)器上
apt-get install -y nfs-common
# 創(chuàng)建nfs需要用到的serviceaccount
# 參考 nfs-serviceaccount.yaml
# 創(chuàng)建 nfs部署服務(wù)(用于掛載nfs),參考nfs.yaml蒲牧,其中的nfs掛載地址也可換成其他服務(wù)商的掛載地址(如阿里云)
# 創(chuàng)建StorgeClass進(jìn)行使用撇贺,參考 sc.yaml
nfs部署及StoregeClass均無(wú)物創(chuàng)建之后,可進(jìn)行使用冰抢,如在traefik中使用了ACME的持久化處理松嘶,該步驟需要先處理
- CentOS
參考如下:Linux---centos安裝配置并掛載NFS
停止部署/啟動(dòng)部署最快捷的方式
# 伸縮部署為0即相當(dāng)于停止了部署運(yùn)行或者
kubectl scale deploy deploy-name --replicas=0
kubectl scale deploy deploy-name --replicas=1
# 即完成了部署的重啟工作
ConfigMap創(chuàng)建和掛載
# 創(chuàng)建 configmap
kubectl create configMap name --from-file=PATH
# 如果不給name 默認(rèn)文件名為configmap的KEY
# 掛載configmap可參考如下:
spec:
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
volumeMounts:
- name: nginx-config-volume
mountPath: /etc/nginx/nginx.conf
subPath: nginx.conf
# 關(guān)鍵在subPath這個(gè)參數(shù),必須指定文件
volumes:
- name: nginx-config-volume
configMap:
name: nginx-conf