運行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>
即可生效。(默認情況,一旦修改了配置文件,它也會自己重啓)。