博客 > 术业专攻> 云计算> kubernetes> k8s基本使用入门-使用Pod 2019年08月29日 11:24:44
注:此文档根据慕课网k8s视频教程学习整理而成。
定义了一个nginx.yaml的文件:
[root@master pod-basic]$cat pod_nginx.yml apiVersion: v1 kind: Pod metadata: name: nginx labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80
其中定义了版本,类型,名称,镜像,端口等等。
现在来启动它:
[root@master pod-basic]$kubectl create -f pod_nginx.yml pod "nginx" created
简单查看一下状态:
[root@master pod-basic]$kubectl get pod NAME READY STATUS RESTARTS AGE nginx 1/1 Running 0 25s
可以看到命名为nginx的pod起来了,1/1表示只有一个。
查看详细状态:
[root@master pod-basic]$kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE nginx 1/1 Running 0 1m 10.244.1.18 node
又能看到pod的ip(10.244.1.18),以及所被分配到的节点(node)。
如何进入到这个pod呢。
[root@master pod-basic]$kubectl exec -it nginx bash root@nginx:/# ls bin dev home lib64 mnt proc run srv tmp var boot etc lib media opt root sbin sys usr
这样以来就直接进入到pod对应的容器里边来了,如果这个pod里边含有多个容器,那么默认是进入到第一个容器当中,如果想要进入到其他容器,那么看下命令帮助信息:
[root @ master pod-basic] $ kubectl exec --help 在容器中执行命令。 例子: #默认情况下,使用第一个容器从pod 123456-7890中运行'date'输出 kubectl exec 123456-7890 date #从pod 123456-7890获取ruby-container中运行'date'的输出 kubectl exec 123456-7890 -cruby-container日期 #切换到原始终端模式,将stdin发送到pod 123456-7890的ruby-container中的'bash' #并将stdout / stderr从'bash'发送回客户端 kubectl exec 123456-7890 -c ruby-container -i -t - bash -il #从pod 123456-7890的第一个容器中列出/ usr的内容,并按修改时间排序。 #如果要在pod中执行的命令有任何共同的标志(例如-i), #您必须使用两个破折号( - )来分隔命令的标志/参数。 #另请注意,不要用引号括起命令及其flags / arguments #除非你正常执行它(即,执行ls -t / usr,而不是“ls -t / usr”)。 kubectl exec 123456-7890 -i -t - ls -t / usr 选项: -c, - container ='':容器名称。如果省略,将选择pod中的第一个容器 -p, - pod ='':Pod名称 -i, - stdin = false:将stdin传递给容器 -t, - t = false:Stdin是TTY 用法: kubectl exec POD [-c CONTAINER] - COMMAND [args ...] [options] 使用“kubectl options”获取全局命令行选项列表(适用于所有命令)。 可以通过-c的选项进行指定。
查看pod的详细信息:
[root@master pod-basic]$kubectl describe pods nginx Name: nginx Namespace: default Node: node/192.168.106.5 Start Time: Sat, 10 Nov 2018 14:40:33 +0800 Labels: app=nginx Annotations:Status: Running IP: `10.244.1.18`,那么我们访问一下: Containers: nginx: Container ID: docker://5f35902dbaaf035fa420bab8a2a409660c4ed2b2753a7d2fc298b9d7971a0d33 Image: nginx Image ID: docker-pullable://nginx@sha256:d59a1aa7866258751a261bae525a1842c7ff0662d4f34a355d5f36826abc0341 Port: 80/TCP Host Port: 0/TCP State: Running Started: Sat, 10 Nov 2018 14:40:55 +0800 Ready: True Restart Count: 0 Environment: Mounts: /var/run/secrets/kubernetes.io/serviceaccount from default-token-rp4h8 (ro) Conditions: Type Status Initialized True Ready True PodScheduled True Volumes: default-token-rp4h8: Type: Secret (a volume populated by a Secret) SecretName: default-token-rp4h8 Optional: false QoS Class: BestEffort Node-Selectors: Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s node.kubernetes.io/unreachable:NoExecute for 300s Events:
现在看到这个pod在集群中的ip是10.244.1.18
,那么我们访问一下:
[root@master pod-basic]$curl 10.244.1.18Welcome to nginx! Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.Thank you for using nginx.
发现在集群当中访问都是可以的,但是我们这个nginx部署之后,是想要让外部人员能够访问的,那么这个时候就要用的kubectl的port-forward
了。
先看看介绍:
[root @ master pod-basic] $ kubectl port-forward --help 将一个或多个本地端口转发到pod。 使用资源类型/名称(例如deployment / mydeployment)来选择pod。如果省略,资源类型默认为“pod”。 如果有多个符合条件的广告连播,则会自动选择广告连播。转发会话结束时 选定的pod终止,并且需要重新运行该命令才能恢复转发。 例子: #在本地侦听端口5000和6000,将数据转发到容器中的端口5000和6000 kubectl port-forward pod / mypod 5000 6000 #在本地侦听端口5000和6000,将数据转发到/从端口5000和6000中选择的端口 部署 kubectl port-forward deployment / mydeployment 5000 6000 #在本地端口8888上侦听,在pod中转发到5000 kubectl port-forward pod / mypod 8888:5000 #在本地随机端口收听,转发到pod中的5000 kubectl port-forward pod / mypod:5000 选项: --pod-running-timeout = 1m0s:等待至少一个的时间长度(如5s,2m或3h,大于零) pod正在运行 用法: kubectl port-forward TYPE / NAME [LOCAL_PORT:] REMOTE_PORT [... [LOCAL_PORT_N:] REMOTE_PORT_N] [options] 使用“kubectl options”获取全局命令行选项列表(适用于所有命令)。
我们可以通过这个指令将pod里边的端口映射到主机上来,方法如下:
[root@master pod-basic]$kubectl port-forward nginx 8080:80 Forwarding from 127.0.0.1:8080 -> 80 Forwarding from [::1]:8080 -> 80
将pod里边的80端口映射到主机的8080端口,那么现在去访问一下看看:
[root@master ~]$curl 127.0.0.1:8080Welcome to nginx! Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.Thank you for using nginx.
发现已经可以了。但是刚刚那个映射的时候,可以看到映射输出在前台不会退出,而一旦退出之后,则这个映射又消失了,怎样才能恒久的映射呢,这个后边再说。
© 2018 www.qingketang.net 鄂ICP备18027844号-1
武汉快勤科技有限公司 13554402156 武汉市东湖新技术开发区关山二路特一号国际企业中心6幢4层7号
扫码关注,全站教程免费播放
订单金额:
支付金额:
支付方式: