博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二进制安装kubernetes1.14.1初次尝试-02
阅读量:5971 次
发布时间:2019-06-19

本文共 8230 字,大约阅读时间需要 27 分钟。

查看资源类型

二进制安装kubernetes1.14.1初次尝试-02

查看多少个控制器

kubectl  get deploy 查看多少个控制器 = kubectl  get deployments

创建名称空间资源  namespace数据集群资源kubectl create -h[root@k8s-master01 .ssh]#  kubectl  create namespace develop #创建develop名称资源空间namespace/develop created[root@k8s-master01 .ssh]#  kubectl  create namespace testingnamespace/testing created[root@k8s-master01 .ssh]#  kubectl  create namespace prod[root@k8s-master01 .ssh]#  kubectl  get ns #查看资源类型

删除名称空间

[root@k8s-master01 .ssh]# kubectl  delete ns prod= [root@k8s-master01 .ssh]# kubectl  delete ns/testing

查看空间信息

[root@k8s-master01 .ssh]# kubectl  get  ns[root@k8s-master01 .ssh]# kubectl  get  ns/testing[root@k8s-master01 .ssh]# kubectl  get ns/develop -o yaml 输出yaml信息[root@k8s-master01 .ssh]# kubectl  get ns/develop -o wide 长格式展示[root@k8s-master01 .ssh]# kubectl  get ns/develop -o json 输出json格式[root@k8s-master01 .ssh]# kubectl  get ns/default -o yaml

输出名称空间的描述信息

[root@k8s-master01 .ssh]# kubectl  describe ns/default #当前状态信息

创建一个容器镜像

[root@k8s-master01 .ssh]# kubectl  create deployment nginx-dep --image=ngnx:1.14-alpine= [root@k8s-master01 .ssh]# kubectl  create deploy nginx-dep --image=ngnx:1.14-alpine

显示所有资源

[root@k8s-master01 .ssh]# kubectl  get all

显示pods

[root@k8s-master01 .ssh]# kubectl  get pods

删除pods

kubectl  delete pods/nginx-7db9fccd9b-b7cxl 删除会自动创建一个新的pods强制删除: 需要删除对应的deploy [root@k8s-master01 .ssh]# kubectl  get deployments && [root@k8s-master01 .ssh]# kubectl  delete  deployments

进入pods

kubectl  exec -it pods

创建一个nginx的pods

请求方式 clients->serverice->pods

防火墙: DNAT -d 192.168.1.2 --dport 80 -json DNAT --to-destination 192.168.1.2:80
创建:一个service
[root@k8s-master01 ~]# kubectl create service clusterip -h查看帮助

创建一个nginx pod
[root@k8s-master01 ~]# kubectl  create deployment nginx-dep --image=nginx
查看pods
kubectl  get pods -o wide  #详细信息kubectl  get pods -o json   #json格式展示信息kubectl  get pods -o yaml  #yaml信息

二进制安装kubernetes1.14.1初次尝试-02

访问测试

二进制安装kubernetes1.14.1初次尝试-02

为nginx-dep创建一个service

service作为负载均衡和代理后端服务器,作为一个请求接口  相当于ADNAT -d --port 代理到后端的pods(由于当你删除一个pod的时候,kube会给你自动创建一个新的pod,但是ip地址可能是改变的,设置一个service会自动发现你这新的pod 并负载到新的pod)[root@k8s-master01 ~]# kubectl  create service clusterip nginx-dep --tcp=80:80

二进制安装kubernetes1.14.1初次尝试-02

二进制安装kubernetes1.14.1初次尝试-02

扩缩容 pods

[root@k8s-master01 ~]# kubectl  scale -h     例如: 我扩充nginx-dep为三个[root@k8s-master01 ~]# kubectl  get deploy -o wide     NAME        READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES   SELECTOR     nginx       3/3     3            3           26h   nginx        nginx    run=nginx     nginx-dep   1/1     1            1           25h   nginx        nginx    app=nginx-dep[root@k8s-master01 ~]# kubectl  scale  --replicas=3 deployment nginx-dep     deployment.extensions/nginx-dep scaled[root@k8s-master01 ~]# kubectl  get deploy -o wide          NAME        READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES   SELECTOR          nginx       3/3     3            3           26h   nginx        nginx    run=nginx          nginx-dep   3/3     3            3           25h   nginx        nginx    app=nginx-dep

二进制安装kubernetes1.14.1初次尝试-02

这时候:service 负载应该也变更为 三个节点

二进制安装kubernetes1.14.1初次尝试-02

创建nodeport的service

[root@k8s-master01 cfg]# kubectl  create service nodeport nginx --tcp=88:80

二进制安装kubernetes1.14.1初次尝试-02

这样可以访问任何一个宿主机 实现访问对用的pods

二进制安装kubernetes1.14.1初次尝试-02

也可以访问service实现负载访问pods(master节点没有添加为node 所以只能到个个node节点访问)

二进制安装kubernetes1.14.1初次尝试-02

k8s管理pods方式

deployment->nginx deploy -> nginx pods ->services -> nginx services -> client
会自动生成iptables的nat规则
同时 会在iptables创建NAT的规则  [root@k8s-node01 ~]# iptables -t nat -vnL

api资源类型

二进制安装kubernetes1.14.1初次尝试-02

.

二进制安装kubernetes1.14.1初次尝试-02

上图可以看出 所有的操作都需PAI server交互 所有的请求 操作都需要经过API server,能操作etcd数据的只有API server服务器,其他组件是不能直接操作etcd的, 整个集群的所有定义的状态信息和切换信息都在etcd存储 所以etcd一旦崩溃,所有的数据就会丢失,所以etcd要定期备份和高可用。

apiserver

[root@k8s-master01 cfg]# kubectl  api-versions #查看api-version版本 多个版本可以共存 api接口中可以多个组合为一个逻辑组合,每个组合可以单独进化

资源对象管理方式

陈述式命令: run expose  delete和get等命令,他们可以指直接用于k8s系统的活动对象,简单易用,但不支持代码复用,修改复审以及审核日志等功能。要依赖资源配置文件中,也被称之为资源清单    陈述式对象配置  生命式对象配置     例子: 创建一个ns的yaml文件     可以根据:kubectl get ns default -o yaml --export 显示yaml查看     [root@k8s-master01 ~]# cat develop_ns.yaml    apiVersion: v1    kind: Namespace    metadata:      creationTimestamp: null      name: develop   [root@k8s-master01 ~]# kubectl  create -f develop_ns.yaml  #指定yaml创建ns

二进制安装kubernetes1.14.1初次尝试-02

.
[root@k8s-master01 ~]# kubectl  apply  -f develop_ns.yaml   #允许重复执行  可以指定整个目录创建    = [root@k8s-master01 ~]# kubectl  create -f develop_ns.yaml  #重复执行会报错  不可以指定整个目录创建    创建一个pods的配置文件    [root@k8s-master01 ~]# kubectl  get pods nginx-7db9fccd9b-dq9wz -o yaml --export > nginx_pods.yaml    使用上面的当作模板,进行修改为适合自己的yaml文件[root@k8s-master01 ~]# cat nginx_pods.yaml    apiVersion: v1   kind: Pod   metadata:     creationTimestamp: null     name: pod-demo     namespace:  develop   spec:     containers:     - image: nginx       imagePullPolicy: IfNotPresent       name: nginx-demo       resources: {}     dnsPolicy: ClusterFirst     enableServiceLinks: true     priority: 0     restartPolicy: Always     schedulerName: default-scheduler     securityContext: {}
查看当前新建立的pods
[root@k8s-master01 ~]# kubectl  apply -f nginx_pods.yaml        pod/pod-demo created [root@k8s-master01 ~]# kubectl  get pods -n develop -o wide      NAME       READY   STATUS    RESTARTS   AGE     IP            NODE           NOMINATED NODE   READINESS GATES      pod-demo   1/1     Running   0          2m44s   172.17.89.4   192.168.1.73   

查看各个yaml配置清单

[root@k8s-master01 ~]# kubectl  explain pods|svc|ns.....

查看各个yaml清单的子模块

[root@k8s-master01 ~]# kubectl  explain pods.metadata

自动一个pods的yaml

[root@k8s-master01 ~]# cat create_pods.yaml        apiVersion: v1       kind:  Pod       metadata:         name: pod-demo         namespace: prod         spec:         containers:         - name: centos           image: centos:latest           imagePullPolicy: IfNotPresentNotPresent           command: ["/bin/sh","-c","sleep 10"],"-c","sleep 10"]         - name: create-pods2           image: nginx              command:     - /bin/sh     - -c     - "sleep 100"和下面的command效果一样             command: ["/bin/sh","-c","sleep 10"]    [root@k8s-master01 ~]# kubectl  apply -f create_pods.yaml       [root@k8s-master01 ~]#  kubectl  get pods -n prod -o wide NAME       READY   STATUS    RESTARTS   AGE   IP            NODE           NOMINATED NODE   READINESS GATES pod-demo   2/2     Running   2          56s   172.17.89.5   192.168.1.73   

进入容器访问

默认访问 启动的
[root@k8s-master01 ~]#  kubectl  exec pod-demo   -n prod -it -- /bin/bash
指定访问容器pods
[root@k8s-master01 ~]#  kubectl  exec pod-demo -c bbos  -n prod -it -- /bin/bash   -c, --container='': Container name. If omitted, the first container in the pod will be chosen   -i, --stdin=false: Pass stdin to the container   -t, --tty=false: Stdin is a TTY

pod配置清单

[root@k8s-master01 ~]# kubectl  explain pods.metadata            [root@k8s-master01 ~]# kubectl  explain pods.spec         apiVersion: v1         kind:  Pod         metadata:           name: centos-demo           namespace: prod         spec:           containers:           - name: nginx-demo             image: nginx           - name: centos             image: ansible/centos7-ansible             imagePullPolicy: IfNotPresent             resources: []             #容器性能限制,cpu,内存等等             command: ["/bin/sh","-c","sleep 10"]           hostNetwork: true            #共享宿主机的网络ip,会在宿主机启动监听端口,可以直接访问           restartPolicy: true            #自动重启           priority: 0                         # 设置权重           nodeName:                     # 指定node节点存放容器            dnsPolicy: ClusterFirst    # Pod 内预设的 DNS 配置 四个结果:                    None                       #None 表示会清除 Pod 预设的 DNS 配置,当 dnsPolicy 设置成这个值之后,Kubernetes 不会为 Pod 预先载入任何自身逻辑判断得到的 DNS 配置                    Default                     #Default 表示 Pod 里面的 DNS 配置继承了宿主机上的 DNS 配置                    ClusterFirst              # 相对于上述的 Default,ClusterFirst 是完全相反的操作,它会预先把  kube-dns(或 CoreDNS)的信息当作预设参数写入到该 Pod 内的 DNS 配置。                    ClusterFirstHostNet  #继承宿主机的           enableServiceLinks: true           schedulerName: default-scheduler  #scheduler名字

设置 hostNetwork

[root@k8s-master01 ~]# cat nginx_pods.yaml      apiVersion: v1     kind: Pod     metadata:       creationTimestamp: null       name: pod-demo1       namespace:  prod     spec:       containers:       - image: nginx         imagePullPolicy: IfNotPresent         name: nginx-1       hostNetwork: true

二进制安装kubernetes1.14.1初次尝试-02

访问测试
二进制安装kubernetes1.14.1初次尝试-02

转载于:https://blog.51cto.com/9025736/2397755

你可能感兴趣的文章
iOS uuchart 用法
查看>>
c# 多线程 调用带参数函数
查看>>
The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar
查看>>
redis主从配置<转>
查看>>
karma如何与测试框架合作2之webpack
查看>>
10分钟搭建MySQL Binlog分析+可视化方案
查看>>
vmware虚拟机配置串口
查看>>
小型自动化运维--expect脚本之传递函数
查看>>
Nsrp实现juniper防火墙的高可用性【HA】!
查看>>
oracle11g 安装在rhel5.0笔记
查看>>
解决Lync 2013演示PPT提示证书问题的多种方法
查看>>
bootloader功能介绍/时钟初始化设置/串口工作原理/内存工作原理/NandFlash工作原理...
查看>>
C++ 构造函数与析构函数
查看>>
ssh免密码登录
查看>>
Linux下Django环境安装
查看>>
如何在指定的内容中找出指定字符串的个数
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
Spring MVC请求处理流程分析
查看>>
Web应用工作原理、动态网页技术
查看>>