通过k8s实现nginx、mysql、dns、redis的单pod部署

运用上一次博客的内容完成k8s运行基础条件的部署,之后
创建目录:mkdir -p /k8s/pod(用于存放)
进入到pod目录中:cd /k8s/pod

1、创建1号pod:Nginx(Web服务)
cat > nginx-pod.yaml <<EOF
apiVersion: v1                                 #使用 Kubernetes API 的 v1 版本
kind: Pod                                         #声明要创建的资源类型是 Pod
metadata:                                        #Pod 的元数据
  name: nginx-pod                           #给 Pod 起的名字
  namespace: c2516                       #把 Pod 放到名为 c2516 的命名空间里#
  labels:                                           #
    app: nginx                                   #给 Pod 打了一个标签
spec:                                               #Pod 的期望状态
  containers:                                    #Pod 里要运行的容器列表
  - name: nginx                                #给这个容器起的名字
    ports:                                           #容器要暴露的端口列表  
    - containerPort: 80                      #容器内部监听的端口 
    image: nginx:alpine                     #使用的镜像   
    imagePullPolicy: IfNotPresent     #如果本地已经有这个镜像,就不用再从仓库拉取了
EOF

创建pod:kubectl apply -f nginx-pod.yaml

要想局域网内其他网络能访问Web,
需要在运行nginx的pod的node服务器上下载yum install -y socat
把宿主机 8080 端口 → 转发到 Pod 里 Nginx 的 80 端口
--address 0.0.0.0 = 让局域网所有电脑都能访问(在master上执行命令,丢到后台):
nohup kubectl port-forward pod/nginx-pod 8080:80 -n c2516 --address 0.0.0.0 > /dev/null 2>&1 &

2、创建2 号 Pod:独立 CoreDNS(DNS 服务)
cat > coredns-pod.yaml <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: coredns-pod
  namespace: c2516
  labels:
    app: coredns
spec:
  containers:
  - name: coredns
    ports:
    - containerPort: 53                    #
      protocol: UDP                         #暴露 UDP 53 端口
    - containerPort: 53                    #
      protocol: TCP                          #暴露 TCP 53 端口
    image: coredns/coredns            #官方维护的 CoreDNS 容器镜像
    imagePullPolicy: IfNotPresent
EOF

创建pod:kubectl apply -f coredns-pod.yaml

3、创建3 号 Pod:MySQL 8
cat > mysql-pod.yaml <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: mysql-pod
  namespace: c2516
  labels:
    app: mysql
spec:
  containers:
  - name: mysql
    env:                                                                #容器的环境变量列表
    - name: MYSQL_ROOT_PASSWORD          #MySQL 官方镜像固定识别的环境变量名
      value: "123456"                                            #设置 MySQL 的 root 密码 = 123456 
    ports:
    - containerPort: 3306
    image: mysql:8.0
    imagePullPolicy: IfNotPresent
EOF

创建pod:kubectl apply -f mysql-pod.yaml
验证: kubectl exec -it mysql-pod -n c2516 -- mysql -uroot -p123456

4、创建4 号 Pod:Redis
cat > redis-pod.yaml <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: redis-pod
  namespace: c2516
  labels:
    app: redis
spec:
  containers:
  - name: redis
    ports:
    - containerPort: 6379
    image: redis:alpine
    imagePullPolicy: IfNotPresent                               
EOF

创建Pod:kubectl apply -f redis-pod.yaml
验证:kubectl exec -it redis-pod -n c2516 -- redis-cli

查看所有 Pod 运行状态:kubectl get pods -n c2516 -owide
 

更多推荐