(五)二进制安装k8s-1.11版本之node组件部署

软件包下载

链接:https://pan.baidu.com/s/1y1pTLJfhXbR-IT0Cz6kEoQ 
提取码:z82h 
test -d /server/ssl/node || mkdir -p /server/ssl/node
tar xf kubernetes-node-linux-amd64.tar.gz
cp /tools/kubernetes/node/bin/kubelet /server/ssl/node/
cp /tools/kubernetes/node/bin/kube-proxy /server/ssl/node

在master给kubelet启动时的用户名授权

kubelet 启动时向 kube-apiserver 发送 TLS bootstrapping 请求,需要先将 bootstrap token 文件中的 kubelet-bootstrap 用户赋予 system:node-bootstrapper 角色,然后 kubelet 才有权限创建认证请求(certificatesigningrequests)。-user=kubelet-bootstrap时token.csv中的用户名, 需要发送到master上; 这里后面传到master;

在master上运行: kubectl create clusterrolebinding kubelet-bootstrap --clusterrole=system:node-bootstrapper --user=kubelet-bootstrap

配置kubelet

注意:没有特殊说明, 相关配置都是在跳板机上进行
设置集群参数

kubectl config set-cluster kubernetes \
    --certificate-authority=/opt/kubernetes/ssl/ca.pem \
    --embed-certs=true \
    --server=https://192.168.213.131:6443 \
    --kubeconfig= /server/ssl/node/bootstrap.kubeconfig

设置客户端认证参数,token同样来自前文master节点上文件token.csv,目前在跳板机上;

kubectl config set-credentials kubelet-bootstrap \
    --token=76054b5e0bc17c558ae4bbddab790ed7 \
    --kubeconfig= /server/ssl/node/bootstrap.kubeconfig

设置上下文参数

kubectl config set-context default   --cluster=kubernetes   --user=kubelet-bootstrap   --kubeconfig= /server/ssl/node/bootstrap.kubeconfig

设置默认上下文

kubectl config use-context default --kubeconfig= /server/ssl/node/bootstrap.kubeconfig

准备kubelet启动脚本文件

cat  >/server/ssl/node/kubelet.service <<EOF
[Unit]
Description=Kubernetes Kubelet
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=docker.service
Requires=docker.service

[Service]
WorkingDirectory=/var/lib/kubelet
ExecStart=/usr/local/sbin/kubelet \
    --address=0.0.0.0 \
    --hostname-override=0.0.0.0 \
    --pod-infra-container-image=registry.cn-hangzhou.aliyuncs.com/wangfang-k8s/pause-amd64:3.0 \
    --experimental-bootstrap-kubeconfig=/opt/kubernetes/cfg/bootstrap.kubeconfig \
    --kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig \
    --cert-dir=/opt/kubernetes/ssl \
    --cluster-dns=10.254.0.2\
    --cluster-domain=cluster.local. \
    --hairpin-mode promiscuous-bridge \
    --allow-privileged=true \
    --serialize-image-pulls=false \
    --logtostderr=true \
    --v=2
ExecStartPost=/sbin/iptables -A INPUT -s 10.0.0.0/8 -p tcp --dport 4194 -j ACCEPT
ExecStartPost=/sbin/iptables -A INPUT -s 172.16.0.0/12 -p tcp --dport 4194 -j ACCEPT
ExecStartPost=/sbin/iptables -A INPUT -s 192.168.0.0/16 -p tcp --dport 4194 -j ACCEPT
ExecStartPost=/sbin/iptables -A INPUT -p tcp --dport 4194 -j DROP
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF

准备修改node节点kubelet启动服务文件0.0.0.0的脚本文件, 注意node节点的网卡名必须是ens33, 可以自己修改;

#cat change_ip.sh
ip=$(ip addr |grep ens33|grep inet|awk '{print $2}'|awk -F'/' '{print $1}')
sed -ri "s/=0.0.0.0/=$ip/g" /usr/lib/systemd/system/kubelet.service

把相关文件传到node节点

cd /server/ssl/node/
scp kubelet kube-proxy  node01:/usr/local/sbin/
scp bootstrap.kubeconfig node01:/opt/kubernetes/cfg/
ssh node01 mkdir /var/lib/kubelet
scp /server/ssl/kubelet.service node01:/usr/lib/systemd/system/
ssh change_ip.sh  node01:/opt/
ssh node01 bash /opt/ change_ip.sh 

服务启动

systemctl daemon-reload 
systemctl enable kubelet 
systemctl start kubelet 
systemctl status kubelet 

在这里插入图片描述

在master对csr授权

kubectl get csr 
kubectl   certificate approve node-csr-YLZHzeWk69Dvsv8JJcOFzj6VK9P4xT0MocCvWvQnrvQ

在这里插入图片描述
在master上进行角色绑定, 因为kubelet是通过用户system:node 和api-server进行通信, 如果没有权限是没法创建pod

 kubectl create clusterrolebinding kubelet-node-clusterbinding --clusterrole=system:node --group=system:nodes

配置kube-proxy

创建kube-proxy证书签名请求

cat >/server/ssl/node/kube-proxy-csr.json<<EOF
{
    "CN": "system:kube-proxy",
    "hosts": [],
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "ST": "Hangzhou",
            "L": "Hangzhou",
            "O": "k8s",
            "OU": "System"
        }
    ]
}
EOF

生成kube-proxy证书和私钥

cd /server/ssl/node
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kube-proxy-csr.json | cfssljson -bare kube-proxy

创建 kube-proxy kubeconfig 文件

\cp *.pem /opt/kubernetes/ssl/
#设置集群参数

    #kubectl config set-cluster kubernetes \
    --certificate-authority=/opt/kubernetes/ssl/ca.pem \
    --embed-certs=true \
    --server=https://192.168.213.131:6443 \
    --kubeconfig=/server/ssl/node/kube-proxy.kubeconfig
#设置客户端参数

 #kubectl config set-credentials kube-proxy \
--client-certificate=/opt/kubernetes/ssl/kube-proxy.pem \
--client-key=/opt/kubernetes/ssl/kube-proxy-key.pem \
--embed-certs=true \
--kubeconfig=kube-proxy.kubeconfig
#设置上下文参数

# kubectl config set-context default \
--cluster=kubernetes \
--user=kube-proxy \
--kubeconfig=kube-proxy.kubeconfig
#设置默认上下文

#kubectl config use-context default --kubeconfig=kube-proxy.kubeconfig

准备kube-proxy服务启动脚本文件

cat > /server/ssl/node/kube-proxy.service<<EOF
[Unit]
Description=Kubernetes Kube-Proxy Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.target

[Service]
WorkingDirectory=/var/lib/kube-proxy
ExecStart=/usr/local/sbin/kube-proxy --bind-address=0.0.0.0 --hostname-override= --cluster-cidr=172.30.0.0/16 --kubeconfig=/opt/kubernetes/cfg/kube-proxy.kubeconfig --logtostderr=true --v=2
Restart=on-failure
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
EOF

文件传到node节点

#发送kube-proxy证书和私钥文件到node节点
scp kube-proxy*.pem node01:/opt/kubernetes/ssl
#发送kubeconfig文件到node节点;
scp kube-proxy.kubeconfig node01:/opt/kubernetes/cfg/
#发送服务启动脚本文件到node节点
scp kube-proxy.service node01:/usr/lib/systemd/system/
#创建kube-proxy目录
 ssh node01 mkdir -p /var/lib/kube-proxy

启动服务

systemctl daemon-reload
systemctl start kube-proxy
systemctl enable kube-proxy 
systemctl status kube-proxy

创建deployment和service资源验证集群是否部署正确

kubectl run nginx-test --image=nginx:1.11 --replicas=1
kubectl get pods -o wide
kubectl expose deployment nginx-test --port=88 --target-port=80 --type=NodePort
kubectl get svc 
kubectl get ep

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43342753/article/details/89784465