Kube-Proxy简述

参考文献:

https://ywnz.com/linuxyffq/2530.html

运行在每个节点上,监听 API Server 中服务对象的变化,再通过管理 IPtables 来实现网络的转发

Kube-Proxy 目前支持三种模式:

  • UserSpace

    • k8s v1.2 后就已经淘汰
  • IPtables
    • 目前默认方式
  • IPVS--推荐,支持7层

    • 需要安装ipvsadm、ipset 工具包和加载 ip_vs 内核模块
kube-proxy部署在hdss7-21,hdss7-22上:
首先安装ipset,ipvsadm
  1. # yum install ipset -y
    # yum -y install ipvsadm

然后在hdss7-200上申请证书:

  1. # vi /opt/certs/kube-proxy-csr.json
  1. {
  2. "CN": "system:kube-proxy",
  3. "key": {
  4. "algo": "rsa",
  5. "size": 2048
  6. },
  7. "names": [
  8. {
  9. "C": "CN",
  10. "ST": "beijing",
  11. "L": "beijing",
  12. "O": "od",
  13. "OU": "ops"
  14. }
  15. ]
  16. }
  1. # cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=client kube-proxy-csr.json |cfssl-json -bare kube-proxy-client

拷贝证书到21,22上:

  1. # cd /opt/kubernetes/server/bin/cert/
  2. # scp hdss7-200:/opt/certs/kube-proxy-client-key.pem ./
  3. # scp hdss7-200:/opt/certs/kube-proxy-client.pem ./

配置:

  1. # cd /opt/kubernetes/server/bin/conf
  1. # kubectl config set-cluster myk8s \
  2. --certificate-authority=/opt/kubernetes/server/bin/cert/ca.pem \
  3. --embed-certs=true \
  4. --server=https://10.4.7.10:7443 \
  5. --kubeconfig=kube-proxy.kubeconfig
  1. # kubectl config set-credentials kube-proxy \
  2. --client-certificate=/opt/kubernetes/server/bin/cert/kube-proxy-client.pem \
  3. --client-key=/opt/kubernetes/server/bin/cert/kube-proxy-client-key.pem \
  4. --embed-certs=true \
  5. --kubeconfig=kube-proxy.kubeconfig
  1. # kubectl config set-context myk8s-context \
  2. --cluster=myk8s \
  3. --user=kube-proxy \
  4. --kubeconfig=kube-proxy.kubeconfig
  1. # kubectl config use-context myk8s-context --kubeconfig=kube-proxy.kubeconfig

编辑开启ipvs内核的脚本:

  1. # vi /root/ipvs.sh
  2.  
  3. #!/bin/bash
  4. ipvs_mods_dir="/usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs"
  5. for i in $(ls $ipvs_mods_dir|grep -o "^[^.]*")
  6. do
  7. /sbin/modinfo -F filename $i &>/dev/null
  8. if [ $? -eq 0 ];then
  9. /sbin/modprobe $i
  10. fi
  11. done
  1. # chmod u+x /root/ipvs.sh
  1. # sh /root/ipvs.sh

编辑kube-proxy启动脚本:红色部分根据IP修改

  1. # vi /opt/kubernetes/server/bin/kube-proxy.sh
  1. #!/bin/sh
  2. ./kube-proxy \
  3. --cluster-cidr 172.7.0.0/16 \
  4. --hostname-override hdss7-21.host.com \
  5. --proxy-mode=ipvs \
  6. --ipvs-scheduler=nq \
  7. --kubeconfig ./conf/kube-proxy.kubeconfig

执行权限并创建日志存储目录:

  1. # chmod +x /opt/kubernetes/server/bin/kube-proxy.sh
  1. # mkdir -p /data/logs/kubernetes/kube-proxy

编辑supervisord启动文件:红色部分根据IP修改

  1. # vi /etc/supervisord.d/kube-proxy.ini
  1. [program:kube-proxy-7-21]
  2. command=/opt/kubernetes/server/bin/kube-proxy.sh ; the program (relative uses PATH, can take args)
  3. numprocs=1 ; number of processes copies to start (def 1)
  4. directory=/opt/kubernetes/server/bin ; directory to cwd to before exec (def no cwd)
  5. autostart=true ; start at supervisord start (default: true)
  6. autorestart=true ; retstart at unexpected quit (default: true)
  7. startsecs=30 ; number of secs prog must stay running (def. 1)
  8. startretries=3 ; max # of serial start failures (default 3)
  9. exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
  10. stopsignal=QUIT ; signal used to kill process (default TERM)
  11. stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
  12. user=root ; setuid to this UNIX account to run the program
  13. redirect_stderr=true ; redirect proc stderr to stdout (default false)
  14. stdout_logfile=/data/logs/kubernetes/kube-proxy/proxy.stdout.log ; stderr log path, NONE for none; default AUTO
  15. stdout_logfile_maxbytes=64MB ; max # logfile bytes b4 rotation (default 50MB)
  16. stdout_logfile_backups=4 ; # of stdout logfile backups (default 10)
  17. stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
  18. stdout_events_enabled=false ; emit events on stdout writes (default false)

更新supervisord:

  1. # supervisorctl update
  2. # supervisorctl status

创建nginx-ds pod:(21上执行就行)

  1. # vi /root/nginx-ds.yaml
  1. apiVersion: extensions/v1beta1
  2. kind: DaemonSet
  3. metadata:
  4. name: nginx-ds
  5. spec:
  6. template:
  7. metadata:
  8. labels:
  9. app: nginx-ds
  10. spec:
  11. containers:
  12. - name: my-nginx
  13. image: harbor.od.com/public/nginx:v1.7.9
  14. ports:
  15. - containerPort: 80
  1. # kubectl create -f nginx-ds.yaml

查看:

  1. # kubectl get pods

最后验证集群状态:

etcd controller-manager scheduler状态:

  1. #kubectl get cs

nodes状态:

  1. # kubectl get nodes

pods状态:

  1. #kubectl get pods

至此,kubernets的核心组件已经安装部署完成,接下来会部署附加组件。

二进制安装kubernetes(六) kube-proxy组件安装的更多相关文章

  1. VS2008安装“Visual Studio Web 创作组件”安装失败的解决方法

    VS2008安装“Visual Studio Web 创作组件”安装失败的解决方法 今天在单位电脑安装VS2008,当安装到“Visual Studio Web 创作组件”时出现错误. 准备手动安装 ...

  2. Dynamics CRM安装教程六:CRM产品安装

    接下来就要开始进行CRM产品的安装了 首先要安装IIS,以及.NET FrameWork4.6及相关功能 打开服务器管理器,在添加角色功能向导中勾选IIS,点击添加功能 默认下一步 选择角色服务这里的 ...

  3. Centos7上安装Kubernetes集群部署docker

    一.安装前准备1.操作系统详情需要三台主机,都最小化安装 centos7.3,并update到最新 [root@master ~]# (Core) 角色 主机名 IPMaster master 192 ...

  4. 二进制安装 kubernetes 1.12(四) - 部署 Node 节点组件

    在 master 上操作 vi /etc/profile export PATH=/opt/kubernetes/bin:$PATH source /etc/profile 将 kubelet-boo ...

  5. 二进制安装kubernetes(一) 环境准备及etcd组件安装及etcd管理软件etcdkeeper安装

    实验环境: 架构图: 主机环境: 操作系统:因docker对内核需要,本次部署操作系统全部采用centos7.6(需要内核3.8以上) VM :2C 2G 50G * 5  PS:因后面实验需要向k8 ...

  6. Centos7 二进制安装 Kubernetes 1.13

    目录 1.目录 1.1.什么是 Kubernetes? 1.2.Kubernetes 有哪些优势? 2.环境准备 2.1.网络配置 2.2.更改 HOSTNAME 2.3.配置ssh免密码登录登录 2 ...

  7. 二进制方式安装Kubernetes 1.14.2高可用详细步骤

    00.组件版本和配置策略 组件版本 Kubernetes 1.14.2 Docker 18.09.6-ce Etcd 3.3.13 Flanneld 0.11.0 插件: Coredns Dashbo ...

  8. Android实训案例(六)——四大组件之一BroadcastReceiver的基本使用,拨号,短信,SD卡,开机,应用安装卸载监听

    Android实训案例(六)--四大组件之一BroadcastReceiver的基本使用,拨号,短信,SD卡,开机,应用安装卸载监听 Android中四大组件的使用时重中之重,我这个阶段也不奢望能把他 ...

  9. CentOS 7.5 使用 yum 安装 Kubernetes 集群(二)

    一.安装方式介绍 1.yum 安装 目前CentOS官方已经把Kubernetes源放入到自己的默认 extras 仓库里面,使用 yum 安装,好处是简单,坏处也很明显,需要官方更新 yum 源才能 ...

随机推荐

  1. WPF NET5 Prism8.0的升级指南

    前言 ​ 曾经我以学习的目的写了关于在.NET Core3.1使用Prism的系列文章.NET Core 3 WPF MVVM框架 Prism系列文章索引,也谢谢大家的支持,事实上当初的版本则是Pri ...

  2. 【老孟Flutter】如何提高Flutter应用程序的性能

    首先 Flutter 是一个非常高性能的框架,因此大多时候不需要开发者做出特殊的处理,只需要避免常见的性能问题即可获得高性能的应用程序. 重建最小化原则 在调用 setState() 方法重建组件时, ...

  3. Linux TCP漏洞 CVE-2019-11477 CentOS7 修复方法

    CVE-2019-11477漏洞简单介绍 https://cert.360.cn/warning/detail?id=27d0c6b825c75d8486c446556b9c9b68 RedHat用户 ...

  4. 关于springboot项目通过jar包启动之后无法读取项目根路径静态资源

    在一次项目开发过程中,项目根路径下存放了一张图片,生成二维码的时候调用了该图片作为二维码的logo,在windows环境下二维码可以正常生成,但是部署到生产测试环境之后二维码生成报错,FileNotF ...

  5. 理解js闭包9大使用场景

    1.返回值(最常用) //1.返回值 最常用的 function fn(){ var name="hello"; return function(){ return name; } ...

  6. Spring 是如何解决循环依赖的?

    前言 相信很多小伙伴在工作中都会遇到循环依赖,不过大多数它是这样显示的: 还会提示这么一句: Requested bean is currently in creation: Is there an ...

  7. 记一次Nginx反向代理500的排查记录

    今天公司项目遇到一个奇怪的问题,记录一下. 注: 数据已经过脱敏处理,未暴露公司具体的IP等数据. TLDR; 项目简单介绍 用 Vue + ElementUI 实现的后台项目(以下简称:a-proj ...

  8. git database 数据库 平面文件 Git 同其他系统的重要区别 Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异 Git 的设计哲学

    小结: 1.如果要浏览项目的历史更新摘要,Git 不用跑到外面的服务器上去取数据回来 2.注意 git clone  应指定版本,它复制的这个版本的全部历史信息: 各个分支  git init 数据库 ...

  9. 深入理解SPI机制-服务发现机制

    https://www.jianshu.com/p/3a3edbcd8f24 SPI ,全称为 Service Provider Interface,是一种服务发现机制.它通过在ClassPath路径 ...

  10. Python中,单引号,双引号,三引号的使用区别与原因

    先说1双引号与3个双引号的区别,双引号所表示的字符串通常要写成一行如:s1 = "hello,world"如果要写成多行,那么就要使用/ ("连行符")吧,如s ...