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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
###
# 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地址

1
KUBELET_ADDRESSES= "--machines= 192.168.6.109"

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

1
2
#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

1
"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

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

vim /etc/kubernetes/config

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

vim /etc/kubernetes/kubelet

1
2
3
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容器组成的容器组

K8S.jpg

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

1.Pod应用实例

vim obj.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{
   "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

get pod.png

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


4.查看Pod运行日志

kubectl logs podtest master1/master2


5.查看创建pod的细节

kubectl describe pod podtest


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

docker ps 

docker ps.png

可以看到一共创建了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,节点使用情况


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值