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
版權宣告:本文為博主原創文章,轉載請附上博文連結!