1. 程式人生 > >kubernetes + kubernetes-dashboard 安裝和各種踩坑

kubernetes + kubernetes-dashboard 安裝和各種踩坑

首先要說明一下這玩意渾身都是坑

1 安裝前一定要關閉firewalld服務,否則需要配firewalld的規則

2 docker啟動之後會產生一個網絡卡,這個網絡卡的地址預設是172.17.0.0 網段,這是個虛擬網路,如果要是想讓叢集中的其他機器訪問容器需要通過安裝flannel來實現。所以安裝完flannel和docker一定要確定一下網段和etcd中儲存的是否一致,如果不一致重啟docker服務
確保你的
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.41.1 netmask 255.255.255.0 broadcast 0.0.0.0
ether 02:42:91:89:15:19 txqueuelen 0 (Ethernet)
和你安裝完etcd設定的資料一致
etcdctl mk /coreos.com/network/config '{"Network": "192.168.0.0/16"}'

3 請不用用容器安裝linux然後再容器中安裝docker這樣會會有很多問題用虛擬機器可以,反正我是沒有成功在docker中安裝linux再安裝kubernetes。

4最少要用mini版本進行安裝kubernetes需要依賴很多系統服務,需要centos7以上版本最好7.2以上

5 記得在拉取映象的時候一定要加上版本號,一開始不知道在阿里的映象庫上總是拉不到映象

6 KUBE_CONTROLLER_MANAGER_ARGS配置中預設是需要認證,的記得去掉SecurityContextDeny,ServiceAccount。

7安裝中出了問題要看日誌journalctl -n 10 ,執行中的日誌檢視/var/log/messages,docker的日誌使用docker logs -f 容器id

8kubernetes-dashboard安裝 其實不需要翻牆只有修改ymal檔案中的映象路徑就可以了,阿里有很多的映象

master 需要安裝 kubernetes-master etcd flannel docker
node需要安裝 kubernetes-node flannel docker etcd

檢視防火牆狀態firewalld
systemctl status firewalld.service
關閉防火牆
systemctl stop firewalld.service
systemctl disable firewalld.service

安全設定
setenforce 0

檢視iptables
systemctl status iptables.service
systemctl stop iptables.service

設定主機名
hostnamectl –static set-hostname centos-master

關閉Selinux
/etc/selinux/config
SELINUX=disabled

安裝master
yum install docker
yum install etcd
yum install flannel
yum install kubernetes-master

配置 etcd
所有的etcd都統一配置
/etc/etcd/etcd.conf
ETCD_NAME=default

ETCD_DATA_DIR="/var/lib/etcd/default.etcd"

ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"

ETCD_ADVERTISE_CLIENT_URLS="http://192.168.163.148:2379" masterIP埠

執行
systemctl enable etcd
systemctl start etcd

etcdctl mk /coreos.com/network/config '{"Network": "192.168.0.0/16"}'
etcdctl get /coreos.com/network/config
node節點需要執行etcdctl ls /coreos.com檢視是否有返回值

配置apiserver
/etc/kubernetes/apiserver

KUBE_ETCD_SERVERS="--etcd_servers=http://192.168.163.148:2379"

KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=192.168.0.0/16"

配置controller-manager
/etc/kubernetes/controller-manager

KUBE_CONTROLLER_MANAGER_ARGS="--node-monitor-grace-period=10s --pod-eviction-timeout=10s"

配置config
/etc/kubernetes/config
KUBE_MASTER="--master=http://192.168.163.148:8080"

啟動
systemctl enable
systemctl start kube-apiserver
systemctl start kube-scheduler
systemctl start kube-controller-manager

因為沒有關閉防火牆導致 kube-apiserve無法啟動通過 systemctl status kube-apiserver.service檢視 kube-apiserver狀態和journalctl -xe檢視日誌

安裝客戶端kubernetes-node

yum install kubernetes-node

安裝docker
yum install docker
systemctl start docker

安裝flannel
yum install flannel


配置flanneld
/etc/sysconfig/flanneld
新增
FLANNEL_ETCD_ENDPOINTS="http://127.0.0.1:2379"
FLANNEL_ETCD="http://127.0.0.1:2379"
FLANNEL_ETCD_KEY="/coreos.com/network"

安裝配置kubernetes node

yum install kubernetes node
/etc/kubernetes/kublet

node節點ip
KUBELET_HOSTNAME="--hostname_override=192.168.163.150"

server節點ip
KUBELET_API_SERVER="--api_servers=http://192.168.163.148:8080"

配置
KUBE_PROXY_OPTS="\

--master=http://127.0.0.1:8080 \

--proxy-mode=iptables \

--logtostderr=true"

啟動
systemctl start flanneld.service
systemctl start kubeletsystemctl start kube-proxy


安裝kubernetes-dashboard

首先要保證網路正確
mast要能ping通node上容器的ip,node上的容器能夠訪問apiserver-host。
檢視master是否能獲取節點kubectl  get node

通過
https://rawgit.com/kubernetes/dashboard/master/src/deploy/kubernetes-dashboard.yaml連接獲取 kubernetes-dashboard.yaml檔案 修改,

將google的替換本地的映象
image: docker.io/ist0ne/kubernetes-dashboard-amd64
不要去google拉取映象
imagePullPolicy: IfNotPresent
配置apiserver的ip和埠
- --apiserver-host=http://192.168.137.147:8080
拉取
registry.access.redhat.com/rhel7/pod-infrastructure


修改完成後上傳至master
執行 kubectl create -f  kubernetes-dashboard.yaml

Error from server: error when creating "nginx.yaml": Pod "nginx" is forbidden: no API token found for service account default/default, retry after the token is automatically created and added to the service account解決辦法是編輯/etc/kubernetes/apiserver 去除 KUBE_ADMISSION_CONTROL中的SecurityContextDeny,ServiceAccount,並重啟kube-apiserver.service服務:#vim /etc/kubernetes/apiserverKUBE_ADMISSION_CONTROL="--admission_control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota"
--------------------- 
作者:swcj 
來源:CSDN 
原文:https://blog.csdn.net/swcj/article/details/54969234?utm_source=copy 
版權宣告:本文為博主原創文章,轉載請附上博文連結!