准备工作
首先要准备一个1.5+版本的Kubernetes,并且开放了API Server的http访问端口8080。本文使用的是1.10的版本,没有环境的可以参考我上一篇文章《在CentOS 7环境下安装Kubernetes教程(单Master模式)》进行安装。
使用http://master-ip:8080/apis检查API是否能正常访问,这里的master-ip是192.168.132.132。

如果地址无法访问,需要设置Kubernetes开通http访问端口8080。
1. 在Master中进入API Server的启动脚本目录:
cd /etc/kubernetes/manifests/
2. 修改API Server的脚本文件:kube-apiserver.yaml或者kube-apiserver.json。
添加或设置–insecure-bind-address=0.0.0.0、–insecure-port=8080。如下:

重启kubelet:
systemctl daemon-reload
systemctl restart kubelet
3. 打开Swagger(可选)
在kube-apiserver.yaml或者kube-apiserver.json中添加–enable-swagger-ui=true,重启kubelet,然后使用http://master-ip:8080/swagger-ui/进行访问:

更多设置参数请参考:
https://kubernetes.io/docs/reference/generated/kube-apiserver/
创建应用
1. 创建deloyment
nginx-dep.json:
{
"apiVersion": "extensions/v1beta1",
"kind": "Deployment",
"metadata": {
"name": "nginx",
"labels": {
"app": "nginx"
},
"namespace": "default"
},
"spec": {
"replicas": 1,
"template": {
"metadata": {
"labels": {
"app": "nginx"
}
},
"spec": {
"nodeSelector": {
"kubernetes.io/role": "node"
},
"containers": [
{
"name": "nginx",
"image": "nginx:1.13",
"ports": [
{
"containerPort": 80
}
]
}
]
}
}
}
}API:POST http://master-ip:8080/apis/extensions/v1beta1/namespaces/{namespace}/deployments:

kubectl get deployment进行检查:

2. 创建service
nginx-svc.json:
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "nginx",
"labels": {
"app": "nginx"
},
"namespace": "default"
},
"spec": {
"selector": {
"app": "nginx"
},
"type": "NodePort",
"ports": [
{
"name": "nginx",
"nodePort": 30000,
"port": 80,
"protocol": "TCP",
"targetPort": 80
}
]
}
}API:POST http://master-ip:8080/api/v1/namespaces/{namespace}/services:

kubectl get service进行检查:

使用Node1的地址http://192.168.132.130:30000/进行访问:

补充说明
Kubernetes高版本其实更建议使用https的协议来操作API Server,即https://master-ip:6443/,而且默认是开放的:

但是https的认证与授权当前我还没有弄清楚,因此,没有写在这篇文章,或许后续会补上。不过,Kubernetes推出了Helm,用Helm可以更方便地操作Kubernetes,大家可以参考后续教程《Kubernetes服务编排利器:Helm的安装与使用》。
(END)
原文来自cnblogs,作者“编程玩家 Erik Xu”:https://www.cnblogs.com/Erik_Xu/p/8849426.html
若需要帮助,请点击以上原文链接联系原作者。

