kubernetes集群发布 Pod 端口

kubernetes集群发布Pod 端口

创建测试环境

vi nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  selector:
    matchLabels:
      run: my-nginx
  replicas: 2
  template:
    metadata:
      labels:
        run: my-nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx
        ports:
        - containerPort: 80

验证服务启动

[[email protected] ~]# kubectl get pods
NAME                        READY   STATUS    RESTARTS   AGE
my-nginx-756fb87568-jwgp8   1/1     Running   0          64s
my-nginx-756fb87568-vshxc   1/1     Running   0          64s
[[email protected] ~]# 
[[email protected] ~]# kubectl get pods -l run=my-nginx -o wide
NAME                        READY   STATUS    RESTARTS   AGE     IP             NODE         NOMINATED NODE   READINESS GATES
my-nginx-756fb87568-jwgp8   1/1     Running   0          2m12s   10.244.3.101   kubnode-01   <none>           <none>
my-nginx-756fb87568-vshxc   1/1     Running   0          2m12s   10.244.4.123   kubnode-02   <none>           <none>

检查 Pod 的 IP 地址:

[[email protected] ~]# kubectl get pods -l run=my-nginx -o yaml | grep podIP
    podIP: 10.244.3.101
    podIP: 10.244.4.123

创建 Service

Kubernetes Service 从逻辑上定义了运行在集群中的一组 Pod,这些 Pod 提供了相同的功能。 当每个 Service 创建时,会被分配一个唯一的 IP 地址(也称为 clusterIP)。 这个 IP 地址与一个 Service 的生命周期绑定在一起,当 Service 存在的时候它也不会改变。 可以配置 Pod 使它与 Service 进行通信,Pod 知道与 Service 通信将被自动地负载均衡到该 Service 中的某些 Pod 上。

创建nginx 服务

kubectl expose 命令为 2个 Nginx 副本创建一个 Service:

[[email protected] ~]# kubectl expose deployment/my-nginx
service/my-nginx exposed

验证服务启动

[[email protected] ~]# kubectl  get svc
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
my-nginx     ClusterIP   10.245.206.203   <none>        80/TCP    2m36s

查看详细信息

[[email protected]m-02 ~]# kubectl describe svc my-nginx
Name:              my-nginx
Namespace:         default
Labels:            <none>
Annotations:       <none>
Selector:          run=my-nginx
Type:              ClusterIP
IP:                10.245.206.203
Port:              <unset>  80/TCP
TargetPort:        80/TCP
Endpoints:         10.244.3.101:80,10.244.4.123:80
Session Affinity:  None
Events:            <none>
kubectl describe po my-nginx # 查看my-nginx pod的详细状态
kubectl describe rs my-nginx # 查看my-nginx replica set的详细状态
kubectl describe deployment my-nginx # 查看my-nginx deployment的详细状态

访问 Service

Kubernetes 支持两种主要的服务发现模式 —— 环境变量和 DNS。前者在单个节点上可用使用,然而后者必须使用 kube-dns 集群插件。

[[email protected] ~]# kubectl get pods
NAME                        READY   STATUS    RESTARTS   AGE
my-nginx-756fb87568-jwgp8   1/1     Running   0          23m
my-nginx-756fb87568-vshxc   1/1     Running   0          23m

[[email protected] ~]# kubectl exec my-nginx-756fb87568-jwgp8 -- printenv | grep SERVICE
KUBERNETES_SERVICE_HOST=10.245.0.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_PORT_HTTPS=443

DNS 解析测试

Kubernetes 提供 DNS ,如果它在集群中处于运行状态,可以通过如下命令来检查:

[[email protected] ~]# kubectl get services kube-dns --namespace=kube-system
NAME       TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)                  AGE
kube-dns   ClusterIP   10.245.0.10   <none>        53/UDP,53/TCP,9153/TCP   11d

验证服务解析

启动一个安装有curl 的镜像

[[email protected] ~]# kubectl run curl --image=radial/busyboxplus:curl -i --tty

测试解析 my-nginx

[ [email protected]:/ ]$ nslookup my-nginx
Server:    10.245.0.10                                          《==== dns 服务器
Address 1: 10.245.0.10 kube-dns.kube-system.svc.cluster.local

Name:      my-nginx
Address 1: 10.245.206.203 my-nginx.default.svc.cluster.local    《==== my-nginx服务的集群IP地址
[ [email protected]:/ ]$ 

curl 测试

[ [email protected]:/ ]$ curl my-nginx 

........
<h1>Welcome to nginx!</h1>
.........
[ [email protected]:/ ]$ curl 10.245.206.203
........
<h1>Welcome to nginx!</h1>
......

服务资源扩容

收缩服务
[[email protected] ~]# kubectl scale deployment my-nginx --replicas=0

验证
[[email protected] ~]# kubectl get pods -o wide

No resources found.

扩容服务至2节点
[[email protected] ~]# kubectl scale deployment my-nginx --replicas=2
deployment.extensions/my-nginx scaled

验证
[[email protected] ~]# kubectl get pods -o wide
NAME                        READY   STATUS              RESTARTS   AGE   IP       NODE         NOMINATED NODE   READINESS GATES
my-nginx-756fb87568-gmgfq   0/1     ContainerCreating   0          1s    <none>   kubnode-02   <none>           <none>
my-nginx-756fb87568-gvhbm   0/1     ContainerCreating   0          1s    <none>   kubnode-01   <none>           <none>

清理服务

#直接使用配置文件删除
[[email protected] ~]# kubectl delete -f nginx.yaml
deployment.apps "my-nginx" deleted

#删除服务
[[email protected] ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.245.0.1       <none>        443/TCP   11d
my-nginx     ClusterIP   10.245.206.203   <none>        80/TCP    48m

[[email protected] ~]# kubectl delete  svc my-nginx
service "my-nginx" deleted

[[email protected] ~]# kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.245.0.1   <none>        443/TCP   11d

原文地址:https://blog.51cto.com/michaelkang/2430830

时间: 2024-09-30 05:50:11

kubernetes集群发布 Pod 端口的相关文章

rancher搭建kubernetes集群

实验环境: 利用rancher搭建kubernetes集群,及搭建和关联harbor私有镜像库. rancher:http://10.10.10.10:8888 kubernetes:10.10.10.10 harbor:10.10.10.100 images:10.10.10.100/test_nginx:latest app:nginx 实验目的: 一.实践docker:search pull.run.tag.build.push功能.了解参数含义 #docker search *image

kubeadm搭建kubernetes集群

一.环境准备首先我的三个ubuntu云主机的配置如下 cpu数量 内存 磁盘 Ubuntu 2 8G 20G 18.04LTS 而且能保证三台机器都能连接外网这里的所有命令都是在root用户下操作的二.安装 1.在所有的节点上安装Docker和kubeadm [email protected]:~# apt-get install curl -y [email protected]:~# curl -s https://packages.cloud.google.com/apt/doc/apt-

阿里巴巴大规模神龙裸金属 Kubernetes 集群运维实践

作者 | 姚捷(喽哥)阿里云容器平台集群管理高级技术专家 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击即可完成下载. 导读:值得阿里巴巴技术人骄傲的是 2019 年阿里巴巴 双11?核心系统 100% 以云原生的方式上云,完美支撑了?54.4w 峰值流量以及?2684 亿的成交量.背后承载海量交易的计算力就是来源于容器技术与神龙裸金属的完美融合. 集团上云机器资源形态 阿里巴巴 双11 采用三地五单元架构,除 2 个混部单元外,其他 3 个均是云单元.神龙机型经过

Centos7上安装Kubernetes集群部署docker

一.安装前准备 1.操作系统详情 需要三台主机,都最小化安装 centos7.3,并update到最新 cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core)  角色主机名IP Master      master192.168.1.14 node1    slave-1192.168.1.15 node2slave-2192.168.1.16 2.在每台主机上关闭firewalld改用iptables 输入以下命令,关闭fire

Kubernetes 集群的两种部署过程(daemon部署和容器化部署)以及glusterfs的应用!

ClusterIp:通过VIP来访问, NodePort: 需要自己搭建负载据衡器 LoadBalancer:仅仅用于特定的云提供商 和 Google Container Engine https://www.nginx.com/blog/load-balancing-kubernetes-services-nginx-plus/ port:相当于服务端口(对及集群内客户访问) targetPort: 相当于pods端口 nodePort: 宿主机端口(也是服务端口,只不过是对集群外客户访问)

Centos7 下安装入门级别的kubernetes集群

前情说明: 三台Centos7系统的虚拟机(1个master+2个node),三台机器上的防火墙,SELINUX全部关掉.我的实验坏境可以上网,默认的YUM源就可以用. 1.什么是kubernetes Kubernetes(k8s)是Google开源的容器集群管理系统(谷歌内部:Borg).在Docker技术的基础上,为容器化的应用提供部署运行.资源调度.服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性. Kubernetes优势: - 容器编排         - 轻量级

CentOS7部署Kubernetes集群

CentOS7部署Kubernetes集群 简介 Kubernetes是什么? Kubernetes一个用于容器集群的自动化部署.扩容以及运维的开源平台. 通过Kubernetes,你可以快速有效地响应用户需求: a.快速而有预期地部署你的应用 b.极速地扩展你的应用 c.无缝对接新的应用功能 d.节省资源,优化硬件资源的使用 我们希望培育出一个组件及工具的生态,帮助大家减轻在公有云及私有云上运行应用的负担. Kubernetes特点: a.可移植: 支持公有云,私有云,混合云,多重云(mult

kubernetes集群部署

鉴于Docker如此火爆,Google推出kubernetes管理docker集群,不少人估计会进行尝试.kubernetes得到了很多大公司的支持,kubernetes集群部署工具也集成了gce,coreos,aws等iaas平台,部署起来也相当的方便.鉴于网上众多资料基于的是不少老版本,本篇文章针对最新的kubernetes及其依赖组件的部署简要阐述.通过本文可以比较粗暴的运行你的kubernetes集群,要优雅还需要更多的工作.部署主要分为三步: 1.准备机器并打通网络 如果要部署kube

基于 CentOS 7 搭建kubernetes集群

基于Centos7构建Kubernetes平台 一.实验环境 3台centos7的主机: master  192.168.111.131部署etcd,kube-apiserver,kube-controller-manager,kube-scheduler 4个应用. node01  192.168.111.130  部署docker,kubelet, kube-proxy  3个应用 node02  192.168.111.129  部署docker,kubelet, kube-proxy