kubernetes集群规划
------------------------------------------------------------------------------
HOSTNAME zhaixl2
mac 00:50:56:2b:fb:ac
ip 192.168.72.12
HOSTNAME zhaixl1
mac 00:0c:29:b6:25:ff
ip 192.168.72.11
HOSTNAME dockerhub
mac 00:50:56:3A:7B:F7
ip 192.168.72.50
HOSTNAME kubernetes51
mac 00:50:56:2C:15:6E
ip 192.168.72.51
HOSTNAME kubernetes52
mac 00:50:56:38:31:6A
ip 192.168.72.52
HOSTNAME kubernetes53
mac 00:50:56:3B:34:BA
ip 192.168.72.53
-----------------------------------
kubernetes 集群安装 -- 见《kubernetes.doc》
kubernetes master
mkdir -p /kubermange/replication && mkdir -p /kubermange/service
cd /kubermange/replication
创建一个replication,本例直接在replication模板中创建pod并复制,也可独立创建pod再通过replication来复制。
vi messagecenter-rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: messagecenter-controller
spec:
replicas: 2
selector:
name: messagecenter_pod
template:
metadata:
labels:
name: messagecenter_pod
spec:
containers:
- name: messagecenter
image: reg.dockerhub.upenny.cn/zhaixl/new_msg_center
ports:
- containerPort: 8081
执行创建命令
#kubectl -s http://192.168.72.51:8080 create -f messagecenter-rc.yaml
观察生成的pod副本清单:
[root@k8s51 pods]# kubectl get pod
NAME READY STATUS RESTARTS AGE
messagecenter-controller-cdj19 1/1 Running 0 38s
messagecenter-controller-vx3hj 1/1 Running 0 38s
[root@k8s51 pods]# kubectl -s http://192.168.72.51:8080 describe pod messagecenter-controller-cdj19
Name: messagecenter-controller-cdj19
Namespace: default
Node: 192.168.72.53/192.168.72.53
Start Time: Fri, 29 Dec 2017 09:32:05 +0800
Labels: name=messagecenter_pod
Status: Running
IP: 172.17.0.2
Controllers: ReplicationController/messagecenter-controller
Containers:
messagecenter:
Container ID: docker://4b8a63b21d01c86e87b4608f9fc17404ffc46d74e1deef21f34441ddb8772272
Image: reg.dockerhub.upenny.cn/zhaixl/new_msg_center
Image ID: docker-pullable://reg.dockerhub.upenny.cn/zhaixl/new_msg_center@sha256:6404a973214d4860b9936b7f5bc0c0736fb56ce8b94dc2ab290919f8a8651936
Port: 8081/TCP
State: Running
Started: Fri, 29 Dec 2017 09:32:36 +0800
Ready: True
Restart Count: 0
Volume Mounts: <none>
Environment Variables: <none>
Conditions:
Type Status
Initialized True
Ready True
PodScheduled True
No volumes.
QoS Class: BestEffort
Tolerations: <none>
Events:
FirstSeen LastSeen Count From SubObjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
1m 1m 1 {default-scheduler } Normal Scheduled Successfully assigned messagecenter-controller-cdj19 to 192.168.72.53
46s 46s 1 {kubelet 192.168.72.53} spec.containers{messagecenter} Normal Pulling pulling image "reg.dockerhub.upenny.cn/zhaixl/new_msg_center"
52s 45s 2 {kubelet 192.168.72.53} Warning MissingClusterDNS kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. Falling back to DNSDefault policy.
45s 45s 1 {kubelet 192.168.72.53} spec.containers{messagecenter} Normal Pulled Successfully pulled image "reg.dockerhub.upenny.cn/zhaixl/new_msg_center"
43s 43s 1 {kubelet 192.168.72.53} spec.containers{messagecenter} Normal Created Created container with docker id 4b8a63b21d01; Security:[seccomp=unconfined]
43s 43s 1 {kubelet 192.168.72.53} spec.containers{messagecenter} Normal Started Started container with docker id 4b8a63b21d01
创建一个service,通过selector指定 "name": "messagecenter_pod"与pods关联。
内部可访问的nginx service
Service的type有ClusterIP和NodePort之分,缺省是ClusterIP,这种类型的Service只能在集群内部访问。下表是本文用的配置文件:
# vi messagecenter-service-clusterip.yaml
apiVersion: v1
kind: Service
metadata:
name: messagecenter-service-clusterip
spec:
ports:
- port: 8001
targetPort: 8081
protocol: TCP
selector:
name: messagecenter_pod
执行下面的命令创建service:
# kubectl -s http://192.168.72.51:8080 create -f ./messagecenter-service-clusterip.yaml
services/messagecenter-service
[root@k8s51 pods]# kubectl get service
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.254.0.1 <none> 443/TCP 21h
messagecenter-service-clusterip 10.254.143.46 <none> 8001/TCP 16h
[root@k8s51 pods]# kubectl -s http://192.168.72.51:8080 describe service messagecenter-service-clusterip
Name: messagecenter-service-clusterip
Namespace: default
Labels: <none>
Selector: name=messagecenter_pod
Type: ClusterIP
IP: 10.254.143.46
Port: <unset> 8001/TCP
Endpoints: 172.17.0.2:8081,172.17.0.2:8081
Session Affinity: None
No events.
上面的输出告诉我们这个Service的Cluster IP是10.254.143.46,端口是8001。下面我们验证这个PortalNet IP的工作情况:
[root@k8s52 ~]# curl http://10.254.143.46:8001/messagecenter/api/1.0.0/message/getMessage
{"status":"1","error":"E00000000","msg":"成功(没有异常)","data":{"count":0,"message":[]},"pageCount":null,"pageSize":null,"recordsTotal":null}
[root@k8s52 ~]# curl http://172.17.0.2:8081/messagecenter/api/1.0.0/message/getMessage
{"status":"1","error":"E00000000","msg":"成功(没有异常)","data":{"count":0,"message":[]},"pageCount":null,"pageSize":null,"recordsTotal":null}
外部可访问的nginx service
下面我们创建NodePort类型的Service,这种类型的Service在集群外部是可以访问。下表是本文用的配置文件:
$ cat messagecenter-service-nodeport.yaml
apiVersion: v1
kind: Service
metadata:
name: messagecenter-service-nodeport
spec:
ports:
- port: 8000
targetPort: 8081
protocol: TCP
type: NodePort
selector:
name: messagecenter_pod
执行下面的命令创建service:
$ kubectl -s http://192.168.72.51:8080 create -f ./messagecenter-service-nodeport.yaml
service "messagecenter-service-nodeport" created
[root@k8s51 pods]# kubectl -s http://192.168.72.51:8080 get service
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes 10.254.0.1 <none> 443/TCP 22h
messagecenter-service-clusterip 10.254.143.46 <none> 8001/TCP 17h
messagecenter-service-nodeport 10.254.38.28 <nodes> 8000:32430/TCP 20s
使用下面的命令获得这个service的节点级别的端口:
[root@k8s51 pods]# kubectl -s http://192.168.72.51:8080 describe service messagecenter-service-nodeport
Name: messagecenter-service-nodeport
Namespace: default
Labels: <none>
Selector: name=messagecenter_pod
Type: NodePort
IP: 10.254.38.28
Port: <unset> 8000/TCP
NodePort: <unset> 32430/TCP
Endpoints: 172.17.0.2:8081,172.17.0.2:8081
Session Affinity: None
No events.
验证service的可访问性:
上面的输出告诉我们这个Service的节点级别端口是 32430 。下面我们验证这个Service的工作情况:
[root@k8s52 ~]# curl http://192.168.72.52:32430/messagecenter/api/1.0.0/message/getMessage
{"status":"1","error":"E00000000","msg":"成功(没有异常)","data":{"count":0,"message":[]},"pageCount":null,"pageSize":null,"recordsTotal":null}
[root@k8s53 ~]# curl http://192.168.72.53:32430/messagecenter/api/1.0.0/message/getMessage
{"status":"1","error":"E00000000","msg":"成功(没有异常)","data":{"count":0,"message":[]},"pageCount":null,"pageSize":null,"recordsTotal":null}
-------------------------------------------------------------------
Create a mysql.yaml file:
$ mkdir pods
$ cd pods
$ vi messagecenter.yaml
And add the following lines:
apiVersion: v1
kind: Pod
metadata:
name: messagecenter-pod
labels:
name: messagecenter_pod
spec:
containers:
- resources:
limits:
cpu: 100
image: reg.dockerhub.upenny.cn/zhaixl/new_msg_center
name: messagecenter
ports:
- containerPort: 8081
name: messagecenter
Create the pod:
$ kubectl -s http://192.168.72.51:8080 create -f messagecenter.yaml
-------------------------------------------------------------
参考技术资料
http://dockone.io/article/2113
http://dockone.io/article/2489
https://www.csdn.net/article/2014-12-24/2823292-Docker-Kubernetes
----
https://www.cnblogs.com/xhyan/p/6655731.html
http://www.cstor.cn/textdetail_8177.html
docker集群管理工具kubernetes初步搭建
http://blog.csdn.net/jay763836801/article/details/52648280
*****
installing-kubernetes-cluster-minions-centos7-manage-pods-services.pdf
https://severalnines.com/blog/installing-kubernetes-cluster-minions-centos7-manage-pods-services
*****
基于Kubernetes构建Docker集群管理详解-CSDN
https://www.csdn.net/article/2014-12-24/2823292-Docker-Kubernetes
可外部访问的Kubernetes容器
https://www.58jb.com/html/132.html
Ingress -- host
https://kubernetes.io/docs/concepts/services-networking/ingress/
kubernetes的service的网络类型ingress的搭建(二)
http://blog.csdn.net/u013812710/article/details/72731406
www.dockone.io/article/932 *****
http://blog.csdn.net/jincm13/article/details/50886029,不错
https://www.jianshu.com/p/bbb673e79c3e
http://m.csdn.net/article/2015-06-11/2824933
搭建kubernetes集群,并测试集群
最新推荐文章于 2024-08-19 20:51:56 发布