kubernetes集群部署nginx
一.kubernetes安装配置
二.集群部署nginx
1.部署应用
### 方法一:命令方式
[root@master ~]# kubectl run nginx-cw --image=nginx --port=8801
解析说明:
kubectl run 部署应用
命名 nginx-cw (名称只能是小写字母)
Docker镜像 --image 指定。
服务端口 --port 指定。
指定容器组 --replicas=3 (默认为1)
运行结果:
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/nginx-cw created### 方法二:文件方式
[root@master ~]# vi nginx-text.yml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 3
template:
metadata:
labels:
app: nginx
spec:
restartPolicy: Always
containers:
- name: nginx
image: nginx:latest
[root@master ~]# kubectl apply -f nginx-text.yml
deployment.extensions/nginx creatednginx-text.yml文件解析
(1).apiVersion 是当前配置格式的版本。
(2).kind 是要创建的资源类型,这里是 Deployment。
(3) metadata 是该资源的元数据,name 是必需的元数据项。
(4) spec 部分是该 Deployment 的规格说明。
(5) replicas 指明副本数量,默认为 1。
(6) template 定义 Pod 的模板,这是配置文件的重要部分。
(7) metadata 定义 Pod 的元数据,至少要定义一个 label。label 的 key 和 value 可以任意指定。
(8) spec 描述 Pod 的规格,此部分定义 Pod 中每一个容器的属性,name 和 image 是必需的。2.查看节点状态
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 24h v1.14.2
node01 Ready <none> 5h29m v1.14.2
node02 Ready <none> 28m v1.14.23.查看pod状态
(1).列出所有pod
[root@master ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-cw-f447c94d4-rbjkn 1/1 Running 0 19m
(2).列出所有pod并携带pod的IP及所在节点
[root@master ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-cw-f447c94d4-rbjkn 1/1 Running 0 20m 10.244.3.2 node02 <none> <none>4.查看副本数
[root@master ~]# kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-cw 1/1 1 1 8m59s5.查看deployment详细信息
[root@master ~]# kubectl describe deployments
Name: nginx-cw
Namespace: default
CreationTimestamp: Thu, 30 Apr 2020 22:08:12 +0800
Labels: run=nginx-cw
Annotations: deployment.kubernetes.io/revision: 1
Selector: run=nginx-cw
Replicas: 1 desired | 1 updated | 1 total | 1 available | 0 unavailable
StrategyType: RollingUpdate
MinReadySeconds: 0
RollingUpdateStrategy: 25% max unavailable, 25% max surge
Pod Template:
Labels: run=nginx-cw
Containers:
nginx-cw:
Image: nginx
Port: 8801/TCP
Host Port: 0/TCP
Environment: <none>
Mounts: <none>
Volumes: <none>
Conditions:
Type Status Reason
---- ------ ------
Available True MinimumReplicasAvailable
Progressing True NewReplicaSetAvailable
OldReplicaSets: <none>
NewReplicaSet: nginx-cw-f447c94d4 (1/1 replicas created)
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal ScalingReplicaSet 10m deployment-controller Scaled up replica set nginx-cw-f447c94d4 to 16.查看集群基本组件状态
[root@master ~]# kubectl get cs
NAME STATUS MESSAGE ERROR
scheduler Healthy ok
controller-manager Healthy ok
etcd-0 Healthy {"health":"true"}7.发布
[root@master ~]# kubectl expose deployment nginx-cw --port=8881 --target-port=8881 --type=NodePort
service/nginx-cw exposed
[root@master ~]# kubectl expose deployment nginx-test --port=8881 --target-port=80 --type=NodePort
service/nginx-test exposed
[root@master ~]# kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 25h
nginx-cw NodePort 10.111.133.96 <none> 8881:30997/TCP 32m
nginx-test NodePort 10.108.115.115 <none> 8881:32684/TCP 9s
--target-port 指定nginx服务端口
--port 指定nginx暴露端口
例: --port=88 --target-port=80 指定将nginx服务的80端口暴露为88端口###注意:
(错误写法)
kubectl expose deployment nginx-cw --port=8881 --target-port=8881 --type=NodePort
(正确写法)
kubectl expose deployment nginx-test --port=8881 --target-port=80 --type=NodePort
如上所示,nginx-cw是访问不了的,由于nginx内部无8881端口,故浏览器无法访问到nginx服务,--target-port一定是服务提供者的端口,切记不能写错。8.浏览器访问
(1)外部访问nodeIP加32684端口


(2).内部访问10.108.115.115的IP,暂时原因未知,可能是网络不通

文章标题:kubernetes集群部署nginx
发布时间:2020-04-30, 16:25:51
最后更新:2020-04-30, 16:25:51