运行nginx的容器
在 /usr/local/kubernetes/yaml
内,创建nginx-deployment.yml
,内容如下:
apiVersion: apps/v1
kind: Deployment
metadata:
# pods的相关名字
name: nginx2-app
spec:
selector:
matchLabels:
# 类似于一个标识
app: nginx3
# 运行2个容器
replicas: 2
template:
metadata:
labels:
# 需要与上述的标识对应
app: nginx3
spec:
containers:
# pods内容器的名字的组成部分
- name: nginx5
image: nginx
ports:
# 指定容器开放的端口
- containerPort: 80
kubectl create -f nginx-deployment.yml
来将其运行kubectl delete -f nginx-deployment.yml
来将其停止
发布Service,将端口暴露
在 /usr/local/kubernetes/yaml
内,创建nginx-service.yml
,内容如下:
apiVersion: v1
kind: Service
metadata:
# service 的名字
name: nginx-http
spec:
ports:
# service 的端口
- port: 80
# pods容器内的端口,也就是service的端口指向容器内的端口
targetPort: 80
# 外部访问的端口
nodePort: 80
# ClusterIP, NodePort, LoadBalancer
type: LoadBalancer
selector:
# 需要与上述deployment文件中的标识对应
app: nginx3
kubectl create -f nginx-service.yml
来将其运行kubectl delete -f nginx-service.yml
来将其停止
注意:
The Service “nginx-http” is invalid: spec.ports[0].nodePort: Invalid value: 80: provided port is not in the valid range. The range of valid ports is 30000-32767
Kubernetes 服务的 NodePort 默认端口范围是 30000-32767,在某些场合下,这个限制不太适用,我们可以自定义它的端口范围,操作步骤如下:
vim /etc/kubernetes/manifests/kube-apiserver.yaml
1 apiVersion: v1
2 kind: Pod
3 metadata:
4 creationTimestamp: null
5 labels:
6 component: kube-apiserver
7 tier: control-plane
8 name: kube-apiserver
9 namespace: kube-system
10 spec:
11 containers:
12 - command:
13 - kube-apiserver
14 # 在这里增加配置即可(增加下面一句)
15 - --service-node-port-range=2-65535
16 - --advertise-address=192.168.10.150
17 - --allow-privileged=true
‘’‘’‘’‘’
修改完成后,使用 docker ps
命令找到 kube-apiserver
容器,再使用 docker restart <ApiServer 容器 ID>
即可生效。(默认情况,一旦修改了配置文件,它也会自己重启)。