kubernetes 集群安全配置
版本:v1.10.0-alpha.3
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -subj "/CN=mhc" -days 5000 -out ca.crt
openssl genrsa -out server.key 2048
/CN 后是主机名
[root@mhc ssl]# cat master_ssl.cnf
[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[v3_req]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation,digitalSignature,keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = kubernetes
DNS.2 = kubernetes.default
DNS.3 = kubernetes.default.svc
DNS.4 = kubernetes.default.svc.cluster.local
DNS.5 = mhc
IP.1 = 10.254.0.1
IP.2 = 109.105.4.65
--------------------------------------------------------------------------------------------
openssl req -new -key server.key -subj "/CN=mhc" -config master_ssl.cnf -out server.csr
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -days 5000 -extensions v3_req -extfile master_ssl.cnf -out server.crt
------------------------------------------------------------------------------------------
启动apiserver
setsid kube-apiserver --logtostderr=true --v=0 --etcd-servers=http://109.105.4.65:4001 --insecure-bind-address=0.0.0.0 --insecure-port=0 --secure-port=6443 --service-cluster-ip-range=10.0.0.0/16 --client-ca-file=/root/test/k8s/ssl/ca.crt --tls-private-key-file=/root/test/k8s/ssl/server.key --tls-cert-file=/root/test/k8s/ssl/server.crt > apiserver.log 2>&1
----------------------------------------------------------------------------------------------
openssl genrsa -out cs_client.key 2048
openssl req -new -key cs_client.key -subj "/CN=mhc" -out cs_client.csr
openssl x509 -req -in cs_client.csr -CA ../ssl/ca.crt -CAkey ../ssl/ca.key -CAcreateserial -out cs_client.crt -days 5000
kubectl config --kubeconfig=kubeconfig set-cluster local --server=https://109.105.4.65:6443 --certificate-authority=/root/test/k8s/ssl/ca.crt
kubectl config --kubeconfig=kubeconfig set-credentials controllermanager --client-certificate=/root/test/k8s/client_ssl/cs_client.crt --client-key=/root/test/k8s/client_ssl/cs_client.key
kubectl config --kubeconfig=kubeconfig set-context my-context --cluster=local --user=controllermanager
[root@mhc client_ssl]# kubectl config --kubeconfig=kubeconfig view
apiVersion: v1
clusters:
- cluster:
certificate-authority: /root/test/k8s/ssl/ca.crt
server: https://109.105.4.65:6443
name: local
contexts:
- context:
cluster: local
user: controllermanager
name: my-context
current-context: ""
kind: Config
preferences: {}
users:
- name: controllermanager
user:
client-certificate: cs_client.crt
client-key: cs_client.key
-----------------------------------------------------------
apiVersion: v1
clusters:
- cluster:
certificate-authority: /root/test/k8s/ssl/ca.crt
server: https://109.105.4.65:6443
name: local
contexts:
- context:
cluster: local
user: controllermanager
name: my-context
current-context: "my-context"
kind: Config
preferences: {}
users:
- name: controllermanager
user:
client-certificate: cs_client.crt
client-key: cs_client.key
---------------------------------------------------------
setsid kube-controller-manager --logtostderr=true --v=0 --service-account-private-key-file=/root/test/k8s/ssl/server.key --root-ca-file=/root/test/k8s/ssl/ca.crt --kubeconfig=/root/test/k8s/client_ssl/kubeconfig > controller-manager.log 2>&1
setsid kube-scheduler --logtostderr=true --v=0 --kubeconfig=/root/test/k8s/client_ssl/kubeconfig > scheduler.log 2>&1
将上边的kubeconfig 改名为config 放到/root/.kube
[root@mhc .kube]# kubectl get componentstatus
NAME STATUS MESSAGE ERROR
controller-manager Healthy ok
scheduler Healthy ok
etcd-0 Healthy {"health": "true"}
-----------------------------------------------------------------
openssl genrsa -out kubelet_client.key 2048
openssl req -new -key kubelet_client.key -subj "/CN=mhc" -out kubelet_client.csr //CN 写node自己的主机名
openssl x509 -req -in kubelet_client.csr -CA ../ssl/ca.crt -CAkey ../ssl/ca.key -CAcreateserial -out kubelet_client.crt -days 5000
kubectl config --kubeconfig=kubeconfig set-cluster local --server=https://109.105.4.65:6443 --certificate-authority=/root/test/k8s/ssl/ca.crt
kubectl config --kubeconfig=kubeconfig set-credentials kubelet --client-certificate=/root/test/k8s/node_ssl/kubelet_client.crt --client-key=/root/test/k8s/node_ssl/kubelet_client.key
kubectl config --kubeconfig=kubeconfig set-context my-context --cluster=local --user=kubelet
修改其中的 current-context
----------------------------------------------------------
setsid kubelet --logtostderr=true --v=0 --address=0.0.0.0 --cgroup-driver=systemd --kubeconfig=/root/test/k8s/node_ssl/kubeconfig --fail-swap-on=false > kubelet.log 2>&1
setsid kube-proxy --logtostderr=true --v=0 --kubeconfig=/root/test/k8s/node_ssl/kubeconfig > proxy.log 2>&1
----------------------------------------------------------
[root@mhc .kube]# kubectl get node
NAME STATUS ROLES AGE VERSION
mhc Ready <none> 2m v1.10.0-alpha.3
kubernetes 集群安全配置的更多相关文章
- Kubernetes集群安全配置案例
Kubernetes 系统提供了三种认证方式:CA 认证.Token 认证 和 Base 认证.安全功能是一把双刃剑,它保护系统不被攻击,但是也带来额外的性能损耗.集群内的各组件访问 API Serv ...
- Kubernetes集群安全概述
API的访问安全性 API Server的端口和地址 在默认情况下,API Server通过本地端口和安全端口两个不同的HTTP端口,对外提供API服务,其中本地端口是基于HTTP协议的,用于在本机( ...
- Docker学习-Kubernetes - 集群部署
Docker学习 Docker学习-VMware Workstation 本地多台虚拟机互通,主机网络互通搭建 Docker学习-Docker搭建Consul集群 Docker学习-简单的私有Dock ...
- 高可用Kubernetes集群-2. ca证书与秘钥
四.CA证书与秘钥 kubernetes集群安全访问有两种方式:"基于CA签名的双向数字证书认证"与"基于BASE或TOKEN的简单认证",生产环境推荐使用&q ...
- kubernetes集群的认证、授权、准入控制
一.kubernetes集群安全架构 用户使用kubectl.客户机或通过REST请求访问API.可以授权用户和Kubernetes服务帐户进行API访问.当一个请求到达API时,它会经历几个阶段,如 ...
- 一键运行CIS安全扫描,集群安全无忧!
CIS安全扫描是Rancher 2.4推出的其中一个重磅功能,旨在帮助用户快速.有效地加强集群的安全性.本文将详细介绍CIS安全扫描这一功能,包含详细的操作demo. 本文来自Rancher Labs ...
- 阿里云上万个 Kubernetes 集群大规模管理实践
点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 汤志敏,阿里 ...
- 033.Kubernetes集群安全-API Server认证及授权
一 Kubernetes集群安全 1.1 安全机制 Kubernetes通过一系列机制来实现集群的安全控制,其中包括API Server的认证授权.准入控制机制及保护敏感信息的Secret机制等.集群 ...
- 7 步保障 Kubernetes 集群安全
随着 Kubernetes 的发展和改进,新的安全威胁和风险也逐渐向 K8s 转移,因此 K8s 安全性变得越来越重要,而保护 K8s 集群已成为 DevOps 团队不容忽视的重要任务.K8s 有多种 ...
随机推荐
- [深度学习]实现一个博弈型的AI,从五子棋开始
好久没有写过博客了,多久,大概8年???最近重新把写作这事儿捡起来……最近在折腾AI,写个AI相关的给团队的小伙伴们看吧. 搞了这么多年的机器学习,从分类到聚类,从朴素贝叶斯到SVM,从神经网络到深度 ...
- FastAdmin 开发时出错的调试
第一步:打开 FastAdmin Debug 打开 Debug. 第二步:打开浏览器控制器 打开浏览器控制器,并按 F5 重新加载页面. 第三步:在 network 查看详细错误信息 点击红色链接,可 ...
- Android 操作文件系统失败: Read-only file system
现象: $ adb push /d/Aaron/Desktop/libreference-ril-LS.so system/lib failed to copy 'D:/Aaron/Desktop/l ...
- CRC全套~~~ 转载
经测试CRC16-CCITT是可以了,其它暂时没有测试哦. 00 0E 00 01 00 01 20 17 12 26 20 19 16 01 00 00 01 01 00 00 00 00 00 0 ...
- C# 6.0 新特性收集
先来看一段Json.Net的代码 public JObject ToJson() { var result = new JObject(); result["X"] = X; re ...
- NetCore下模拟和使用Modbus工业通信协议
Tips: 1.目前NetCore下与Modbus通信的框架主要选择了 Modbus.Net https://github.com/parallelbgls/Modbus.Net 2.modbus是 ...
- NETCTOSS - 中国电信运营支持系统-网络版_V-1.0
NETCTOSS - 中国电信运营支持系统-网络版_V-1.0 NETCTOSS: C:China T:Telecom 电信 O:Operation 运营 S:Support 支持 S:System ...
- jmeter线程组 讲解
- zookeeper基本讲解(Java版,真心不错)
1. 概述 Zookeeper是Hadoop的一个子项目,它是分布式系统中的协调系统,可提供的服务主要有:配置服务.名字服务.分布式同步.组服务等. 它有如下的一些特点: 简单 Zookeeper的核 ...
- SQLSERVER出错提示:此上下文中不允许使用''。此处只允许使用常量、表达式或变量。不允许使用列名。
在执行一段SQL语句时出现了这样的一段错误提示,在网上找了不少答案,都说的不是很详细,反复修改试验,最终解决了此问题.原SQl语句为: insert into shoufei(djbh,sflb,jk ...