kubernetes入门(中)

部署dashboard

 

kubernetes仪表板是kubernetes集群通用、基于web的UI。它允许用户管理集群中允许的应用程序并对其进行故障排除,以及管理集群本身。

#下载k8s yaml文件
[root@master01 ~]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc5/aio/deploy/recommended.yaml
#修改网络配置信息
[root@master01 ~]# vi recommended.yaml

在45行左右的位置添加 

type: NodePort

 创建资源,访问测试

[root@master01 ~]# kubectl create -f recommended.yaml

#检查状态
[root@master01 ~]# kubectl -n kubernetes-dashboard get po
NAME                                         READY   STATUS    RESTARTS   AGE
dashboard-metrics-scraper-7b8b58dc8b-2fc7d   1/1     Running   0          115s
kubernetes-dashboard-866f987876-fgw4h        1/1     Running   0          115s

#查看所有pod
[root@master01 ~]# kubectl get po -o wide -A --watch

#容器正确运行后,测试访问,查看service资源
[root@master01 ~]# kubectl -n kubernetes-dashboard get svc
NAME                        TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.97.28.219   <none>        8000/TCP        12m
kubernetes-dashboard        NodePort    10.103.122.5   <none>        443:32368/TCP   12m

#可以查看到dashboard暴露的端口是443:32368

 此时宿主机可以改端口

[root@master01 ~]# netstat -tunlp|grep 32368
tcp6       0      0 :::32368                :::*                    LISTEN      3786/kube-proxy     

注意访问必须是https协议 ,注意使用火狐浏览        器登录,其他浏览器不信任证书

https://192.168.59.128:32368/

 创建账户访问dashboard

[root@master01 ~]# vi admin.yaml

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: admin
  annotations:
    rbac.authorization.kubernetes.io/autoupdate: "true"
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
  name: admin
  namespace: kubernetes-dashboard

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin
  namespace: kubernetes-dashboard
[root@master01 ~]# kubectl create -f admin.yaml
clusterrolebinding.rbac.authorization.k8s.io/admin created
serviceaccount/admin created

#获取令牌,用于登录dashboard
[root@master01 ~]# kubectl -n kubernetes-dashboard get secret |grep admin-token
admin-token-9qsd4                  kubernetes.io/service-account-token   3      2m13s

根据如下命令,获取token,注意修改secret的名字

[root@master01 ~]# kubectl -n kubernetes-dashboard get secret admin-token-9qsd4 -o jsonpath={.data.token}|base64 -d

 将生成的token填入dashboard

kubectl命令

kubectl get 查询资源

[root@master01 ~]# kubectl get node
NAME       STATUS   ROLES    AGE   VERSION
master01   Ready    master   10d   v1.16.2
node01     Ready    <none>   10d   v1.16.2
note02     Ready    <none>   10d   v1.16.2
[root@master01 ~]# kubectl get deployment
NAME          READY   UP-TO-DATE   AVAILABLE   AGE
learn-nginx   1/1     1            1           10d
[root@master01 ~]# kubectl get replicaset
NAME                     DESIRED   CURRENT   READY   AGE
learn-nginx-579f654956   1         1         1       10d

 kubectl run 创建容器

kubectl run 资源(deploy)名称 -i -t --image=镜像名称:标签

kubectl run add-nginx -i -t --image=nginx:alpine

安装kubernetes网络组件-Calico

        Calico是一种容器之间互通的网络方案。在虚拟化平台中,比如OpenStack,docker等都需要实现workloads之间互联,但同时也需要对容器做隔离控制。而在多数的虚拟化平台实现中,通常都使用二层隔离技术来实现容器的网络,这些网络技术有一些弊端,比如需依赖VLAN,bridge和隧道等技术,其中bridge带来复杂性,VLAN隔离和tunnel隧道在拆包或者加包头市,则消耗更多的资源并对物理环境也有要求。随着网络规模的增大,整体会更加复杂。

        Calico 把主机当做Internet中的路由器,使用BGP同步路由,并使用iptables来做安全访问策略。

        设计思路:Calico不使用隧道或NAT来实现转发,而是巧妙地把所有的二三层流量转换成三层流量,并通过主机上路由配置完成夸主机转发。

k8s 组网方案对比
        flannel方案︰需要在每个节点上把发向容器的数据包进行封装后,再用隧道将封装后的数据包发送到运行着目标Pod的node节点上。目标node节点再负责去掉封装,将去除封装的数据包发送到目标Pod 上。数据通信性能则大受影响。
        Overlay方案∶在下层主机网络的上层,基于隧道封装机制,搭建层叠网络,实现跨主机的通信,Overlay无疑是架构最简单清晰的网络实现机制,但数据通信性能则大受影响。
        Calico方案:在k8s多个网路解决方案中选择了延迟表现最好的-calico方案。

        总结:Flannel网络非常类似于Docker网络的Overlay驱动,基于二层的层叠网络。

        层叠网络的优势:
        1.对底层网络依赖较少,不管底层是物理网络还是虚拟网络,对层叠网络的配置管理影响较少;

        ⒉.配置简单,逻辑清晰,易于理解和学习,非常适用于开发测试等对网络性能要求不高的场景。

        层叠网络的劣势:,
        1.网络封装是一种传输开销,对网络性能会有影响,不适用于对网络性能要求高的生产场景;

        2由于对底层网络结构缺乏了解,无法做到真正有效的流量工程控制,也会对网络性能产生影响;3.某些情况下也不能完全做到与下层网络无关,例如隧道封装会对网络的MTU限制产生影响。

Calico是非层叠网络

Calico 网络的优势:
        1.没有隧道封装的网络开销;
        ⒉.相比于通过Overlay构成的大二层层叠网络,用iBGP构成的扁平三层网络扩展模式更符合传统IP网络的分布式结构;·
        3.不会对物理层网络的二层参数如MTU引入新的要求。

Calico 网络的劣势:
        1.最大的问题是不容易支持多租户,由于没有封装,所有的虚拟机或者容器只能通过真实的IP来区分自己,这就要求所有租户的虚拟机或容器统一分配一个地址空间;而在典型的支持多租户的网络环境中,每个租户可以分配自己的私有网络地址,租户之间即使地址相同也不会有冲突;
        ⒉.不容易与其他基于主机路由的网络应用集成。·

公司自用的话calico一般比较合适,公共的可以选择flannel。

安装Calico网络组件

使用yaml安装,下载calico.yaml

百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间https://pan.baidu.com/s/1V71Q7nylR8f0jwOMG53Scg?pwd=aq0t

#安装
kubectl apply -f /root/calico.yaml
#查看
kubectl get pod --all-namespaces

k8s调度实践演示

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx
          resources:
            limits:
              memory: 1Gi
              cpu: 1
            requests:
              memory: 256Mi
              cpu: 100m                    #1000m=1个cpu   100m为0.1个cpu

requests:在调度器调度的时候会解读pod的requests,requests的语义就是说最少需要这么多资源,如果节点不满足就不会调度过去。limits是给cgroup用的,表示最大占用多少资源,由cgroup来进行配额。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值