Kubernetes 部署应用

一、概念

1、Pod

  • k8s 调度的最小单元,一个 pod 包含一组容器,一个 pod 不会跨越多个工作节点
  • pod 相当与逻辑主机,每个 pod 都有自己的 IP 地址
  • pod 内的容器共享相同的 IP 和端口空间
  • 默认情况下,每个容器的文件系统与其他容器完全隔离

2、Deployment

  • 可以更好地做弹性扩容,负载均衡。可以实现无人值守

3、Service

  • 实现多个pod的统一访问入口

二、实践

  kubernetes 安装https://www.cnblogs.com/fanxp/p/12076982.html

1、nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deplayment
spec:
  selector:
    matchLabels:
      app: nginx
  # 数量
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx    
    spec:
      containers:
      - name: nginx
        # 指定镜像
        image: nginx:alpine
        # 指定暴露端口
        ports:
        - containerPort: 80

---

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    # service 内部访问端口
  - port: 8080
    # pod 端口
    targetPort: 80

 2、在master 中执行 

kubectl apply -f nginx.yaml

3、查看pod运行情况

kubectl get pod -o wide

 在任意一台node中:curl 10.244.2.2 

 4、查看service运行情况

kubectl get service
或
kubectl get svc

 在任意一台node中:curl 10.96.46.205:8080

 5、查看service是否有负载均衡

随便进入一个pod中修改一下nginx的index.html

kubectl exec -it nginx-deplayment-5c559d5697-2r7br sh
# 修改html
vi /usr/share/nginx/html/index.html

多访问几次,发现内容发生了变化

6、通过域名访问service

coredns是一个DNS服务器,每当有新的service被创建,kube-dns会添加该service的dns记录。cluster中的pod可以通过{service_name.namespace_name:port}访问service

在任意pod中:wget -q -O - nginx-service.default.svc.cluster.local:8080 

猜你喜欢

转载自www.cnblogs.com/fanxp/p/12084733.html