1. 程式人生 > >部署kube-apiserver

部署kube-apiserver

1. 建立kube-apiserver證書

1)建立kube-apiserver證書籤名請求

複製程式碼
# api-server啟用雙向TLS認證
[[email protected] ~]# mkdir -p /etc/kubernetes/apiserver
[[email protected] ~]# cd /etc/kubernetes/apiserver/
[[email protected] apiserver]# touch apiserver-csr.json

# hosts欄位不為空時,指定授權使用該證書的ip與域名列表;
# 加入叢集個節點ip,1次生成證書分發即可;
# 前端ha節點也需要與apiserver通訊;
# 同時指定叢集內部多個域名與kube-apiserver註冊的名為kubernetes的服務ip(Service Cluster IP),一般是--service-cluster-ip-range 選項值指定的網段的第一個IP [[email protected] apiserver]# vim apiserver-csr.json { "CN": "kubernetes", "hosts": [ "127.0.0.1", "172.30.200.10", "172.30.200.11", "172.30.200.12", "172.30.200.21
", "172.30.200.22", "172.30.200.23", "169.169.0.1", "kubernetes", "kubernetes.default", "kubernetes.default.svc", "kubernetes.default.svc.cluster", "kubernetes.default.svc.cluster.local" ], "key": { "algo": "rsa", "size": 2048 },
"names": [ { "C": "CN", "ST": "ChengDu", "L": "ChengDu", "O": "k8s", "OU": "cloudteam" } ] }
複製程式碼

2)生成kube-apiserver證書與私鑰

[[email protected] apiserver]# cfssl gencert -ca=/etc/kubernetes/ssl/ca.pem \
-ca-key=/etc/kubernetes/ssl/ca-key.pem \
-config=/etc/kubernetes/ssl/ca-config.json \
-profile=kubernetes apiserver-csr.json | cfssljson -bare apiserver

# 分發apiserver.pem,apiserver-key.pem
[[email protected] apiserver]# scp apiserver.pem apiserver-key.pem [email protected]:/etc/kubernetes/apiserver/
[[email protected] apiserver]# scp apiserver.pem apiserver-key.pem [email protected]:/etc/kubernetes/apiserver/

2. 配置kube-apiserver的systemd unit檔案

相關可執行檔案在部署kubectl時已部署完成。

1)建立kube-apiserver使用的客戶端token檔案

kubelet 啟動時向 kube-apiserver傳送註冊資訊,在雙向的TLS加密通訊環境中需要認證,手工為kubelet生成證書/私鑰在node節點較少且數量固定時可行,採用TLS Bootstrapping 機制,可使大量的node節點自動完成向kube-apiserver的註冊請求。

原理:kubelet 首次啟動時向 kube-apiserver 傳送 TLS Bootstrapping 請求,kube-apiserver 驗證 kubelet 請求中的 token 是否與它配置的 token.csv 一致,如果一致則自動為 kubelet生成證書和祕鑰。

複製程式碼
[[email protected] ~]# mkdir -p /etc/kubernetes/bootstrap
[[email protected] ~]# cd /etc/kubernetes/bootstrap/
[[email protected] bootstrap]# cat > token.csv << EOF
${BOOTSTRAP_TOKEN},kubelet-bootstrap,10001,"system:kubelet-bootstrap"
EOF

# 分發
[[email protected] ~]# scp /etc/kubernetes/bootstrap/token.csv [email protected]:/etc/kubernetes/bootstrap/
[[email protected] ~]# scp /etc/kubernetes/bootstrap/token.csv [email protected]:/etc/kubernetes/bootstrap/
複製程式碼

2)配置kube-apiserver的systemd unit檔案

複製程式碼
[[email protected] ~]# touch /usr/lib/systemd/system/kube-apiserver.service
[[email protected] ~]# vim /usr/lib/systemd/system/kube-apiserver.service
[Unit]
Description=Kubernetes API Server
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=network.target

[Service]
User=root
EnvironmentFile=/usr/local/kubernetes/kube-apiserver.conf
ExecStart=/usr/local/kubernetes/bin/kube-apiserver $KUBE_API_ARGS
Restart=on-failure
RestartSec=5
Type=notify
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
# 啟動引數檔案; # --admission-control:kuberneres叢集的准入控制機制,各控制模組以外掛的形式依次生效,叢集時必須包含ServiceAccount; # --bind-address:不能為 127.0.0.1;在本地址的6443埠開啟https服務,預設值0.0.0.0; # --insecure-port=0:禁用不安全的http服務,預設開啟,埠8080,設定為0禁用; --secure-port=6443:https安全埠,預設即6443,0表示禁用; # --authorization-mode:在安全埠使用 RBAC 授權模式,未通過授權的請求拒絕; # --service-cluster-ip-range:指定 Service Cluster IP 地址段,該地址段外部路由不可達; # --service-node-port-range:指定 NodePort 的埠範圍; # --storage-backend:持久化儲存型別,v1.6版本後預設即etcd3; # --enable-swagger-ui:設定為true時,啟用swagger-ui網頁,可通過apiserver的usl/swagger-ui訪問,預設為false; # --allow-privileged:設定為true時,kubernetes允許在Pod中執行擁有系統特權的容器應用; # --audit-log-*:審計日誌相關; # --event-ttl:apiserver中各時間保留時間,預設即1h,通常用於審計與追蹤; # --logtostderr:預設為true,輸出到stderr,不輸出到日誌; # --log-dir:日誌目錄; # --v:日誌級別 [[email protected] ~]# touch /usr/local/kubernetes/kube-apiserver.conf [[email protected] ~]# vim /usr/local/kubernetes/kube-apiserver.conf KUBE_API_ARGS="--admission-control=NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,ResourceQuota,NodeRestriction \ --advertise-address=172.30.200.21 \ --bind-address=172.30.200.21 \ --insecure-port=0 \ --authorization-mode=Node,RBAC \ --runtime-config=rbac.authorization.k8s.io/v1beta1 \ --kubelet-https=true \ --token-auth-file=/etc/kubernetes/bootstrap/token.csv \ --service-cluster-ip-range=169.169.0.0/16 \ --service-node-port-range=10000-60000 \ --tls-cert-file=/etc/kubernetes/apiserver/apiserver.pem \ --tls-private-key-file=/etc/kubernetes/apiserver/apiserver-key.pem \ --client-ca-file=/etc/kubernetes/ssl/ca.pem \ --service-account-key-file=/etc/kubernetes/ssl/ca-key.pem \ --etcd-cafile=/etc/kubernetes/ssl/ca.pem \ --etcd-certfile=/etc/kubernetes/apiserver/apiserver.pem \ --etcd-keyfile=/etc/kubernetes/apiserver/apiserver-key.pem \ --storage-backend=etcd3 \ --etcd-servers=https://172.30.200.21:2379,https://172.30.200.22:2379,https://172.30.200.23:2379 \ --enable-swagger-ui=true \ --allow-privileged=true \ --apiserver-count=3 \ --audit-log-maxage=30 \ --audit-log-maxbackup=3 \ --audit-log-maxsize=100 \ --audit-log-path=/var/lib/audit.log \ --event-ttl=1h \ --logtostderr=false \ --log-dir=/var/log/kubernetes/apiserver \ --v=2 1>>/var/log/kubernetes/apiserver/kube-apiserver.log 2>&1" # 建立日誌目錄 [[email protected] ~]# mkdir -p /var/log/kubernetes/apiserver 
複製程式碼

3. 啟動並驗證

[[email protected] ~]# systemctl daemon-reload
[[email protected] ~]# systemctl enable kube-apiserver
[[email protected] ~]# systemctl start kube-apiserver
[[email protected] ~]# systemctl status kube-apiserver

相關推薦

kubernetes部署 kube-apiserver服務

參數 onf notify audit add 步驟 address daemon bec kubernetes部署 kube-apiserver 組件 本文檔講解使用 keepalived 和 haproxy 部署一個 3 節點高可用 master 集群的步驟。 kube

部署kube-apiserver

1. 建立kube-apiserver證書1)建立kube-apiserver證書籤名請求# api-server啟用雙向TLS認證 [[email protected] ~]# mkdir -p /etc/kubernetes/apiserver [[email&

009.Kubernetes二進位制部署kube-apiserver

一 部署master節點 1.1 master節點服務 kubernetes master 節點執行如下元件: kube-apiserver kube-scheduler kube-controller-manager kube-nginx kube-apiserver、kube-scheduler 和

使用kubeadm部署k8s集群03-擴容kube-apiserver到3節點

sage back exp issue 重新 man ble sub 證書 使用kubeadm部署k8s集群03-擴容kube-apiserver到3節點 2018/1/3 擴容 kube-apiserver 到 3 節點 配置 kube-apiserver.yaml 分

使用kubeadm部署k8s集群04-配置kubelet訪問kube-apiserver

apiserver let -s system users sed net -i sys 使用kubeadm部署k8s集群04-配置kubelet訪問kube-apiserver 2018/1/4 配置 kubelet 訪問 kube-apiserver 切換 maste

部署k8s ssl集群實踐6:配置高可用kube-apiserver組件ha+keepalived

ops oba alived service 文章 system 兩個 ace 什麽 參考文檔:https://github.com/opsnull/follow-me-install-kubernetes-cluster感謝作者的無私分享。集群環境已搭建成功跑起來。文章是

部署kube-prometheus,添加郵件報警

cpu time sbt dashboard hack ont png 準備 blog 這個項目出自coreos,已經存在很久了,第一次嘗試的時候還很簡陋,現在完善了很多。 項目提供了一鍵部署腳本,跑起來並不難,不過個人感覺要真正掌握並靈活使用並不是很容易。 kube ve

kube-apiserver進程無法啟動了,k8s 1.7.12

k8s kubernetes kube-apiserver 服務 無法啟動 [root@k8s_m3:~]# journalctl -fu kube-apiserver-- Logs begin at Fri 2018-03-23 05:28:27 CST. --Mar 23 11:21:

手動安裝K8s第七節:node節點部署-kube-proxy

docker k8s kubernetes 容器 部署Kubernetes Proxy vim CentOS-Base.repo [base]name=CentOS-$releasever - Base#mirrorlist=http://mirrorlist.centos.org/?rele

部署k8s ssl集群實踐14:work節點部署kube-proxy

ner des csr limit 修改 流量 log config文件 tco 二進制文件前面已經下載分發好。 6.1創建kube-proxy證書 創建證書簽名請求 [root@k8s-master1 kube-proxy]# cat kube-proxy-csr.jso

[ERROR ImagePull]: failed to pull image [k8s.gcr.io/kube-apiserver-amd64:v1.11.1]: exit status 1

occurred cidr .com src cal 4.0 schedule -a uber 問題描述 [root@localhost ~]# kubeadm init --kubernetes-version=v1.11.1 --pod-network-cidr=10.

kubernetes部署kube-scheduler服務

scp sch names 訪問 emd sta sys form unit 同樣的分非認證授權和認證授權: 非認證授權: cat > /lib/systemd/system/kube-scheduler.service <<EOF [Unit] Des

【kubernetes/k8s原始碼分析】kube-apiserver的go-restful框架使用

go-restful框架     github: https://github.com/emicklei/go-restful 三個重要資料結構   1. 初始化   路徑pkg/kubelet/kubelet.go中函式Ne

二進位制安裝kubernetes v1.11.2 (瀏覽器訪問 kube-apiserver 安全埠)

參考: https://github.com/opsnull/follow-me-install-kubernetes-cluster/blob/master/A.%E6%B5%8F%E8%A7%88%E5%99%A8%E8%AE%BF%E9%97%AEkube-apiserver%E5%AE%89%E5%

二進制安裝kubernetes v1.11.2 (瀏覽器訪問 kube-apiserver 安全端口)

dashboard verify image 命令行工具 將他 export 授權 apiserver blob 參考: https://github.com/opsnull/follow-me-install-kubernetes-cluster/blob/master/

kubernetes 從v1.7.6升級到v1.11.2版本--kube-apiserver錯誤分析

錯誤日誌 [[email protected]47-35 ~]# kubectl logs -f kube-apiserver-master-47-34 -n kube-system ... E0912 06:36:05.215312

kubernetes1.14部署kube-dashboard:

esc token aml dmi gre 代理 執行 get accep 部署dashboard wget https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.0/src/deploy/recomme

010.Kubernetes二進位制部署kube-controller-manager

一 部署高可用kube-controller-manager 1.1 高可用kube-controller-manager介紹 本實驗部署一個三例項 kube-controller-manager 的叢集,啟動後將通過競爭選舉機制產生一個 leader 節點,其它節點為阻塞狀態。當 leader 節點不可用時

使用kubeadm部署k8s集群07-擴容kube-scheduler到3節點

同步 all 配置 啟動 uber manifest 操作 schedule esp 使用kubeadm部署k8s集群07-擴容kube-scheduler到3節點 2018/1/4 擴容 kube-scheduler 到 3 節點 連接到本節點的 apiserver

使用kubeadm部署k8s集群06-擴容kube-controller-manager到3節點

sed account 同步 config 修改配置 ont etc Language serve 使用kubeadm部署k8s集群06-擴容kube-controller-manager到3節點 2018/1/3 擴容 kube-controller-manager 到