kubernetes集群搭建以及遇到的问题

from: kubernetes集群搭建以及遇到的问题


centos7.2搭建kubernetes集群以及遇到的问题

环境准备:
  • centos7.2
  • etcd
  • flannel
  • kubenetes1.3

说明:一台pc用于搭建kubernetes master节点,n台kuernetes节点,组成一个kubernetes集群,master节点需要运行etcd kube-apiserver kube-controller-manager

node ip
kube-master 192.168….
kube-node-1 192.168…
….. …..
kube-node-i 192.168…

安装所需软件

安装etcd

etcd安装在kubernetest master节点上
本教程只安装单机的etcd,如果需要用etcd集群,请自行网上找etcd集群搭建教程

sudo wget http://code.yunfancdn.cn/huangjia/document/raw/master/kubernete/etcd-v2.2.0-linux-amd64.tar.gz

sudo tar -zxf etcd-v2.2.0-linux-amd64.tar.gz

sudo cd etcd-v2.2.0-linux-amd64

sudo cp etcd etcdctl /usr/bin
安装flannel
sudo wget http://code.yunfancdn.cn/huangjia/document/raw/master/kubernete/flannel-0.5.4-linux-amd64.tar.gz

sudo cd flannel-0.5.4

sudo flanneld  /usr/bin
安装kubenetes
sudo wget http://code.yunfancdn.cn/huangjia/document/raw/master/kubernete/kubernetes.tar.gz

sudo tar -zxf kubernetes.tar.gz

sudo cd kubernetes

sudo cp kube* /usr/bin

部署各组件

etcd启动:

etcd -name etcd \
-data-dir /var/lib/etcd \
-listen-client-urls http://0.0.0.0:2378,http://0.0.0.0:4001 \
-advertise-client-urls http://0.0.0.0:2378,http://0.0.0.0:4001 \
>> /var/log/etcd.log 2>&1 &

kubernetes api server启动:

sudo kube-apiserver \
--logtostderr=true --v=0 \
--etcd_servers=http://172.17.11.254:4001 \
--insecure-bind-address=0.0.0.0 --insecure-port=8080 \
--service-cluster-ip-range=10.254.1.0/16 \
>> /home/huangjia/log/kube-apiserver.log 2>&1 &

kube-controller-manager:

sudo kube-controller-manager \
--logtostderr=true --v=0 \
--master=http://0.0.0.0:8080 \
>> /home/huangjia/log/kube-controller-manager.log 2>&1 &

kube-scheduler:

sudo kube-scheduler \
--logtostderr=true --v=0 \
--master=http://0.0.0.0:8080 \
>> /home/huangjia/log/kube-scheduler.log 2>&1 &

kube-proxy:

sudo kube-proxy \
--logtostderr=true --v=0 \
--master=http://0.0.0.0:8080 \
>> /home/huangjia/log/kube-proxy.log 2>&1 &

node启动组件

docker:

sudo docker -d \
-H unix:///var/run/docker.sock -H 0.0.0.0:2375 \
>> /home/huangjia/log/docker.log 2>&1 &

kubelet:

sudo kubelet \
--address=0.0.0.0 \
--port=10250 \
--logtostderr=true --v=0 \
--api-servers=http://0.0.0.0:8080 \
>> /home/huangjia/log/kubelet.log 2>&1 &

kube-proxy:

sudo kube-proxy \
--logtostderr=true --v=0 \
--master=http://192.168.3.27:8080 \
>> /home/huangjia/log/kube-proxy.log 2>&1 &

flanneld:

etcdctl -C http://192.168.3.206:4001 \
set /coreos.com/network/config '{"Network":"10.0.0.0/16"}'

flanneld -etcd-endpoints=http://192.168.3.206:4001 \
>> /home/huangjia/log/flanneld.go 2>&1 &

source /run/flannel/subnet.env

ifconfig docker0 ${FLANNEL_SUBNET} 此命令行将docker0的网罗更改为flannel的网络

docker

docker -d \
-H unix:///var/run/docker.sock -H 0.0.0.0:2375 \
--bip=${FLANNEL_SUBNRT} --mtu=${FLANNEL_MTU} \
>> /home/huangjia/log/docker.log 2>&1 &

F && Q

  1. 在环境搭建完成之后再master节点执行如下命令:
sudo kubectl get nodes 或其他任何kubectl get create delete等操作,都会报如下错误

error: provided data does not appear to be a protobuf message, expected prefix [107 56 115 0]
  • 1
  • 2
  • 3

原因:
结合本教程所搭建的环境,kubectl默认的是采用master节点的ip:8080的方式去连接apiserver发送请求,但是我在部署的过程中,由于master节点的8080端口已经被其他的应用所占用,所以我更改了apiserver的端口为9080,所以当直接用:kubectl get 等操作的时候会报以上错误。
解决方式有两种:
一:通过kubectl -s http://matserIp:apiserverPort get
二:通过kubectl config set-cluster name –server=http://matserIp:apiserverPort 然后通过
kubectl –cluster=name get 就能正常的操作了


你可能感兴趣的:(Kubernetes)