Kubernetes – 使用命令方式部署应用

查看Kubernetes 节点情况

我们已经安装好了Kubernetes,让我们查看一下节点情况:

[root@qikegu-centos5 ~]# kubectl get nodes
NAME             STATUS   ROLES    AGE    VERSION
qikegu-centos5   Ready    master   6d7h   v1.16.2
qikegu-knode1    Ready    <none>   6d1h   v1.16.2

可以看到,有2个节点:

  • qikegu-centos5 – 主节点
  • qikegu-knode1 – 工作节点

创建部署

我们将创建nginx部署:

[root@qikegu-centos5 nginx_kube_example]# kubectl create deployment nginx --image=nginx
deployment.apps/nginx created

查看创建的部署:

[root@qikegu-centos5 ~]# kubectl get pods
NAME                            READY   STATUS    RESTARTS   AGE
nginx-86c57db685-fc4vq          1/1     Running   0          9m32s
[root@qikegu-centos5 ~]# kubectl get deployment
NAME           READY   UP-TO-DATE   AVAILABLE   AGE
nginx          1/1     1            1           9m15s

创建服务

可以看到容器已经运行了,但是默认情况下,容器只能内部互相访问,如果需要对外提供服务,有以下几种方式:

  • ClusterIP,默认的方式,通过集群IP来对外提供服务,这种方式只能在集群内部访问。
  • NodePort,利用NAT技术在Node的指定端口上提供对外服务。
  • LoadBalancer,利用外部的负载均衡设施进行服务的访问。
  • ExternalName,这是1.7版本之后 kube-dns 提供的功能。

在Kubernetes中Pod有其自己的生命周期,Node发生故障时,ReplicationController或者ReplicationSet会将Pod迁移到其他节点中以保持用户期望状态。

这里我们通过NodePort映射端口,对外暴露服务:

[root@qikegu-centos5 nginx_kube_example]#  kubectl create service nodeport nginx --tcp=80:80
service/nginx created

查看service被映射到哪个端口。

[root@qikegu-centos5 ~]# kubectl get svc
NAME           TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes     ClusterIP   10.96.0.1        <none>        443/TCP        6d7h
nginx          NodePort    10.103.168.215   <none>        80:30041/TCP   14s

访问工作节点,检查服务是否能够正常访问。

[root@qikegu-centos5 ~]#  curl qikegu-knode1:30041
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
...

可以看到,已经成功过访问nginx服务。



浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载