Centos7 k8s v1.5.2二进制部署安装-kube-proxy

摘要:
一、安装kube-proxy1、概述运行在每个节点上,监听APIServer中服务对象的变化,再通过管理IPtables来实现网络的转发Kube-Proxy目前支持三种模式:UserSpace:k8sv1.2后就已经淘汰IPtables:目前默认方式IPVS--推荐,支持7层:需要安装ipvsadm、ipset工具包和加载ip_vs内核模块2、首先安装ipset,ipvsadmyuminstall

一、安装kube-proxy

1、概述

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

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

UserSpace:k8s v1.2 后就已经淘汰

IPtables:目前默认方式

IPVS--推荐,支持7层:需要安装ipvsadm、ipset 工具包和加载 ip_vs 内核模块

2、首先安装ipset,ipvsadm

yum install   ipset  -y 
yum -y install ipvsadm

3、签发证书

vim /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

cd /opt/kubernetes/server/bin/cert/
scp operations:/opt/certs/kube-proxy-client.pem ./
scp operations:
/opt/certs/kube-proxy-client-key.pem ./

4、分发证书

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://192.168.112.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

5、加载ipvs

vim /root/ipvs.sh 编辑开启ipvs内核的脚本:
#!/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 +x  /root/ipvs.sh
sh /root/ipvs.sh

6、编辑kube-proxy启动脚本

vi /opt/kubernetes/server/bin/kube-proxy.sh
#!/bin/sh
./kube-proxy 
  --cluster-cidr 172.7.0.0/16--hostname-override kubectl1.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

7、编辑supervisord启动文件

vi /etc/supervisord.d/kube-proxy.ini
[program:kube-proxy-112-22]
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 (defaultTERM)
stopwaitsecs=10                                                      ; max num secs to wait b4 SIGKILL (default 10)
user=root                                                            ; setuid to thisUNIX 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; defaultAUTO
stdout_logfile_maxbytes=64MB                                         ; max # logfile bytes b4 rotation (default50MB)
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

二、创建pod

1、创建nginx-ds pod

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

Centos7 k8s v1.5.2二进制部署安装-kube-proxy第1张

三、删除for循环删除状态异常的容器

1、找出状态错误的容器

kubectl get pods -A -o wide|grep Evicted |awk '{print $2}'

2、删除容器

kubectl delete pod monitor-7b7bb4fbc5-zf7m5 -n hive-yszx

3、拼接命令

for i in `kubectl get pods -A -o wide|grep Evicted |awk '{print $2}'`
do
 kubectl delete pod $i -n hive-yszx

done

免责声明:文章转载自《Centos7 k8s v1.5.2二进制部署安装-kube-proxy》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇.net 分布式架构之分布式锁实现使用Oracle DBLink进行数据库之间对象的访问操作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

kubernetes之kubeadm 安装kubernetes 高可用集群

1. 架构信息 系统版本:CentOS 7.6内核:3.10.0-957.el7.x86_64 Kubernetes: v1.14.1Docker-ce: 18.09.5推荐硬件配置:4核8G Keepalived保证apiserever服务器的IP高可用 Haproxy实现apiserver的负载均衡 2. 节点信息 目前测试为 6 台虚拟机,etcd...

k8s 之Job/CronJob

Job 我们可以用job来创建一个任务 用kubectl get jobs 进行查看 kubectl describe job kubectl get pod 查看对应的pod kubectl logs $podName 查看对应的pod 的日志 对于不需要的job 可以通过kubectl delete job $job_name 进行删除,这样job对...

SUPERVISOR进程管理器配置指南

SUPERVISOR进程管理器配置指南1. supervisor简介1.1. 官网http://supervisord.org/ 1.2. 介绍Supervisor是一个进程控制系统. 它是一个C/S系统(注意: 其提供WEB接口给用户查询和控制), 它允许用户去监控和控制在类UNIX系统的进程. 它的目标与launchd, daemontools和run...

Centos7 k8s v1.5.2二进制部署安装-网络插件Flannel的安装

一、安装部署网络插件 1、概念 kubeenetes设计了网络模型,但是却将她得实现交给了网络插件,CNI网络插件最主要得功能就是实现POD资源能够跨宿主机进行通信 常见得CNI网络插件:Flannel、Calico、Canal、Contiv、OpenContrail、NSX-T、Kube-router 2、安装部署 mkdir flannel-v0.13...

K8S(rancher) 服务(POD)定时重启服务方案

目标 每天在固定时间点,重启服务。 运行N小时后重启服务。 难点: 原先Linux虚拟机部署中,可以轻易实现。 现在Docker K8S 如何实现? 解决方案: 巧用 rancher 2.* 新特性 -- 存活状态检查(liveness)特性说明健康检查 在容器启动后的N秒后以N秒的频率执行一次检查 TCP 端口检查  HTTP 请求状态检查(2...

K8S上的ELK和应用日志上报实战

来源:DevOps ID:Idevops168 本次实战的基础结构如下图所示: 一共有两个Pod:ELK和web应用; ELK的Pod会暴露两个服务,一个暴露logstash的5044端口,给filebeat用,另一个暴露kibana的5601端口,给搜索日志的用户访问的时候用; web应用暴露一个服务,给用户通过浏览器访问; 实战步骤简介 部署ELK的...