在 hdss7-21.host.com(10.4.7.21) hdss7-22.host.com(10.4.7.22) 上面部署 主要用途是连接pod网络和集群网络 签发kube-proxy证书:在 10.4.7.200上面操作 创建生成证书签名请求(csr)的JSON配置文件 cd /opt/certs/ vi kube-proxy-csr.json { "CN": "system:kube-proxy", "key": { "algo": "rsa", "size": 2048 }, "names": [ { "C": "CN", "ST": "beijing", "L": "beijing", "O": "od", "OU": "ops" } ] } ######++++++ CN:的名称如果随便写的话,就需要做一次clusterbinding,如果CN: 名称用k8s里面默认角色的名称(system:kube-proxy),通过签发证书,就让kube-proxy这个用户默认拥有了k8s里面 system:kube-proxy 这个角色。 #####+++++++++++ 生成kube-proxy证书和私钥: 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######++++++++++ 分发证书: 在 104.7.21 10.4.7.22 上面操作: cd /opt/kubernetes/server/bin/cert/ scp hdss7-200:/opt/certs/kube-proxy-client.pem . scp hdss7-200:/opt/certs/kube-proxy-client-key.pem .
![]()
创建配置:hdss7-21.host.com(10.4.7.21) 上面操作 1、set-cluster 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
2、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
3、set-context kubectl config set-context myk8s-context \ --cluster=myk8s \ --user=kube-proxy \ --kubeconfig=kube-proxy.kubeconfig
4、use-context kubectl config use-context myk8s-context --kubeconfig=kube-proxy.kubeconfig
![]()
hdss7-22.host.com(10.4.7.22 ) cd /opt/kubernetes/server/bin/conf scp hdss7-21:/opt/kubernetes/server/bin/conf/kube-proxy.kubeconfig .
########+++++ 创建kube-proxy启动配置脚本:(10.4.7.21 10.4.7.22) 创建启动脚本之前先加载 内核 里面的 ipvs 模块 kube-proxy 有三种流量模式的调度方式,一种是用userspace ,已废弃了,比较费资源 ,还有一种是标准的iptables ,还有一种是 ipvs 。建议使用ipvs ########++++++ lsmod | grep ip_vs 应该什么都没有 cd / vim 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 ./ipvs.sh
############+++++++
![]()
######++++++++++++++++++= cd /opt/kubernetes/server/bin vim /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 ######+++++++++ 如果 --proxy-mode=iptables 那么 --ipvs-scheduler=rr ## iptables 只支持 rr 算法 ####### chmod +x kube-proxy.sh mkdir -p /data/logs/kubernetes/kube-proxy ######++++++++++ 10.4.7.22 cd /opt/kubernetes/server/bin vim /opt/kubernetes/server/bin/kube-proxy.sh #!/bin/sh ./kube-proxy \ --cluster-cidr 172.7.0.0/16 \ --hostname-override hdss7-22.host.com \ --proxy-mode=ipvs \ --ipvs-scheduler=nq \ --kubeconfig ./conf/kube-proxy.kubeconfig chmod +x kube-proxy.sh mkdir -p /data/logs/kubernetes/kube-proxy ####+++++++= 创建supervisor 配置:(10.4.7.21 10.4.7.22) vim /etc/supervisord.d/kube-proxy.ini [program:kube-proxy-7-21] command=/opt/kubernetes/server/bin/kube-proxy.sh numprocs=1 directory=/opt/kubernetes/server/bin autostart=true autorestart=true startsecs=30 startretries=3 exitcodes=0,2 stopsignal=QUIT stopwaitsecs=10 user=root redirect_stderr=true stdout_logfile=/data/logs/kubernetes/kube-proxy/proxy.stdout.log stdout_logfile_maxbytes=64MB stdout_logfile_backups=4 stdout_capture_maxbytes=1MB stdout_events_enabled=false ###########+++++++++++ supervisorctl update
#######++++++++== 10.4.7.22
![]()
#########++++++++ yum install ipvsadm -y
![]()
#############+++++++ 验证kubernetes集群 在任意一个节点,创建一个资源配置清单 10.4.7.21 上面操作: vim /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
cd /root kubectl create -f nginx-ds.yaml 查看pod kubectl get pods -o wide
kubectl get cs
kubectl get node
kubectl get pods
![]()