快捷搜索:  汽车  科技

kubernetes多层应用部署和管理:K8S部署kube-proxy

kubernetes多层应用部署和管理:K8S部署kube-proxy"key": {"CN": "system:kube-proxy"运维主机hdss01-200.host.com上:certs]#cat kube-proxy-csr.json{

Kubernetes 网络代理在每个节点上运行。网络代理反映了每个节点上 Kubernetes API 中定义的服务,并且可以执行简单的 TCP、UDP 和 SCTP 流转发,或者在一组后端进行循环 TCP、UDP 和 SCTP 转发。

主要是连接pod网络和集群网络

在hdss01-221.host.com和hdss01-222.host.com主机上操作:

签发kube-proxy证书:

运维主机hdss01-200.host.com上:

certs]#cat kube-proxy-csr.json

{

"CN": "system:kube-proxy"

"key": {

"algo": "rsa"

"size": 2048

}

"names": [

{

"C": "CN"

"ST": "henan"

"L": "zhengzhou"

"O": "jx"

"OU": "xxzx"

}

]

}

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

kubernetes多层应用部署和管理:K8S部署kube-proxy(1)

把证书拷贝到hdss01-221.host.com和hdss01-222.host.com两个主机上:

cd /opt/kubernetes/server/bin/cert

拷贝证书、私钥,私钥属性为600

cert]# scp hdss01-200:/opt/certs/kube-proxy-client*.pem .

创建配置:

在/opt/kubernetes/server/bin/conf文件夹下创建配置 -- 只做一次,然后将kube-proxy.kubeconfig拷贝至各个node节点

在hdss01-221.host.com主机上:

set-cluster:

kubectl config set-cluster myk8s \

--certificate-authority=/opt/kubernetes/server/bin/cert/ca.pem \

--embed-certs=true \

--server=https://10.41.1.210:7443 \

--kubeconfig=kube-proxy.kubeconfig

set-credentials:

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

set-context:

kubectl config set-context myk8s-context \

--cluster=myk8s \

--user=kube-proxy \

--kubeconfig=kube-proxy.kubeconfig

use-context:

kubectl config use-context myk8s-context --kubeconfig=kube-proxy.kubeconfig

把kube-proxy.kubeconfig拷贝到hdss01-222.host.com的对应的目录下。

scp hdss01-221:/opt/kubernetes/server/bin/conf/kube-proxy.kubeconfig .

加载ipvs模块

在hdss01-221和hdss01-222两台主机上:

脚本需要设置成开启自动运行:

~]cd ~

~]cat /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 x ipvs.sh

~]#lsmod |grep ip_vs

~]#./ipvs.sh

~]#lsmod |grep ip_vs

kubernetes多层应用部署和管理:K8S部署kube-proxy(2)

ipvs.sh设置开机自动启动:

vi /etc/rc.d/rc.local

/bin/bash /root/ipvs.sh

chmod x /etc/rc.d/rc.local

附:LVS调度算法

轮叫调度(Round-Robin Scheduling)

加权轮叫调度(Weighted Round-Robin Scheduling)

最小连接调度(Least-Connection Scheduling)

加权最小连接调度(Weighted Least-Connection Scheduling)

基于局部性的最少链接(Locality-Based Least Connections Scheduling)

带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)

目标地址散列调度(Destination Hashing Scheduling)

源地址散列调度(Source Hashing Scheduling)

最短预期延时调度(Shortest Expected Delay Scheduling)

不排队调度(Never Queue Scheduling)

创建启动脚本:

在hdss01-221和hdss01-222两台主机上:

bin]#cd /opt/kubernetes/server/bin/

bin]#cat kube-proxy.sh

#!/bin/sh

./kube-proxy \

--cluster-cidr 172.7.0.0/16 \

--hostname-override hdss01-221.host.com \

--proxy-mode=ipvs \

--ipvs-scheduler=nq \

--kubeconfig ./conf/kube-proxy.kubeconfig

bin]#chmod x kube-proxy.sh

bin]#mkdir -p /data/logs/kubernetes/kube-proxy

创建supervisor配置:

bin]# cat /etc/supervisord.d/kube-proxy.ini

[program:kube-proxy-01-221]

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)

bin]#supervisorctl update

bin]#supervisorctl status

kubernetes多层应用部署和管理:K8S部署kube-proxy(3)

查看ipvs是否生效:

bin]# ipvsadm –Ln#若无此命令:bin]# yum install ipvsadm

bin]# kubectl get svc

kubernetes多层应用部署和管理:K8S部署kube-proxy(4)

猜您喜欢: