首先要說明一下這玩意渾身都是坑
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"
