首页 > 其他分享 >【实战加详解】二进制部署k8s高可用集群系列教程七 - 部署 kubectl

【实战加详解】二进制部署k8s高可用集群系列教程七 - 部署 kubectl

时间:2022-10-17 14:22:08浏览次数:59  
标签:kubectl kubernetes 部署 kubeconfig apiserver -- k8s admin

[!TIP]
二进制部署 k8s - 部署 kubectl


转载请注明出处:https://janrs.com。有任何问题环境来我的博客评论区发表评论。

部署 kubectl

kubectl 作为 kube-apiserver 的客户端工具,需要访问 kube-apiserver 的服务,所以需要 kube-apiserverca
机构为其签发客户端 client 证书。

1.生成 ssl 证书

1-1.创建 csr 请求文件

[!NOTE]
CN 参数表示用户名,这里设置为 k8s 中设定的 admin

O 参数表示用户组,这里设置为 k8s 中设定的 system:masters

kubectl 作为客户端,不需要设置 hosts 参数。




CN 可以设置其他的,这里设置常用的 admin 用户角色就行。不推荐设置成 cluster-admin 超级管理员角色。

cat > /ssl/apiserver-admin-client-csr.json <<EOF
{
    "CN": "admin",
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "C": "CN",
            "ST": "Beijing",
            "L": "Beijing",
            "O": "system:masters",
            "OU": "system"
        }
    ]
}
EOF
cd /ssl/ && \
cfssl gencert \
-ca=apiserver-ca.pem \
-ca-key=apiserver-ca-key.pem \
-config=ca-config.json \
-profile=client apiserver-admin-client-csr.json | \
cfssljson -bare apiserver-admin-client && \
ls apiserver-admin-client* | \
grep apiserver-admin-client

1-2.分发证书

scp /ssl/apiserver-admin-client*.pem [email protected]:/etc/kubernetes/pki/apiserver/ && \

scp /ssl/apiserver-admin-client*.pem [email protected]:/etc/kubernetes/pki/apiserver/ && \

scp /ssl/apiserver-admin-client*.pem [email protected]:/etc/kubernetes/pki/apiserver/

2.创建 kubeconfig

[!NOTE]
kubectl 是使用 kubeconfigkube-apiserver 进行通信的。

kubeconfig 配置文件中会包含了 kubectl 的客户端 client 证书信息以及身份信息。

需要在每台服务器都创建该请求文件。

以下操作在每台 master 服务器创建,ip 地址设置为本地的 kube-apiserver 的服务地址 ip

文件存放目录为:/etc/kubernetes/kubeconfig/

2-1.在 master-01 创建

设置集群参数

kubectl config set-cluster kubernetes \
--certificate-authority=/etc/kubernetes/pki/apiserver/apiserver-ca.pem \
--embed-certs=true \
--server=https://172.16.222.121:6443 \
--kubeconfig=/etc/kubernetes/kubeconfig/admin.kubeconfig

设置客户端认证参数

kubectl config set-credentials admin \
--client-certificate=/etc/kubernetes/pki/apiserver/apiserver-admin-client.pem \
--client-key=/etc/kubernetes/pki/apiserver/apiserver-admin-client-key.pem \
--embed-certs=true \
--kubeconfig=/etc/kubernetes/kubeconfig/admin.kubeconfig

设置上下文参数

kubectl config set-context kubernetes \
--cluster=kubernetes \
--user=admin \
--kubeconfig=/etc/kubernetes/kubeconfig/admin.kubeconfig

设置当前上下文

kubectl config use-context kubernetes \
--kubeconfig=/etc/kubernetes/kubeconfig/admin.kubeconfig

复制到 k8s 默认的引用目录位置


一般是 /root/.kube/ 目录

cp /etc/kubernetes/kubeconfig/admin.kubeconfig /root/.kube/config

2-2.在 master-02 创建

设置集群参数

kubectl config set-cluster kubernetes \
--certificate-authority=/etc/kubernetes/pki/apiserver/apiserver-ca.pem \
--embed-certs=true \
--server=https://172.16.222.122:6443 \
--kubeconfig=/etc/kubernetes/kubeconfig/admin.kubeconfig

设置客户端认证参数

kubectl config set-credentials admin \
--client-certificate=/etc/kubernetes/pki/apiserver/apiserver-admin-client.pem \
--client-key=/etc/kubernetes/pki/apiserver/apiserver-admin-client-key.pem \
--embed-certs=true \
--kubeconfig=/etc/kubernetes/kubeconfig/admin.kubeconfig

设置上下文参数

kubectl config set-context kubernetes \
--cluster=kubernetes \
--user=admin \
--kubeconfig=/etc/kubernetes/kubeconfig/admin.kubeconfig

设置当前上下文

kubectl config use-context kubernetes \
--kubeconfig=/etc/kubernetes/kubeconfig/admin.kubeconfig

复制到 k8s 默认的引用目录位置


一般是 /root/.kube/ 目录

cp /etc/kubernetes/kubeconfig/admin.kubeconfig /root/.kube/config

2-3.在 master-03 创建

设置集群参数

kubectl config set-cluster kubernetes \
--certificate-authority=/etc/kubernetes/pki/apiserver/apiserver-ca.pem \
--embed-certs=true \
--server=https://172.16.222.123:6443 \
--kubeconfig=/etc/kubernetes/kubeconfig/admin.kubeconfig

设置客户端认证参数

kubectl config set-credentials admin \
--client-certificate=/etc/kubernetes/pki/apiserver/apiserver-admin-client.pem \
--client-key=/etc/kubernetes/pki/apiserver/apiserver-admin-client-key.pem \
--embed-certs=true \
--kubeconfig=/etc/kubernetes/kubeconfig/admin.kubeconfig

设置上下文参数

kubectl config set-context kubernetes \
--cluster=kubernetes \
--user=admin \
--kubeconfig=/etc/kubernetes/kubeconfig/admin.kubeconfig

设置当前上下文

kubectl config use-context kubernetes \
--kubeconfig=/etc/kubernetes/kubeconfig/admin.kubeconfig

复制到 k8s 默认的引用目录位置


一般是 /root/.kube/ 目录

cp /etc/kubernetes/kubeconfig/admin.kubeconfig /root/.kube/config

3.验证

[!NOTE]
每台 master 服务器配置 admin.kubeconfig 都验证一遍。

随便执行 kubectl 命令查看是否可以正常访问 kube-apiserver




查看集群信息

kubectl cluster-info

显示

Kubernetes control plane is running at https://172.16.222.122:6443

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

查看所有服务

kubectl get all --all-namespaces

显示

NAMESPACE   NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
default     service/kubernetes   ClusterIP   10.68.0.1    <none>        443/TCP   120m

4.授予访问 kubelet 的权限

[!NOTE]
kubectl 很多时候需要查看 pod 的日志等其他信息,


kubectl 是通过 kube-apiserver 访问 kubelet 的服务的。


k8s 有自带的集群角色:system:kubelet-api-admin 拥有此权限,需要绑定到 kubectl 的用户上。


kubectl 的用户这里设置的是:kubernetes

cat > /etc/kubernetes/init_k8s_config/allow-kubectl-access-kube-apiserver-kubelet-apis.yaml <<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: allow-kubectl-access-kube-apiserver-kubelet-apis
subjects:
- kind: User
  name: kubernetes
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: system:kubelet-api-admin
  apiGroup: rbac.authorization.k8s.io
EOF
kubectl apply -f /etc/kubernetes/init_k8s_config/allow-kubectl-access-kube-apiserver-kubelet-apis.yaml

至此。kubectl 部署成功。

转载请注明出处:https://janrs.com

标签:kubectl,kubernetes,部署,kubeconfig,apiserver,--,k8s,admin
From: https://www.cnblogs.com/yangjianyong-bky/p/16799057.html

相关文章

  • odoo部署服务器遇到的坑(window环境)
    odoo服务器部署遇到的问题坑1:部署服务器需更改odoo根目录下/python/Lib/_strpime.py在all=[]上添加locale.setlocale(locale.LC_ALL,'en')坑2:系统不能有任......
  • django项目怎么利用gunicorn进行部署
    django项目怎么利用gunicorn进行部署 1、开发环境运行项目python mange.py runserver 0.0.0.0:80002、使用gunicorn在生产环境部署Gunicorn“绿色独角兽”是一个......
  • Flink on k8s 讲解与实战操作
    一、概述Flink核心是一个流式的数据流执行引擎,并且能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用。其针对数据流的分布式计算提供了数据分布,数据通信及容错......
  • 修改k8s集群pod dns(coreDNS)配置
    背景公司访问的域名突然解析有问题了,需要修改nameserver,或者固定下hosts操作参考以下配置修改coredns的configmap(我这里是k8s的dashboard修改的地址是https:/......
  • k8s:cni 插件路径问题:/usr/libexec/cni ? /opt/cni/bin ?
    本质是:不同发行版、不同软件包版本,是否遵循cni标准(或标准建议)的问题。不同因素组合一块,就可能出现,一会这儿,一会那里,一会行,一会儿不行的问题! cni的接口相关文件和配置的......
  • Docker基础知识 (16) - 部署 Redis 集群
    Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value的NoSQL数据库,并提供多种语言的API。大型网站为了提高站点响应速度,使用......
  • Centos7部署redis三节点哨兵集群,添加布隆过滤器
    目录Centos7部署redis三节点哨兵集群,添加布隆过滤器一、环境准备1.1、服务器准备1.2、依赖安装二、部署redis2.1、安装redis2.2、修改配置文件2.3、加入systemctl管理三、......
  • 2、k8s HPA 实战
    1、centos7安装k8s集群2、k8sHPA实战安装metrics-server支持HPAhttps://github.com/kubernetes-sigs/metrics-serverConfigurationDependingonyourclustersetup......
  • CentOS 8.2 k8s 集群安装 Keepalived-2.2.7
    一、Keepalived集群安装地址https://www.keepalived.orgNginx和Keepalived是配套使用的,如果有其他负载均衡器就不需要再安装这两个服务。安装依赖yuminstall......
  • k8s部署tomcat访问报错404
    [root@k8smaster~]#kubectlgetpodsNAMEREADYSTATUSRESTARTSAGEnginx-6799fc88d8-62njk1/1Running212htomcat-......