查看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服务。