部署錯誤總結(jié)
1、hosts
情景:
檢查POD狀態(tài)時
Error from server: Get https://centos-minion-2:10250/containerLogs/default/nginx-z34rn/nginx: dial tcp: lookup centos-minion-2 on 8.8.8.8:53: no such host
原因:
檢查hosts,發(fā)現(xiàn)沒有配置master機器的hosts 增加 minion-2的記錄
2、找不到POD
一般在部署k8s環(huán)境的時候會設置多個namespace,比如一般應用默認使用default,k8s組件使用kube-system等等。所以如果你找不到了,但是它還運行著,說明你沒找對地方。
Namespace(命名空間)是kubernetes系統(tǒng)中的另一個重要的概念,通過將系統(tǒng)內(nèi)部的對象“分配”到不同的Namespace中,形成邏輯上分組的不同項目、小組或用戶組,便于不同的分組在共享使用整個集群的資源的同時還能被分別管理。
kubectl get pods -n kube-system -o wide
#or
kubectl get all
3、POD之間無法訪問
Flannel是CoreOS團隊針對Kubernetes設計的一個網(wǎng)絡規(guī)劃服務;簡單來說,它的功能是讓集群中的不同節(jié)點主機創(chuàng)建的Docker容器都具有全集群唯一的虛擬IP地址,并使Docker容器可以互連。
所以出現(xiàn)無法訪問的情況時,一定是flannel 有問題。
檢查狀態(tài):
systemctl status flannel
4、Ingress-nginx 訪問慢
遇到過一次情況,內(nèi)網(wǎng)機器部署Ingress-nginx后訪問網(wǎng)站需要10多秒的時間。檢查日志后發(fā)現(xiàn)是后端的backend有一臺機器無法訪問,因此造成多次重試。
POD
時間不一致
情景:
默認很多鏡像的時區(qū)都不是東八區(qū),所以和現(xiàn)在時間會差8小時。date -R檢查時區(qū)。
解決:
1、TZ
對于一般的docker鏡像來說,添加個TZ變量就可以啦
spec:
containers:
- name: dev-wechat-tomcat
image: docker.io/tomcat
env:
- name: TZ
value: Asia/Shanghai
但不是對于所有鏡像都有效的,我測試過一般的都可以,但是ingress-nginx-control鏡像死活無效,至今沒有什么好版本。最后只能用elk來調(diào)整一下。
對于時區(qū)來說,還有其他集中方式:
2、掛載
spec:
containers:
- name: my-testpod
image: 1604podimage:latest
imagePullPolicy: IfNotPresent
volumeMounts:
- name: tz-config
mountPath: /etc/localtime
volumes:
- name: tz-config
hostPath:
path: /usr/share/zoneinfo/Asia/Shanghai
3、復制
docker cp /etc/localtime:【容器ID或者NAME】/etc/localtime
個人比較傾向第一種方式,簡單省事。不過也可以修改dockerfile一勞永逸。
4、部署gitlab
新部署的gitlab 項目地址顯示為主機名。
解決:
vim /var/opt/gitlab/gitlab-rails/etc/gitlab.yml
## GitLab settings
gitlab:
## Web server settings (note: host is the FQDN, do not include http://)
host: n15.my.com
port: 80
https: false
持續(xù)更新中。。
更多參考:
Kubernetes + Dashboard + Heapster (一) 安裝配置
Kubernetes + Dashboard + Heapster (二) 監(jiān)控部署
Kubernetes + Dashboard + Heapster (三) ingress負載均衡
Kubernetes + Dashboard + Heapster (四) 慢慢填坑