Kubernetes(k8s)环境搭建实战(2)

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启动的容器会和他们想通么

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/d2fce829c9496b9aa9aefd4eca7a193a.html