Percy Dev Engineer

K8S学习记录

2023-05-10
Percy

1、安装

  • 机器:47.97.4.204
  • 版本:minikube
    curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
    
    install minikube-linux-amd64 /usr/local/bin/minikube
    
    curl -Lo kubectl "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" \
    && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
    

    2、查看版本

    minikube version
    

    3、启动

    minikube start --force --image-mirror-country=cn
    

    4、查看

    kubectl get pods -A
    

    5、创建Deployment(生成deployment和pod实例)

    kubectl create deployment nginx --image=nginx
    

    6、查看Deployment

    kubectl get deployments
    
    kubectl describe deployments
    

    7、查看Pod

    kubectl get pod
    
  • 查看该容器日志:
    kubectl logs nginx-748c667d99-k2k5c
    

    8、创建Service

    默认情况下,Pod只能通过Kubernetes集群中的内部IP地址访问。要使容器可以从Kubernetes虚拟网络的外部访问,您必须将Pod暴露为Kubernetes Service。 使用kubectl expose命令将Pod暴露给公网, 会将内部端口80挂载到宿主机的随机一个5位数端口

    kubectl expose deployment nginx --type=LoadBalancer --port=80
    

    9、查看Service

    kubectl get services
    

    10、查看Service详情

    minikube service nginx
    
  • 测试内网访问:
    curl 192.168.49.2:30327
    

    11、外网访问

    kubectl port-forward --address 0.0.0.0 service/nginx 8102:80
    

    kubectl port-forward --address 0.0.0.0 pod/nginx-748c667d99-k2k5c 8102:80
    
  • 测试外网访问:http://47.97.4.204:8102

    12、控制台

  • 启动:
    minikube dashboard &
    
  • 远程访问设置:
    kubectl proxy --address='0.0.0.0' --disable-filter=true &
    

    访问:http://47.97.4.204:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

    13、可单独创建Pod,跳过Deployment和Service

    kubectl run nginx --image nginx:latest
    
  • 查看Pod:
    kubectl get pod
    
  • 外部访问设置:
    kubectl port-forward --address 0.0.0.0 service/nginx 8102:80
    
  • 访问:http://47.97.4.204:8102

    14、删除

  • 删除服务发现:
    kubectl delete service nginx
    
  • 删除部署:
    kubectl delete deployment nginx
    
  • 删除容器:
    kubectl delete pod nginx
    

    15、总结

  • Node:Kubernetes本身集群节点
  • Deoplyment:负责创建和保持Pod运行状态。
  • Pod:即容器,是最终的应用部署实体;
  • Service:是从网络角度的抽象概念,类似于Nginx做负载均衡提供的统一网络入口。

    16、和Docker的关系和区别

  • Docker是容器。
  • K8S是容器编排,可以指定各种容器引擎(Docker、Containerd),管理的容器实例Pod可以理解为Docker的容器。
  • Docker也有自己的容器编排工具Docker Swarm。

Similar Posts

上一篇 Docker学习记录

Comments