一些必要的知识

K8S核心资源管理方法
# 任意机器(我是在21)
# 查看名称空间
~]# kubectl get namespace
~]# kubectl get ns

# 任意机器(我是在21)
~]# kubectl get all [-n default]
~]# kubectl create ns app
# 增
~]# kubectl create ns app
# 删
~]# kubectl delete namespace app
# 查
~]# kubectl get ns
# 创建deployment资源
kubectl create deployment nginx-dp --image=harbor.od.com/public/nginx:v1.7.9 -n kube-public
# 查指定空间
~]# kubectl get deploy -n kube-public
~]# kubectl get pods -o wide -n kube-public
~]# kubectl describe deployment nginx-dp -n kube-public
# 进入pod资源
21 ~]# kubectl get pods -n kube-public
21 ~]# kubectl exec -ti nginx-dp-5dfc689474-9zt9r /bin/bash -n kube-public

kubectl get deploy :这里的deploy是容器类型,deploy也是deployment

kubectl exec :进入容器

  • -t:将标准输入控制台作为容器的控制台输入
  • -i:将控制台输入发送到容器
  • 一般是连起来用-it,后面带的是get出来的容器名
  • /bin/bash:终端模式

# 删除pod资源(重启),pod控制器预期你有一个pod,所以你删掉就会重启,后面force是强制删除
21 ~]# kubectl delete pod nginx-dp-5dfc689474-gtfvv -n kube-public [--force --grace-period=0]
# 删掉deploy
21 ~]# kubectl delete deploy nginx-dp -n kube-public
# 查看
21 ~]# kubectl get all -n kube-public

管理service资源
# 21机器
# 创建
~]# kubectl create deployment nginx-dp --image=harbor.od.com/public/nginx:v1.7.9 -n kube-public
~]# kubectl get all -n kube-public
# 暴露端口
~]# kubectl expose deployment nginx-dp --port=80 -n kube-public
~]# kubectl get all -n kube-public -o wide

kubectl expose :暴露端口,后面的--port=80 指的是暴露80端口

# 去22机器
~]# curl 192.168.81.37
~]# ipvsadm -Ln

# 做成两份代理服务器,22机器
~]# kubectl scale deployment nginx-dp --replicas=2 -n kube-public
~]# ipvsadm -Ln

kubectl scale: 扩容或缩容 Deployment等中Pod数量

  • --replicas=2:把Pod数量改为2,即如果之前是1则扩容变成2,如果之前是3则缩容变成2

可以看到下面的Pod已经变成了两个,而上图是只有一个的

# 获取资源配置清单,21机器
~]# kubectl get pods -n kube-public
~]# kubectl get pods nginx-dp-5dfc689474-788xp -o yaml -n kube-public
# 解释怎么用
~]# kubectl explain service.metadata

资源清单的内容解释由于太多,这里就不做解析了,感兴趣的朋友可以网上搜下

# 声明式、21机器:
~]# vi nginx-ds-svc.yaml
apiVersion: v1
kind: Service
metadata:
  labels:
    app: nginx-ds
  name: nginx-ds
  namespace: default
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: nginx-ds
  sessionAffinity: None
  type: ClusterIP
  
~]# kubectl create -f nginx-ds-svc.yaml
# out: service/nginx-ds created
~]# kubectl get svc -n default
~]# kubectl get svc nginx-ds -o yaml

# 修改资源,在线方式:
~]# kubectl edit svc nginx-ds
~]# kubectl get svc
# 离线:删了再打开,离线修改有记录
# 删除资源,实验,按照以下方法是无法删除的~去找一下吧
# 陈述式
~]# kubectl delete -f nginx-ds
# 声明式
~]# kubectl delete -f nginx-dp-svc.yaml 

当然删不了也无所谓

下一节:通过给每台宿主机分配一个子网的方式为容器提供虚拟网络(覆盖网络),该网络中的结点可以看作通过虚拟或逻辑链路而连接起来的

我们生产上的集群宿主机/容器之间必须是互通的,因为只有互通才能形成集群,要是集群间的宿主机和容器都不互通,那就没有做集群的必要了