Kubernetes对象之Pod详解(附安装部署方法)

首先介绍一下K8S是什么:(引用自K8S中文社区)

Kubernetes是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。

通过Kubernetes你可以:

  • 快速部署应用
  • 快速扩展应用
  • 无缝对接新的应用功能
  • 节省资源,优化硬件资源的使用

其实K8S能够做的事情有很多,而且操作简单,十分方便,下面先介绍如何安装,然后是对于pod详细介绍,如果你对docker还不怎么了解,可以先参考前面的文章学习一下!

环境介绍:

CentOS 7.2

Kubernetes 1.5.2

docker 1.12.1

一.安装配置

1.安装K8S

yum -y install kubernetes

这个命令会同时安装kube-apiserver,kube-controller-manager,kubelet,kube-proxy,kube-scheduler

2.更改服务器端设置

vim /etc/kubernetes/apiserver

###
# kubernetes system config
#
# The following values are used to configure the kube-apiserver
#

# The address on the local server to listen to.
#KUBE_API_ADDRESS="--insecure-bind-address=127.0.0.1"
KUBE_API_ADDRESS="--address=0.0.0.0"

# The port on the local server to listen on.
KUBE_API_PORT="--port=8080"

# Port minions listen on
KUBELET_PORT="--kubelet-port=10250"

# Comma separated list of nodes in the etcd cluster
KUBE_ETCD_SERVERS="--etcd-servers=http://127.0.0.1:2379"

# Address range to use for services
#KUBE_SERVICE_ADDRESSES="--service-cluster-ip-range=10.254.0.0/16"
KUBE_SERVICE_ADDRESSES="--portal_net=10.254.0.0/16"

# default admission control policies
#KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,SecurityContextDeny,ServiceAccount,ResourceQuota"
KUBE_ADMISSION_CONTROL="--admission-control=NamespaceLifecycle,NamespaceExists,LimitRanger,ResourceQuota"

# Add your own!
KUBE_API_ARGS=""

vim /etc/kubernetes/controller-manager        #指定客户端主机的ip地址

KUBELET_ADDRESSES="--machines= 192.168.6.109"

vim /etc/kubernetes/kubelet        #这个镜像是k8s构建pod必备镜像,如果不能从默认位置下载可以先在私库中单独下载这个镜像,这里6.109是一个私库

#KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest"
KUBELET_POD_INFRA_CONTAINER="--pod-infra-container-image=192.168.6.109:5000/pod-infrastructure:latest"

3.启动相关服务

systemctl start kube-apiserver kube-controller-manager kubelet kube-proxy kube-scheduler

4.在pod创建过程中如果想让docker从私库中拉取镜像,同样需要去掉相关证书验证

vim /etc/docker/daemon.json

{ "insecure-registries":["192.168.6.109:5000"]

5.重启docker服务

systemctl restart docker

二.节点(Node)安装

1.安装K8S

yum -y install kubernetes

2.更改节点(Node)设置

vim /etc/kubernetes/apiserver

KUBE_ETCD_SERVERS="--etcd-servers=
KUBE_API_ADDRESS="--insecure-bind-address=192.168.6.200"

vim /etc/kubernetes/config

KUBE_MASTER="--master=http://192.168.6.200:8080"

vim /etc/kubernetes/kubelet

KUBELET_ADDRESS="--address=0.0.0.0"
KUBELET_HOSTNAME="--hostname-override=192.168.6.109"
KUBELET_API_SERVER="--api-servers=http://192.168.6.200:8080"

3.启动相关服务,节点端必须开放10250端口

systemctl start kubelet kube-proxy

4.查看节点是否正常,在服务器端执行

kubectl get node        #此时应该存在2个节点,一个本机,一个节点

二.Pod是个什么东西

在K8S中,Pod是创建或部署的最小/最简单的基本单位,一个Pod是由多个Docker容器组成的容器组

如图所示,每个pod包含至少一个标签,标签的形式是key:value,这样可以更快地匹配到对应的pod,service主要的功能是暴露pod对应的端口,或是做负载均衡使用!下一节再详细讨论service的用法。

1.Pod应用实例

vim obj.json

{
  "kind": "Pod",                             #类型,独立的Pod
  "apiVersion": "v1",                        #API版本
  "metadata": {                              
      "name": "podtest",                     #pod名称
      "labels": {
	  "name": "nginx-server"             #标签
}
},
"spec": {
    "containers":[{                          
	 "name": "master1",                  #第一个容器的名称
         "image": "nginx",                   #使用的镜像
         "ports":[{                          
	     "containerPort": 80,            #容器内的端口
	     "hostPort": 8811                #映射的主机端口
	 }],
     "volumeMounts": [{                      #数据卷
	     "mountPath": "/var/log/nginx",  #容器内的目录
	     "name": "nginx-conf"            #数据卷名称
	 }]
     },{
         "name": "master2",                  #第二个容器的名称
	 "image": "redis",
	 "ports":[{
	     "containerPort": 6379,
	     "hostPort": 7480
         }]
     }],
   "volumes": [{
	 "name": "nginx-conf",              #对应上面的数据卷名称
	 "emptyDir": {}                     #本地挂载目录,这里是空目录,路径在/$K8S安装路径/pkg/volume/empty_dir
   }]
  }
}

2.创建这个Pod

kubectl create -f obj.json

pod "podtest" created

3.查看已经创建的Pod

kubectl get pod

如果提示有2个正在运行则为正常,如果不是,可以查看具体错误日志

4.查看Pod运行日志

kubectl logs podtest master1/master2

5.查看创建pod的细节

kubectl describe pod podtest

6.在节点上查看容器创建情况

docker ps

可以看到一共创建了3个容器,第三个容器提供网络和端口支持,上面两个分别提供nginx和redis服务,这时如果访问curl 192.168.6.109:8811 则会出现预先设置好的页面!

7.pod删除

如果想修改其中的配置,则需要先删除pod再进行创建

kubectl delete -f obj.json

kubectl delete pod podtest

8.扩展查询

kubectl get pod -o wide

可以得到Pod的运行ip,节点使用情况

时间: 2024-08-06 23:31:36

Kubernetes对象之Pod详解(附安装部署方法)的相关文章

详解Linux安装GCC方法

转载自:http://blog.csdn.net/bulljordan23/article/details/7723495/ 下载: http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/gcc-4.5.1.tar.bz2浏览: http://ftp.gnu.org/gnu/gcc/gcc-4.5.1/查看Changes: http://gcc.gnu.org/gcc-4.5/changes.htm 现在很多程序员都应用GCC,怎样才能更好的应用GCC.目前,GCC可以用来编

详解zabbix安装部署(Server端篇)

Linux下常用的系统监控软件有Nagios.Cacti.Zabbix.Monit等,这些开源的软件,可以帮助我们更好的管理机器,在第一时间内发现,并警告系统维护人员. 今天开始研究下Zabbix,使用Zabbix的目的,是为了能够更好的监控mysql数据库服务器,并且能够生成图形报表,虽然Nagios也能够生成图形报表,但没有Zabbix这么强大. 首先,我们先来介绍下Zabblx: 一.Zabbix简介 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方

详解Linux安装GCC

为你详解Linux安装GCC方法 2009-12-11 14:05 佚名 博客园 字号:T | T 现在很多程序员都应用GCC,怎样才能更好的应用GCC.本文以在Redhat Linux安装GCC4.1.2为例(因在项目开发过程中要求使用,没有用最新的GCC版本),介绍Linux安装GCC过程 AD:51CTO学院:IT精品课程在线看! 现在很多程序员都应用GCC,怎样才能更好的应用GCC.目前,GCC可以用来编译C/C++.FORTRAN.JAVA.OBJC.ADA等语言的程序,可根据需要选择

NFS服务器原理和安装配置详解附案例演练

NFS服务器原理和安装配置详解附案例演练 1.什么是NFS服务器 NFS就是Network File System的缩写,它最大的功能就是可以通过网络,让不同的机器.不同的操作系统可以共享彼此的文件. NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利: 2.NFS挂载原理 NFS服务器的挂载结构图: 如上图示: 当我们在NFS服务器设置好一个共享目录/home/public后

Kubernetes之yaml文件详解-v1.15.x

Kubernetes之yaml文件详解 K8S 创建资源的方式 K8S有两种创建资源的方式:kubectl 命令和 yaml 配置文件. kubectl命令行:最为简单,一条命令就OK,但缺点也很明显,你并不知道这条命令背后到底做了哪些事!yaml配置文件:提供了一种让你知其然更知其所以然的方式.优势如下: 完整性:配置文件描述了一个资源的完整状态,可以很清楚地知道一个资源的创建背后究竟做了哪些事:灵活性:配置文件可以创建比命令行更复杂的结构:可维护性:配置文件提供了创建资源对象的模板,能够重复

挂钩SSDT详解附源代码

源代码下载地址:挂钩SSDT源代码 据微软所言,服务描述符表是一个由四个结构组成的数组,其中的每一个结构都是由四个双字项组成.因此,我们可以将服务描述符表表示为: typedef struct ServiceDescriptorTable { SDE ServiceDescriptor[4]; }SDT; 其中,其中的每一个服务描述符呈现出四个双字的形式,它的结构为: #pragma pack(1) typedef struct ServiceDescriptorEntry { unsigned

Docker Kubernetes 服务发现原理详解

Docker Kubernetes  服务发现原理详解 服务发现支持Service环境变量和DNS两种模式: 一.环境变量 (默认) 当一个Pod运行到Node,kubelet会为每个容器添加一组环境变量,Pod容器中程序就可以使用这些环境变量发现Service. 环境变量名格式如下: {SVCNAME}_SERVICE_HOST {SVCNAME}_SERVICE_PORT 注:其中服务名和端口名转为大写,连字符转换为下划线. 限制: 1)Pod和Service的创建顺序是有要求的,Servi

struts2.0中Action的对象生命周期详解!!(转)

原文出处:http://blog.csdn.net/wxy_g/article/details/2071662 有很多人问Struts2.0中的对象既然都是线程安全的,都不是单例模式,那么它究竟何时创建,何时销毁呢? 这个和struts2.0中的配置有关,我们来看struts.properties ### if specified, the default object factory can be overridden here ### Note: short-hand notation is

【转载】图说C++对象模型:对象内存布局详解

原文: 图说C++对象模型:对象内存布局详解 正文 回到顶部 0.前言 文章较长,而且内容相对来说比较枯燥,希望对C++对象的内存布局.虚表指针.虚基类指针等有深入了解的朋友可以慢慢看.本文的结论都在VS2013上得到验证.不同的编译器在内存布局的细节上可能有所不同.文章如果有解释不清.解释不通或疏漏的地方,恳请指出. 回到顶部 1.何为C++对象模型? 引用<深度探索C++对象模型>这本书中的话: 有两个概念可以解释C++对象模型: 语言中直接支持面向对象程序设计的部分. 对于各种支持的底层