K8S集群测试部署第一个pod nginx服务

一、首先我们要理解K8S中的几个核心概念
1、deployment 控制Pod副本数量:

是用来定义和管理 Pod 的高级控制器。它描述了应用程序的期望状态,例如需要运行的 Pod 数量、使用的镜像版本等信息。Deployment 会负责根据这些描述来创建、删除或更新 Pod,以确保实际运行的 Pod 符合期望状态。

2、pod 管理容器

是 Kubernetes 中最小的调度单元,它可以包含一个或多个容器,并共享相同的网络命名空间和存储卷。Pod 提供了部署应用程序所需的环境,并且可以被创建、删除或替换。

3、service 对外发布服务

是用来暴露 Pod 提供的服务给其他应用程序或用户的方式。Service 定义了一组 Pod 的访问策略,通过标签选择器将请求路由到匹配的 Pod 上。Service 可以提供负载均衡、服务发现、内部集群通信等功能。

二、手段命令搭建一个nginx pod
1、直接命令创建deploy 启动pod
kubectl create deployment nginx --image=nginx
2、查看pod是否启动成功
[root@master-192-168-146-131 ~]# kubectl  get pod 
NAME                     READY   STATUS             RESTARTS   AGE
nginx-6799fc88d8-k7jml   0/1     ImagePullBackOff   0          4m21s
3、发现错误,因为是国内的所以镜像拉取不到 修改加速源。注“每台节点 都需要改 因为你不知道pod会调度到哪里”。
cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": [
    "https://register.liberx.info",
    "https://dockerpull.com",
    "https://docker.anyhub.us.kg",
    "https://dockerhub.jobcher.com",
    "https://dockerhub.icu",
    "https://docker.awsl9527.cn",
    "https://docker.m.daocloud.io",
    "https://hub-mirror.c.163.com",
    "https://mirror.ccs.tencentyun.com"
  ],        
  "exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
​
​
sudo systemctl restart docker

当然加这么多源会出现下载速度相对过慢的问题。相对的

4、更换源之后,删除pod 让其重新调度
kubectl  get pod 
NAME                     READY   STATUS             RESTARTS   AGE
nginx-6799fc88d8-k7jml   0/1     ImagePullBackOff   0          4m21s
​
[root@master-192-168-146-131 ~]# kubectl  delete pod nginx-6799fc88d8-k7jml
pod "nginx-6799fc88d8-k7jml" deleted
​

在重新查看是否成功

[root@master-192-168-146-131 ~]# kubectl  get pod 
NAME                     READY   STATUS              RESTARTS   AGE
nginx-6799fc88d8-rs8mq   0/1     ContainerCreating   0          55s
​
[root@master-192-168-146-131 ~]# kubectl  get pod 
NAME                     READY   STATUS    RESTARTS   AGE
nginx-6799fc88d8-rs8mq   1/1     Running   0          96s
​
5、将运行的nginx服务对外暴露
kubectl expose deployment nginx --port=80 --type=NodePort
​
[root@master-192-168-146-131 ~]# kubectl get pod,svc
NAME                         READY   STATUS    RESTARTS   AGE
pod/nginx-6799fc88d8-rs8mq   1/1     Running   0          66m
​
NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        3d3h
service/nginx        NodePort    10.97.162.194   <none>        80:30970/TCP   23s
[root@master-192-168-146-131 ~]# 
[root@master-192-168-146-131 ~]# 
[root@master-192-168-146-131 ~]# 
[root@master-192-168-146-131 ~]# kubectl  get svc -A
NAMESPACE     NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                  AGE
default       kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP                  3d3h
default       nginx        NodePort    10.97.162.194   <none>        80:30970/TCP             45s
kube-system   kube-dns     ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP,9153/TCP   3d3h
​
6、验证是否成功
curl http://10.97.162.194/
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
​
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
​
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
​

更多推荐