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
多访问几次Service,发现内容发生了变化
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 或 wget -q -O - nginx-service.default:8080

                    
                
                
            
        
浙公网安备 33010602011771号