配置Kubernetes網絡
- 在master和nodes上都需要安裝flannel
yum install flannel |
- 在master和nodes上都需要配置flannel
vi /etc/sysconfig/flanneld
# Flanneld configuration options # etcd url location. Point this to the server where etcd runs # etcd config key. This is the configuration key that flannel queries # Any additional options that you want to pass |
- 配置etcd中flannel的key,需要在etcd中進行配置
etcdctl mk /atomic.io/network/config '{ "Network": "192.168.0.0/16" }' |
- 啟動
在master節點上啟動
systemctl enable flanneld.service
systemctl start flanneld.service
service docker restart
systemctl restart kube-apiserver.service
systemctl restart kube-controller-manager.service
systemctl restart kube-scheduler.service |
在各個Nodes上啟動
systemctl enable flanneld.service
systemctl start flanneld.service
service docker restart
systemctl restart kubelet.service
systemctl restart kube-proxy.service |
運行 kubectl get pods --all-namespaces -o wide 看獲取的ip地址是否正確
編輯一個kubernetes-dashboard.yaml文件
最新版本可以去官網下載
https://github.com/kubernetes/dashboard/blob/master/src/deploy/kubernetes-dashboard.yaml
apiVersion: extensions/v1beta1 kind: Deployment metadata: # Keep the name in sync with image version and # gce/coreos/kube-manifests/addons/dashboard counterparts name: kubernetes-dashboard-latest namespace: kube-system spec: replicas: 1 template: metadata: labels: k8s-app: kubernetes-dashboard version: latest kubernetes.io/cluster-service: "true" spec: containers: - name: kubernetes-dashboard image: gcr.io/google_containers/kubernetes-dashboard-amd64:v1.5.1 resources: # keep request = limit to keep this container in guaranteed class limits: cpu: 100m memory: 50Mi requests: cpu: 100m memory: 50Mi ports: - containerPort: 9090 args: - --apiserver-host=http://10.182.169.33:8080 livenessProbe: httpGet: path: / port: 9090 initialDelaySeconds: 30 timeoutSeconds: 30 --- kind: Service metadata: name: kubernetes-dashboard namespace: kube-system labels: k8s-app: kubernetes-dashboard kubernetes.io/cluster-service: "true" spec: selector: k8s-app: kubernetes-dashboard ports: - port: 80 targetPort: 9090
注意修改--apiserver-host=http://10.182.169.33:8080 指向自己的api server.
創建dashboard
kubectl create -f kubernetes-dashboard.yaml kubectl get -f kubernetes-dashboard.yaml |
發現deploy/kubernetes-dashboard-latest一直不在avaiable狀態,通過下面命令查詢
kubectl get pods --all-namespaces |
發現kube-system的命名空間下,總是有個kubernetes-dashboard-latest-1590787137-pp8qd處於CrashLoopBackOff狀態.
可以通過下面命令查看namespace的日志情況
kubectl describe po kubernetes-dashboard --namespace=kube-system |
刪除kubernetes-dashboard
因為沒搞清楚什么原因,很想再試一次,刪除命令如下:
kubectl delete -f kubernetes-dashboard.yaml |
在運行kubectl get pods --all-namespaces發現總是有kube-system命名空間下的pod在運行.最后通過指定命名空間刪除
kubectl delete --all pods --namespace=kube-system kubectl delete deployment kubernetes-dashboard --namespace=kube-system |
注意,如果只刪除pod會發現刪完后又會有個同樣的pod啟動起來,刪除deployment即可.
查看日志確定原因
最重要還是要看日志,最重要還是要看日志,最重要還是要看日志, 重要事情說三遍,此問題浪費3個鍾頭時間 :(
kubectl logs -f kubernetes-dashboard-latest-3243398-thc7k -n kube-system [root@k8s-master ~]# kubectl logs -f kubernetes-dashboard-latest-3243398-thc7k -n kube-system |
發現是dns把k8s-master解析成202.96.134.33的地址了,修改kubernetes-dashboard.yaml中的apiserver-host=http://k8s-master:8080為
http://192.168.0.104:8080后,再進行create就成功.
訪問http://192.168.0.104:8080/ui,界面如下:
點擊weblogic Pod的日志,顯示如下: