首页 > 其他分享 >k8s服务端二进制部署-kubectl

k8s服务端二进制部署-kubectl

时间:2023-02-21 21:15:36浏览次数:46  
标签:kubectl k8s kubernetes 证书 -- admin kube 服务端

本文章是 k8s二进制高可用集群部署 的分支。详细步骤请参考目录。

二进制下载地址

  压缩包下载:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG

  注:打开链接你会发现里面有很多包,下载一个Server包就够了,里面包含了Server和Client以及Node二进制文件。

  单个下载:https://www.downloadkubernetes.com/

具体下载那个,自由发挥。

1.生成kubectl连接集群的证书

# 创建证书请求文件
cat > admin-csr.json <<EOF
{
  "CN": "admin",
  "hosts": [],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "L": "Tianjin",
      "ST": "Tianjin",
      "O": "system:masters",
      "OU": "System"
    }
  ]
}
EOF

# 生成证书
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin

  说明: 后续 kube-apiserver 使用 RBAC 对客户端(如 kubelet、kube-proxy、Pod)请求进行授权; kube-apiserver 预定义了一些 RBAC 使用的 RoleBindings,如 cluster-admin 将 Group system:masters 与 Role cluster-admin 绑定,该 Role 授予了调用kube-apiserver 的所有 API的权限; O指定该证书的 Group 为 system:masters,kubelet 使用该证书访问 kube-apiserver 时 ,由于证书被 CA 签名,所以认证通过,同时由于证书用户组为经过预授权的 system:masters,所以被授予访问所有 API 的权限;

  注: 这个admin 证书,是将来生成管理员用的kube config 配置文件用的,现在我们一般建议使用RBAC 来对kubernetes 进行角色权限控制, kubernetes 将证书中的CN 字段 作为User, O 字段作为 Group; "O": "system:masters", 必须是system:masters,否则后面kubectl create clusterrolebinding报错。

2.生成kubeconfig文件

  kubeconfig 为 kubectl 的配置文件,包含访问 apiserver 的所有信息,如 apiserver 地址、CA 证书和自身使用的证书

mkdir /root/.kube

KUBE_CONFIG="/root/.kube/config"
KUBE_APISERVER="https://192.168.64.130:6443"

#设置集群参数
kubectl config set-cluster kubernetes \
  --certificate-authority=/opt/kubernetes/ssl/ca.pem \
  --embed-certs=true \
  --server=${KUBE_APISERVER} \
  --kubeconfig=${KUBE_CONFIG}
#设置客户端认证参数
kubectl config set-credentials admin \
  --client-certificate=/opt/kubernetes/ssl/admin.pem \
  --client-key=/opt/kubernetes/ssl/admin-key.pem \
  --embed-certs=true \
  --kubeconfig=${KUBE_CONFIG}
#设置上下文参数
kubectl config set-context kubernetes \
  --cluster=kubernetes \
  --user=admin \
  --kubeconfig=${KUBE_CONFIG}
#设置默认上下文
kubectl config use-context kubernetes --kubeconfig=${KUBE_CONFIG}

3.授权kubelet-bootstrap用户允许请求证书【api-service token文件中用户】

kubectl create clusterrolebinding kubelet-bootstrap \
--clusterrole=system:node-bootstrapper \
--user=kubelet-bootstrap

4.授权kubernetes证书访问kubelet api权限

kubectl create clusterrolebinding kube-apiserver:kubelet-apis --clusterrole=system:kubelet-api-admin --user kubernetes

5.查看集群组件状态

kubectl get cs
kubectl cluster-info
kubectl get componentstatuses
kubectl get all --all-namespaces

6.【可选】配置kubectl子命令补全

yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
kubectl completion bash > ~/.kube/completion.bash.inc
source '/root/.kube/completion.bash.inc'  
source $HOME/.bash_profile

 

标签:kubectl,k8s,kubernetes,证书,--,admin,kube,服务端
From: https://www.cnblogs.com/fanqisoft/p/17142426.html

相关文章

  • k8s多节点二进制部署以及Dashboard UI
    一、多Maser集群架构的了解Kubernetes作为容器集群系统,通过健康检查+重启策略实现了Pod故障自我修复能力,通过调度算法实现将Pod分布式部署,并保持预期副本数,根据Node失效......
  • k8s 控制平面地址修改
    修改kubeadm-configconfigmapkubectleditcm-nkube-systemkubeadm-config对应的位置dataClusterConfigurationcontrolPlaneEndpoint修改kube-proxyc......
  • 修复 K8s SSL/TLS 漏洞(CVE-2016-2183)指南
    作者:老Z,中电信数智科技有限公司山东分公司运维架构师,云原生爱好者,目前专注于云原生运维,云原生领域技术栈涉及Kubernetes、KubeSphere、DevOps、OpenStack、Ansible等。前......
  • 修复 K8s SSL/TLS 漏洞(CVE-2016-2183)指南
    作者:老Z,中电信数智科技有限公司山东分公司运维架构师,云原生爱好者,目前专注于云原生运维,云原生领域技术栈涉及Kubernetes、KubeSphere、DevOps、OpenStack、Ansible等。......
  • k8s之keepalive+nginx高可用集群部署
    1、安装nginx、keepalivedyuminstallnginxkeepalived-y2、更新nginx配置文件stream{log_formatmain'$remote_addr$upstream_addr-[$time_local]$status$up......
  • K8SPod进阶资源限制以及探针
    一、Pod进阶1、资源限制当定义Pod时可以选择性地为每个容器设定所需要的资源数量。最常见的可设定资源是CPU和内存大小,以及其他类型的资源。当为Pod中的容器指......
  • k8s服务端二进制部署-kube-controller-manager
    本文章是 k8s二进制高可用集群部署 的分支。详细步骤请参考目录。二进制下载地址参考 k8s服务端二进制部署-kube-apiserver1.......
  • 12 pipeline 风格发布项目到k8s
    书接上回:https://www.cnblogs.com/huningfei/p/17140068.html,上篇介绍了如何使用自由风格发布k8s项目,这次介绍如何使用pipeline发布k8s项目。一背景说明如果要使用pipe......
  • 11 使用自由风格发布k8s项目
    一背景说明新版的jenkins由于一些k8s插件发现没了,没法使用之前的方法发布了,这次不使用任何插件,直接使用自由风格发布。jenkins是使用docker启动的,k8s环境是基于1.23版本......
  • K8S故障排查
    故障排查//查看Pod事件kubectldescribeTYPENAME_PREFIX//查看Pod日志(Failed状态下)kubectllogs<POD_NAME>[-cContainer_NAME]//进入Pod(状态为running,但是服......