CentOS 7 上安装配置 Kubernetes 集群(7)

NAME        STATUS   ROLES    AGE   VERSION k8s-node1   Ready    master   17h   v1.15.0 k8s-node2   Ready    <none>   16h   v1.15.0 k8s-node3   Ready    <none>   16h   v1.15.0 k8s-node4   Ready    <none>   16h   v1.15.0

现在可以看到所有的节点已经运行 Ready 。

测试集群

通过上面的步骤,k8s 集群(1个 master 节点和 3 个 worker 节点)环境已经搭建完毕,并且所有的节点都得正常工作,现在我们要通过添加 Nginx 应用来测试集群。

创建单 Pod 的 Nginx 应用

kubectl create deployment nginx --image=nginx:alpine

deployment.apps/nginx created

查看 pod 详情

kubectl get pod -o wide

NAME                   READY   STATUS    RESTARTS   AGE   IP         NODE        NOMINATED NODE   READINESS GATES nginx-8f6959bd-6pth6   1/1     Running   0          73s   10.2.1.2   k8s-node2   <none>           <none>

Pod 的 IP 地址是从 Master 节点初始化的参数 --pod-network-cidr=10.2.0.0/16 的地址段中分配的。

访问 nginx

通过上面获取的 Pod 的 ip 10.2.1.2 地址访问 nginx

curl -I

HTTP/1.1 200 OK Server: nginx/1.17.1 Date: Thu, 18 Jul 2019 07:53:22 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 25 Jun 2019 14:15:08 GMT Connection: keep-alive ETag: "5d122c6c-264" Accept-Ranges: bytes

扩容为 2 个 节点

kubectl scale deployment nginx --replicas=2

deployment.extensions/nginx scaled

查看 pod

kubectl get pod -o wide

NAME                   READY   STATUS    RESTARTS   AGE     IP         NODE        NOMINATED NODE   READINESS GATES nginx-8f6959bd-6pth6   1/1     Running   0          6m44s   10.2.1.2   k8s-node2   <none>           <none> nginx-8f6959bd-l56n9   1/1     Running   0          28s     10.2.3.2   k8s-node4   <none>           <none>

可以看到 Pod 已经有了两个副本,每个副本都有各自的 IP, 通过 IP 访问新增加的副本,照样是可以提供服务的。

curl -I

HTTP/1.1 200 OK Server: nginx/1.17.1 Date: Thu, 18 Jul 2019 07:58:27 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 25 Jun 2019 14:15:08 GMT Connection: keep-alive ETag: "5d122c6c-264" Accept-Ranges: bytes

**暴露为服务 **

多个副本需要暴露为一个服务来统一对外提供服务,服务会创建一个Cluster IP,从 Master 节点初始化参数 --service-cidr=10.1.0.0/16 地址段中进行分配。服务会自动在在多个副本之间进行负载均衡。

运行以下命令为 nginx 应用暴露服务,并开启 NodePort 在所有节点上进行端口映射,进行外部访问。

kubectl expose deployment nginx --port=80 --type=NodePort

service/nginx exposed

运行以下命令看一下服务列表

kubectl get service

NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE kubernetes   ClusterIP   10.1.0.1      <none>        443/TCP        19h nginx        NodePort    10.1.59.105   <none>        80:32502/TCP   80s

可以看到,nginx 服务的 vip 为 10.1.59.105, Node 节点上端口 32502 映射到 nginx 的 80 端口。

运行以下命令,通过 vip 访问服务

curl -I

HTTP/1.1 200 OK Server: nginx/1.17.1 Date: Thu, 18 Jul 2019 08:10:45 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 25 Jun 2019 14:15:08 GMT Connection: keep-alive ETag: "5d122c6c-264" Accept-Ranges: bytes

在主机上运行以下命令通过节点的 IP 访问服务

curl -I :32502

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

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