通过k8s部署nginx

84 阅读2分钟

前言

紧接上文通过rancher部署k8s后,需要对kubectl工具进行熟悉,于是选择了通过k8s部署nginx的方式来更加了解k8s是如何部署和查看应用的

1、查看k8s集群状态

kubectl get nodes#查看节点信息
kubectl get pod -A -o wide #查看pod详细信息
kubectl get all #列出所有资源信息
kubectl get rc,services#列出所有replication controllers和service信息
kubectl describe node nodeName #查看节点详细信息
kubectl describe pod podName -n namespaceName #查看pod详细信息
kubectl logs --tail=10 容器名 -n 命名空间 #查看容器日志
kubectl get deployments -n namespaceName #查询命名空间内的部署
kubectl exec -ti 容器名 -n 命名空间 sh #进入容器
journalctl #用来查询 systemd-journald 服务收集到的日志
kubectl delete namespace namespaceName #删除命名空间
kubectl config set-context --current --namespace=namespaceName #设置默认命名空间
kubectl get pod {podname} -n {namespace} -o yaml | kubectl replace --force -f - #重启节点
kubectl delete deployment #删除deployment
kubectl delete pod #删除pod前要先删除deployment
kubectl edit deployment.apps/metrics-server -n kube-system #编辑服务器对应资源,默认为yaml格式

2、创建namespace

vim nginx-namespace.yaml

apiVersion: v1 #类型为Namespace
kind: Namespace #类型为Namespace
metadata:
 name: ns-test #命名空间名称
 labels:
 name: label-test #pod标签

#创建
kubectl create -f nginx-namespace.yaml
#查询
kubectl get namespace

3、创建pod

一般不直接create pod,而是通过controller来创建pod。deployment为其中一种controller
vim nginx-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
 namespace: ns-test
 name: nginx-deployment
spec:
 selector:
  matchLabels:
   app: nginx
 replicas: 2
 template:
  metadata:
   labels:
    app: nginx
  spec:
   containers:
   - name: nginx
    image: nginx:alpine
    ports:
   - containerPort: 80

#创建
kubectl create -f nginx-deployment.yaml
#查询
kubectl get deployment -n ns-test

kubectl get pods -n ns-test
以下为成功:

图片.png

4、创建service

vim nginx-service.yaml

apiVersion: v1
kind: Service
metadata:
 namespace: ns-test
 name: nginx-service
spec:
 selector:
  app: nginx
 ports:
 - protocol: TCP
  port: 80
  targetPort: 80

kubectl create -f nginx-service.yaml
kubectl get svc nginx-service -o wide -n ns-test #svc即service

图片.png
curl http://10.43.239.175

图片.png

如主机IP需访问
vim nginx-service.yaml

apiVersion: v1
kind: Service
metadata:
 namespace: ns-test
 name: nginx-service
spec:
 selector:
  app: nginx
 ports:
 - protocol: TCP
  port: 80
  targetPort: 80
  nodePort: 30080
 type: NodePort
kubectl apply -f nginx-service.yaml
kubectl get svc -o wide

图片.png
使用主机ip:30080访问

图片.png