播放记录

k8s基本使用入门-使用Pod

博客术业专攻云计算kubernetesk8s基本使用入门-使用Pod 2019年08月29日 11:24:44

注:此文档根据慕课网k8s视频教程学习整理而成。

1,创建一个nginx的pod。

定义了一个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)。

2,进入到pod。

如何进入到这个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的选项进行指定。

3,查看pod详细信息。

查看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:          

4,访问pod。

现在看到这个pod在集群中的ip是10.244.1.18,那么我们访问一下:

[root@master pod-basic]$curl 10.244.1.18



Welcome 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:8080



Welcome 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.

发现已经可以了。但是刚刚那个映射的时候,可以看到映射输出在前台不会退出,而一旦退出之后,则这个映射又消失了,怎样才能恒久的映射呢,这个后边再说。


转载:http://www.eryajf.net/2118.html

© 2018 www.qingketang.net 鄂ICP备18027844号-1

武汉快勤科技有限公司 13554402156 武汉市东湖新技术开发区关山二路特一号国际企业中心6幢4层7号

微信登录

扫码关注,全站教程免费播放

发表评论 X

登录成功
开通VIP

订单金额:

支付金额:

支付方式: