k8s安装与配置NodePort暴露Service
一、NodePort暴露Service原理二、k8s里部属.netcore 项目,Service 命名api-demo-com 类型ClusterIPapi-demo-com-deployment.yaml{"apiVersion": "apps/v1","kind": "Deployment","metadata": {"annotations": {},"name": "api-demo-co
一、NodePort暴露Service原理
二、k8s里部属.netcore 项目,Service 命名api-demo-com 类型ClusterIP
api-demo-com-deployment.yaml
{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"annotations": {},
"name": "api-demo-com-deployment",
"namespace": "default"
},
"spec": {
"replicas": 1,
"revisionHistoryLimit": 2,
"selector": {
"matchLabels": {
"app": "api-demo-com"
}
},
"template": {
"metadata": {
"labels": {
"app": "api-demo-com"
}
},
"spec": {
"containers": [
{
"image": "registry.cn-hangzhou.aliyuncs.com/saas_mirroring/ali_mi_demo:v2",
"imagePullPolicy": "IfNotPresent",
"name": "api-demo-com",
"ports": [
{
"containerPort": 5000
}
],
"resources": {
"limits": {
"cpu": "200m",
"memory": "500Mi"
},
"requests": {
"cpu": "200m",
"memory": "100Mi"
}
},
"volumeMounts": [
{
"mountPath": "/mnt/api.demo.com",
"name": "data"
},
{
"mountPath": "/mnt/cert",
"name": "cert"
}
]
}
],
"hostAliases": [
{
"hostnames": [
"api.demo.com"
],
"ip": "192.168.1.107"
}
],
"volumes": [
{
"hostPath": {
"path": "/kubernetes/wwwroot/api.demo.com"
},
"name": "data"
},
{
"hostPath": {
"path": "/kubernetes/cert"
},
"name": "cert"
}
]
}
}
}
}
api-demo-com-service.yaml
{
"apiVersion": "v1",
"kind": "Service",
"metadata": {
"annotations": {},
"labels": {
"app": "api-demo-com"
},
"name": "api-demo-com",
"namespace": "default"
},
"spec": {
"ports": [
{
"port": 5000,
"protocol": "TCP",
"targetPort": 80
}
],
"selector": {
"app": "api-demo-com"
}
}
}
拷贝到服务器:
执行:
sudo kubectl create -f api-demo-com-deployment.yaml
sudo kubectl create -f api-demo-com-service.yaml
三、部属nginx,Service 命名nginx 类型NodePort
nginx-deployment.yaml
{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"annotations": {},
"labels": {
"app": "nginx"
},
"name": "nginx-deployment",
"namespace": "default"
},
"spec": {
"replicas": 1,
"revisionHistoryLimit": 2,
"selector": {
"matchLabels": {
"app": "nginx"
}
},
"template": {
"metadata": {
"labels": {
"app": "nginx"
}
},
"spec": {
"containers": [
{
"image": "docker.io/nginx:latest",
"imagePullPolicy": "IfNotPresent",
"name": "nginx",
"ports": [
{
"containerPort": 80
}
],
"resources": {
"limits": {
"cpu": "500m",
"memory": "500Mi"
},
"requests": {
"cpu": "100m",
"memory": "100Mi"
}
},
"volumeMounts": [
{
"mountPath": "/var/log/nginx",
"name": "nginx-log"
},
{
"mountPath": "/etc/nginx",
"name": "nginx-conf"
}
]
}
],
"volumes": [
{
"hostPath": {
"path": "/kubernetes/nginx/log"
},
"name": "nginx-log"
},
{
"hostPath": {
"path": "/kubernetes/nginx/conf"
},
"name": "nginx-conf"
}
]
}
}
}
}
nginx-service.yaml
{
"apiVersion": "v1",
"kind": "Service",
"metadata": {
"annotations": {},
"labels": {
"app": "nginx"
},
"name": "nginx",
"namespace": "default"
},
"spec": {
"ports": [
{
"name": "http",
"nodePort": 30088,
"port": 80,
"protocol": "TCP",
"targetPort": 80
}
],
"selector": {
"app": "nginx"
},
"type": "NodePort"
}
}
拷贝到服务器:
执行命令:
sudo kubectl create -f nginx-deployment.yaml
sudo kubectl create -f nginx-service.yaml
配置nginx 及api-demo-com-site站点的反向代理,在服务器上新建目录:
/kubernetes/nginx
--conf
--sites
--api.demo.com.conf
--mime.types
--nginx.conf
--html
--index.html
mime.types
types {
text/html html htm shtml;
text/css css;
text/xml xml;
image/gif gif;
image/jpeg jpeg jpg;
application/javascript js;
application/atom+xml atom;
application/rss+xml rss;
text/mathml mml;
text/plain txt;
text/vnd.sun.j2me.app-descriptor jad;
text/vnd.wap.wml wml;
text/x-component htc;
image/png png;
image/svg+xml svg svgz;
image/tiff tif tiff;
image/vnd.wap.wbmp wbmp;
image/webp webp;
image/x-icon ico;
image/x-jng jng;
image/x-ms-bmp bmp;
font/woff woff;
font/woff2 woff2;
application/java-archive jar war ear;
application/json json;
application/mac-binhex40 hqx;
application/msword doc;
application/pdf pdf;
application/postscript ps eps ai;
application/rtf rtf;
application/vnd.apple.mpegurl m3u8;
application/vnd.google-earth.kml+xml kml;
application/vnd.google-earth.kmz kmz;
application/vnd.ms-excel xls;
application/vnd.ms-fontobject eot;
application/vnd.ms-powerpoint ppt;
application/vnd.oasis.opendocument.graphics odg;
application/vnd.oasis.opendocument.presentation odp;
application/vnd.oasis.opendocument.spreadsheet ods;
application/vnd.oasis.opendocument.text odt;
application/vnd.openxmlformats-officedocument.presentationml.presentation
pptx;
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
xlsx;
application/vnd.openxmlformats-officedocument.wordprocessingml.document
docx;
application/vnd.wap.wmlc wmlc;
application/x-7z-compressed 7z;
application/x-cocoa cco;
application/x-java-archive-diff jardiff;
application/x-java-jnlp-file jnlp;
application/x-makeself run;
application/x-perl pl pm;
application/x-pilot prc pdb;
application/x-rar-compressed rar;
application/x-redhat-package-manager rpm;
application/x-sea sea;
application/x-shockwave-flash swf;
application/x-stuffit sit;
application/x-tcl tcl tk;
application/x-x509-ca-cert der pem crt;
application/x-xpinstall xpi;
application/xhtml+xml xhtml;
application/xspf+xml xspf;
application/zip zip;
application/octet-stream bin exe dll;
application/octet-stream deb;
application/octet-stream dmg;
application/octet-stream iso img;
application/octet-stream msi msp msm;
audio/midi mid midi kar;
audio/mpeg mp3;
audio/ogg ogg;
audio/x-m4a m4a;
audio/x-realaudio ra;
video/3gpp 3gpp 3gp;
video/mp2t ts;
video/mp4 mp4;
video/mpeg mpeg mpg;
video/quicktime mov;
video/webm webm;
video/x-flv flv;
video/x-m4v m4v;
video/x-mng mng;
video/x-ms-asf asx asf;
video/x-ms-wmv wmv;
video/x-msvideo avi;
}
nginx.conf
events
{
use epoll;
worker_connections 60000;
}
http
{
include mime.types;
default_type application/octet-stream;
charset utf-8;
set_real_ip_from 192.168.1.107;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
sendfile on;
client_max_body_size 50m;
keepalive_timeout 90s;
proxy_connect_timeout 300s;
proxy_send_timeout 360s;
proxy_read_timeout 360s;
proxy_buffers 4 256k;
proxy_buffer_size 128k;
proxy_busy_buffers_size 256k;
large_client_header_buffers 4 128k;
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
include sites/*.conf;
}
api.demo.com.conf
server {
listen 80;
server_name api.demo.com;
access_log /var/log/nginx/api.demo.com.log main;
location / {
proxy_pass http://api-demo-com:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
}
}
index.html
runing
#重启nginx Pod default代表命名空间
kubectl get pod nginx-deployment-759bbffcb6-887tw -n default -o yaml | kubectl replace --force -f -
四、windows客户端pc配置host
192.168.1.111 api.demo.com
运行效果:
更多推荐
所有评论(0)