tar zxvf <span>kubernetes.tar.gz </span>cd kubernetes/server
tar zxvf kubernetes-server-linux-amd64.tar.gz # 这个是我们需要执行命令的包
cd kubernetes/server/bin/
复制命令到环境变量中,这里我只复制了kubectl
cp kubectl /usr/bin/
在167上执行
./kube-apiserver --address=0.0.0.0 --insecure-port=8080 --service-cluster-ip-range='172.16.48.167/24' --log_dir=/usr/local/kubernete_test/logs/kube --kubelet_port=10250 --v=0 --logtostderr=false --etcd_servers=http://172.16.48.167:2379 --allow_privileged=false >> /usr/local/kubernete_test/logs/kube-apiserver.log 2>&1 &
./kube-controller-manager --v=0 --logtostderr=false --log_dir=/usr/local/kubernete_test/logs/kube --master=172.16.48.167:8080 >> /usr/local/kubernete_test/logs/kube-controller-manager 2>&1 &
./kube-scheduler --master='172.16.48.167:8080' --v=0 --log_dir=/usr/local/kubernete_test/logs/kube >> /usr/local/kubernete_test/logs/kube-scheduler.log 2>&1 &
这样就把master跑起来了,
[root@w ~]# kubectl get componentstatuses
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health": "true"}
etcd-1 Healthy {"health": "true"}
我们可以看到都很健康的在运行
然后我们就阔以愉快的在2台机器上跑minion需要的程序了(注意167同时也是minion)
# 167
./kube-proxy --logtostderr=false --v=0 --master=http://172.16.48.167:8080 >> /usr/local/kubernete_test/logs/kube-proxy.log 2>&1 &
./kubelet --logtostderr=false --v=0 --allow-privileged=false --log_dir=/usr/local/kubernete_test/logs/kube --address=0.0.0.0 --port=10250 --hostname_override=172.16.48.167 --api_servers=http://172.16.48.167:8080 >> /usr/local/kubernete_test/logs/kube-kubelet.log 2>&1 &
# 168
./kube-proxy --logtostderr=false --v=0 --master=http://172.16.48.167:8080 >> /usr/local/kubernete_test/logs/kube-proxy.log 2>&1 &
./kubelet --logtostderr=false --v=0 --allow-privileged=false --log_dir=/usr/local/kubernete_test/logs/kube --address=0.0.0.0 --port=10250 --hostname_override=172.16.48.97 --api_servers=http://172.16.48.167:8080 >> /usr/local/kubernete_test/logs/kube-kubelet.log 2>&1 &
来确认启动成功
[root@w ~]# kubectl get nodes
NAME LABELS STATUS AGE
172.16.48.167 kubernetes.io/hostname=172.16.48.167 Ready 1d
172.16.48.168 kubernetes.io/hostname=172.16.48.168 Ready 18h
2个minion都是Ready
提交命令
k8s支持2种方式,一种是直接通过命令参数的方式,另一种是通过配置文件的方式,配置文件的话支持json和yaml,下面只讲通过命令参数的方式
建立rc和pod
kubectl run nginx --image=nginx --port=80 --replicas=5
这样就建立了一个rc和5个pod
通过以下命令可以查看
kubectl get rc,pods
如果我们手工把建立的pod删掉,k8s会自动重新启动一个,始终确保pod的数目为5
跨机器间的通信
我们分别在167和168上用docker ps来查看,会发现2台机器上分别跑了一下nginx的容器,我们在2台机器上随意找一个容器进入,使用ip a来查看IP地址,会发现167上为172.17.13.0/24中,168为172.17.4.0/24中,我们分别ping对方的IP会发现是可以ping通的,说明网络已经通了,如果宿主机可以连上外网的话,在容器中也是可以访问外网的
如果我们不通过k8来启动容器,而是直接通过docker来启动容器,会发现启动的容器IP端也是在我们上述2个IP段之内的,并且和k8启动的容器的网络是互通的
当然IP端随机分配并且是内网的IP会给我们造成一些困扰
比如我们一般会这样做:通过docker启动容器,然后通过pipework来给其分配固定IP地址,既可以是内网IP也可以是外网IP,辣么,这样的话k8s启动的容器会和他们想通么