二进制安装kubernetes(六) kube-proxy组件安装
Kube-Proxy简述
参考文献:
https://ywnz.com/linuxyffq/2530.html
运行在每个节点上,监听 API Server 中服务对象的变化,再通过管理 IPtables 来实现网络的转发
Kube-Proxy 目前支持三种模式:
- UserSpace
- k8s v1.2 后就已经淘汰
- IPtables
- 目前默认方式
- IPVS--推荐,支持7层
- 需要安装ipvsadm、ipset 工具包和加载 ip_vs 内核模块
- # yum install ipset -y
# yum -y install ipvsadm
然后在hdss7-200上申请证书:
- # vi /opt/certs/kube-proxy-csr.json
- {
- "CN": "system:kube-proxy",
- "key": {
- "algo": "rsa",
- "size": 2048
- },
- "names": [
- {
- "C": "CN",
- "ST": "beijing",
- "L": "beijing",
- "O": "od",
- "OU": "ops"
- }
- ]
- }
- # 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上:
- # cd /opt/kubernetes/server/bin/cert/
- # scp hdss7-200:/opt/certs/kube-proxy-client-key.pem ./
- # scp hdss7-200:/opt/certs/kube-proxy-client.pem ./
配置:
- # cd /opt/kubernetes/server/bin/conf
- # kubectl config set-cluster myk8s \
- --certificate-authority=/opt/kubernetes/server/bin/cert/ca.pem \
- --embed-certs=true \
- --server=https://10.4.7.10:7443 \
- --kubeconfig=kube-proxy.kubeconfig
- # kubectl config set-credentials kube-proxy \
- --client-certificate=/opt/kubernetes/server/bin/cert/kube-proxy-client.pem \
- --client-key=/opt/kubernetes/server/bin/cert/kube-proxy-client-key.pem \
- --embed-certs=true \
- --kubeconfig=kube-proxy.kubeconfig
- # kubectl config set-context myk8s-context \
- --cluster=myk8s \
- --user=kube-proxy \
- --kubeconfig=kube-proxy.kubeconfig
- # kubectl config use-context myk8s-context --kubeconfig=kube-proxy.kubeconfig
编辑开启ipvs内核的脚本:
- # vi /root/ipvs.sh
- #!/bin/bash
- ipvs_mods_dir="/usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs"
- for i in $(ls $ipvs_mods_dir|grep -o "^[^.]*")
- do
- /sbin/modinfo -F filename $i &>/dev/null
- if [ $? -eq 0 ];then
- /sbin/modprobe $i
- fi
- done
- # chmod u+x /root/ipvs.sh
- # sh /root/ipvs.sh
编辑kube-proxy启动脚本:红色部分根据IP修改
- # vi /opt/kubernetes/server/bin/kube-proxy.sh
- #!/bin/sh
- ./kube-proxy \
- --cluster-cidr 172.7.0.0/16 \
- --hostname-override hdss7-21.host.com \
- --proxy-mode=ipvs \
- --ipvs-scheduler=nq \
- --kubeconfig ./conf/kube-proxy.kubeconfig
执行权限并创建日志存储目录:
- # chmod +x /opt/kubernetes/server/bin/kube-proxy.sh
- # mkdir -p /data/logs/kubernetes/kube-proxy
编辑supervisord启动文件:红色部分根据IP修改
- # vi /etc/supervisord.d/kube-proxy.ini
- [program:kube-proxy-7-21]
- command=/opt/kubernetes/server/bin/kube-proxy.sh ; the program (relative uses PATH, can take args)
- numprocs=1 ; number of processes copies to start (def 1)
- directory=/opt/kubernetes/server/bin ; directory to cwd to before exec (def no cwd)
- autostart=true ; start at supervisord start (default: true)
- autorestart=true ; retstart at unexpected quit (default: true)
- startsecs=30 ; number of secs prog must stay running (def. 1)
- startretries=3 ; max # of serial start failures (default 3)
- exitcodes=0,2 ; 'expected' exit codes for process (default 0,2)
- stopsignal=QUIT ; signal used to kill process (default TERM)
- stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)
- user=root ; setuid to this UNIX account to run the program
- redirect_stderr=true ; redirect proc stderr to stdout (default false)
- stdout_logfile=/data/logs/kubernetes/kube-proxy/proxy.stdout.log ; stderr log path, NONE for none; default AUTO
- stdout_logfile_maxbytes=64MB ; max # logfile bytes b4 rotation (default 50MB)
- stdout_logfile_backups=4 ; # of stdout logfile backups (default 10)
- stdout_capture_maxbytes=1MB ; number of bytes in 'capturemode' (default 0)
- stdout_events_enabled=false ; emit events on stdout writes (default false)
更新supervisord:
- # supervisorctl update
- # supervisorctl status
创建nginx-ds pod:(21上执行就行)
- # vi /root/nginx-ds.yaml
- apiVersion: extensions/v1beta1
- kind: DaemonSet
- metadata:
- name: nginx-ds
- spec:
- template:
- metadata:
- labels:
- app: nginx-ds
- spec:
- containers:
- - name: my-nginx
- image: harbor.od.com/public/nginx:v1.7.9
- ports:
- - containerPort: 80
- # kubectl create -f nginx-ds.yaml
查看:
- # kubectl get pods
最后验证集群状态:
etcd controller-manager scheduler状态:
- #kubectl get cs
nodes状态:
- # kubectl get nodes
pods状态:
- #kubectl get pods
至此,kubernets的核心组件已经安装部署完成,接下来会部署附加组件。
二进制安装kubernetes(六) kube-proxy组件安装的更多相关文章
- VS2008安装“Visual Studio Web 创作组件”安装失败的解决方法
VS2008安装“Visual Studio Web 创作组件”安装失败的解决方法 今天在单位电脑安装VS2008,当安装到“Visual Studio Web 创作组件”时出现错误. 准备手动安装 ...
- Dynamics CRM安装教程六:CRM产品安装
接下来就要开始进行CRM产品的安装了 首先要安装IIS,以及.NET FrameWork4.6及相关功能 打开服务器管理器,在添加角色功能向导中勾选IIS,点击添加功能 默认下一步 选择角色服务这里的 ...
- Centos7上安装Kubernetes集群部署docker
一.安装前准备1.操作系统详情需要三台主机,都最小化安装 centos7.3,并update到最新 [root@master ~]# (Core) 角色 主机名 IPMaster master 192 ...
- 二进制安装 kubernetes 1.12(四) - 部署 Node 节点组件
在 master 上操作 vi /etc/profile export PATH=/opt/kubernetes/bin:$PATH source /etc/profile 将 kubelet-boo ...
- 二进制安装kubernetes(一) 环境准备及etcd组件安装及etcd管理软件etcdkeeper安装
实验环境: 架构图: 主机环境: 操作系统:因docker对内核需要,本次部署操作系统全部采用centos7.6(需要内核3.8以上) VM :2C 2G 50G * 5 PS:因后面实验需要向k8 ...
- Centos7 二进制安装 Kubernetes 1.13
目录 1.目录 1.1.什么是 Kubernetes? 1.2.Kubernetes 有哪些优势? 2.环境准备 2.1.网络配置 2.2.更改 HOSTNAME 2.3.配置ssh免密码登录登录 2 ...
- 二进制方式安装Kubernetes 1.14.2高可用详细步骤
00.组件版本和配置策略 组件版本 Kubernetes 1.14.2 Docker 18.09.6-ce Etcd 3.3.13 Flanneld 0.11.0 插件: Coredns Dashbo ...
- Android实训案例(六)——四大组件之一BroadcastReceiver的基本使用,拨号,短信,SD卡,开机,应用安装卸载监听
Android实训案例(六)--四大组件之一BroadcastReceiver的基本使用,拨号,短信,SD卡,开机,应用安装卸载监听 Android中四大组件的使用时重中之重,我这个阶段也不奢望能把他 ...
- CentOS 7.5 使用 yum 安装 Kubernetes 集群(二)
一.安装方式介绍 1.yum 安装 目前CentOS官方已经把Kubernetes源放入到自己的默认 extras 仓库里面,使用 yum 安装,好处是简单,坏处也很明显,需要官方更新 yum 源才能 ...
随机推荐
- WPF NET5 Prism8.0的升级指南
前言 曾经我以学习的目的写了关于在.NET Core3.1使用Prism的系列文章.NET Core 3 WPF MVVM框架 Prism系列文章索引,也谢谢大家的支持,事实上当初的版本则是Pri ...
- 【老孟Flutter】如何提高Flutter应用程序的性能
首先 Flutter 是一个非常高性能的框架,因此大多时候不需要开发者做出特殊的处理,只需要避免常见的性能问题即可获得高性能的应用程序. 重建最小化原则 在调用 setState() 方法重建组件时, ...
- Linux TCP漏洞 CVE-2019-11477 CentOS7 修复方法
CVE-2019-11477漏洞简单介绍 https://cert.360.cn/warning/detail?id=27d0c6b825c75d8486c446556b9c9b68 RedHat用户 ...
- 关于springboot项目通过jar包启动之后无法读取项目根路径静态资源
在一次项目开发过程中,项目根路径下存放了一张图片,生成二维码的时候调用了该图片作为二维码的logo,在windows环境下二维码可以正常生成,但是部署到生产测试环境之后二维码生成报错,FileNotF ...
- 理解js闭包9大使用场景
1.返回值(最常用) //1.返回值 最常用的 function fn(){ var name="hello"; return function(){ return name; } ...
- Spring 是如何解决循环依赖的?
前言 相信很多小伙伴在工作中都会遇到循环依赖,不过大多数它是这样显示的: 还会提示这么一句: Requested bean is currently in creation: Is there an ...
- 记一次Nginx反向代理500的排查记录
今天公司项目遇到一个奇怪的问题,记录一下. 注: 数据已经过脱敏处理,未暴露公司具体的IP等数据. TLDR; 项目简单介绍 用 Vue + ElementUI 实现的后台项目(以下简称:a-proj ...
- git database 数据库 平面文件 Git 同其他系统的重要区别 Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异 Git 的设计哲学
小结: 1.如果要浏览项目的历史更新摘要,Git 不用跑到外面的服务器上去取数据回来 2.注意 git clone 应指定版本,它复制的这个版本的全部历史信息: 各个分支 git init 数据库 ...
- 深入理解SPI机制-服务发现机制
https://www.jianshu.com/p/3a3edbcd8f24 SPI ,全称为 Service Provider Interface,是一种服务发现机制.它通过在ClassPath路径 ...
- Python中,单引号,双引号,三引号的使用区别与原因
先说1双引号与3个双引号的区别,双引号所表示的字符串通常要写成一行如:s1 = "hello,world"如果要写成多行,那么就要使用/ ("连行符")吧,如s ...