k8s部署pod

安装方式百度一大堆,多种多样,上网查找即可。
具体可参考:
https://www.cnblogs.com/xiao987334176/p/11899321.html
https://blog.csdn.net/pzyyyyy/article/details/104395596

pod是kubernetes的最小原子单位,pod里面可以有多个或者一个容器。如果一个容器是一条鲸鱼,那么一群鲸鱼在一起就是一个整体,叫做pod。k8s可以直接操作pod,但在实际工作中不会选择这种方式,而是以deployment的方式部署。deployment部署才能展现出k8s的威力,比如自愈和容器伸缩等功能。

pod的定义和部署是通过yaml格式的文件来完成的,我们通过提交yaml文件给api server,k8s会检查这个yaml格式的配置文件,并写入到etcd集群存储中,调度器就会选择可用节点来部署它。

pod中的容器都会共享pod的整个网络命名空间,ip地址,端口范围,路由表等。每个pod都会获取到一个ip地址,内部的容器通信通过localhost来通信,外部pod与pod通信就通过ip地址来通信。

部署pod

1.编写yaml文件:

apiVersion: v1
kind: Pod
metadata:
  name: hello-pod
  labels:
    zone: prod
    version: v1
spec: 
  containers:
    - name: hello-ctr
      image: nigelpoulton/k8sbook:latest
      ports:
      - containerPort: 8080

apiVersion:部署api组和版本。pod的组是个特殊组Core可以忽略不写,版本为v1。

kind:告诉kubernetes要部署的类型

metadata:pod信息。这里定义了pod名字name为hello-pod;pod标签labels定义了两个标签,其中zone为prod,version为v1。标签有助于集权识别部署的对象建立一种弱选择关系。还有个重要的标签namespace(命名空间),namespace会从逻辑上划分pod,相同的namespace的pod会划分到一组上,类似于网络中的vlan划分。默认的namespace是default,工作中建议划分一下比较好。

spec:这里定义了一个容器containers,名称为hello-ctr,拉取镜像为nigelpoulton/k8sbook:latest,暴露端口8080

2.通过yaml文件生成pod:

kubectl apply -f pod.yaml

在这里插入图片描述
2.pod生成了后,我们怎么查看该pod信息呢:

#查看pod
kubectl get pods

在这里插入图片描述
状态status说明hello-pod正在运行。

还有其他查看pod信息的方式,更为详细:

kubectl describe pod hello-pod  #可以查看容器id等
kubectl get pods hello-pod -o yaml

3.在pod中执行命令:

kubectl exec hello-pod -- ps x
kubectl exec hello-pod -- netstat -lnpt

登入pod中的容器:

kubectl exec -it hello-pod sh
#这里sh只是这个容器的终端,并不是固定的

在这里插入图片描述
针对容器的操作,默认是pod中的第一个容器,如果有多个容器,需要用参数–container 指定容器:

kubectl exec -it hello-pod --container hello-ctr sh

你可能感兴趣的:(运维linux,linux,k8s)