5.从0安装kubernetes集群-配置其他组件

本文详细介绍Kubernetes核心组件的部署流程,包括Kube-proxy、Kube-dns、CalicoNetwork及Dashboard的设置,覆盖证书生成、配置文件调整、服务启动等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

### Kubernetes Core Addons 部署
## 1.Kube-proxy addon
##   Kube-proxy 是实现 Service 的关键组件,kube-proxy 需要在每台节点上执行,
##   然后监听 API Server 的 Service 与 Endpoint 资源对象的改变,
##   然后来依据变化执行 iptables 来实现网络的转发。这边我们会需要建议一个 DaemonSet 来执行,
##   并且创建一些需要的 certificate。Kubernetes 1.8 kube-proxy 开启 ipvs

## 1.1.首先在master1下载kube-proxy-csr.json文件,并产生 kube-proxy certificate 证书:
cd /etc/kubernetes/pki
cp /data/download/kube-proxy-csr.json /etc/kubernetes/pki/kube-proxy-csr.json
cfssl gencert \
-ca=ca.pem \
-ca-key=ca-key.pem \
-config=ca-config.json \
-profile=kubernetes \
kube-proxy-csr.json | cfssljson -bare kube-proxy

ls kube-proxy*.pem
# kube-proxy-key.pem  kube-proxy.pem

## 1.2.通过以下指令生成名称为 kube-proxy.conf 的 kubeconfig 文件:
## 注意IP
# kube-proxy set-cluster
kubectl config set-cluster kubernetes \
    --certificate-authority=ca.pem \
    --embed-certs=true \
    --server="https://192.168.162.128:6443" \
    --kubeconfig=../kube-proxy.conf

# kube-proxy set-credentials
kubectl config set-credentials system:kube-proxy \
    --client-key=kube-proxy-key.pem \
    --client-certificate=kube-proxy.pem \
    --embed-certs=true \
    --kubeconfig=../kube-proxy.conf

# kube-proxy set-context
kubectl config set-context system:kube-proxy@kubernetes \
    --cluster=kubernetes \
    --user=system:kube-proxy \
    --kubeconfig=../kube-proxy.conf

# kube-proxy set default context
kubectl config use-context system:kube-proxy@kubernetes \
    --kubeconfig=../kube-proxy.conf

## 1.3.在master1将kube-proxy相关文件复制到 Node 节点上:
for NODE in node1 node2; do
  for FILE in pki/kube-proxy.pem pki/kube-proxy-key.pem kube-proxy.conf; do
    scp /etc/kubernetes/${FILE} ${NODE}:/etc/kubernetes/${FILE}
  done
done

## 1.4.完成后,在master1通过 kubectl 来创建 kube-proxy daemon:
mkdir -p /etc/kubernetes/addons
cd /etc/kubernetes/addons
cp /data/download/kube-proxy.yml /etc/kubernetes/addons/kube-proxy.yml
kubectl apply -f kube-proxy.yml
kubectl -n kube-system get po -l k8s-app=kube-proxy

## 1.5.在master1将kube-proxy.yml复制到 Node 节点上:
for NODE in node1 node2; do
  ssh ${NODE} "mkdir -p /etc/kubernetes/addons/"
  scp /etc/kubernetes/addons/kube-proxy.yml ${NODE}:/etc/kubernetes/addons/kube-proxy.yml
done

## 2.Kube-dns addon
##   Kube DNS 是 Kubernetes 集群内部 Pod 之间互相沟通的重要 Addon,
##   它允许 Pod 可以通过 Domain Name 方式来连接 Service,其主要由 
##   Kube DNS 与 Sky DNS 组合而成,通过 Kube DNS 监听 Service 与 Endpoint 变化,
##   来提供给 Sky DNS 信息,已更新解析地址。

## 2.1.安装只需要在master1通过 kubectl 来创建 kube-dns deployment 即可:
cp /data/download/kube-dns.yml /etc/kubernetes/addons/kube-dns.yml
kubectl apply -f kube-dns.yml
kubectl -n kube-system get po -l k8s-app=kube-dns


## 3.Calico Network 安装与设定
##      Calico 是一款纯 Layer 3 的数据中心网络方案(不需要 Overlay 网络),
##   Calico 好处是他已与各种云原生平台有良好的整合,而 Calico 在每一个节点
##   利用 Linux Kernel 实现高效的 vRouter 来负责数据的转发,而当数据中心复杂度
##   增加时,可以用 BGP route reflector 来达成。

## 3.1.首先在master1通过 kubectl 建立 Calico policy controller:
## 注意IP calico-controller.yml
cp /data/download/calico-controller.yml /etc/kubernetes/addons/calico-controller.yml
kubectl apply -f calico-controller.yml
kubectl -n kube-system get po -l k8s-app=calico-policy

## 3.2.在master1下载 Calico CLI 工具:
cp /data/download/calicoctl /usr/local/bin/calicoctl
chmod +x /usr/local/bin/calicoctl

## 3.3.然后在所有节点下载 Calico,并执行以下步骤:
cp /data/download/calico /opt/cni/bin/calico
cp /data/download/calico-ipam /opt/cni/bin/calico-ipam
chmod +x /opt/cni/bin/calico /opt/cni/bin/calico-ipam

## 3.4.接着在所有节点下载 CNI plugins配置文件,以及 calico-node.service:
mkdir -p /etc/cni/net.d
## 注意IP 10-calico.conf,calico-node.service
## 注意网卡 calico-node.service文件中IP_AUTODETECTION_METHOD指定对应网卡,默认为eth1
cp /data/download/10-calico.conf /etc/cni/net.d/10-calico.conf
cp /data/download/calico-node.service /lib/systemd/system/calico-node.service

## 3.5.所有节点启动 Calico-node:
systemctl daemon-reload
systemctl enable calico-node.service
systemctl start calico-node.service

## 3.6.在master1查看 Calico nodes:
## 注意IP
cat <<EOF > ~/calico-rc
export ETCD_ENDPOINTS="https://192.168.162.128:2379"
export ETCD_CA_CERT_FILE="/etc/etcd/ssl/etcd-ca.pem"
export ETCD_CERT_FILE="/etc/etcd/ssl/etcd.pem"
export ETCD_KEY_FILE="/etc/etcd/ssl/etcd-key.pem"
EOF

. ~/calico-rc
calicoctl get node -o wide
## NAME      ASN       IPV4                 IPV6   
## master1   (64512)   192.168.162.128/24          
## node1     (64512)   192.168.162.129/24          
## node2     (64512)   192.168.162.130/24 

## 3.7.检查所有pod
kubectl -n kube-system get po
## NAME                                       READY     STATUS    RESTARTS   AGE
## calico-policy-controller-576c6877f-jldcp   1/1       Running   0          38m
## kube-apiserver-master1                     1/1       Running   1          2d
## kube-controller-manager-master1            1/1       Running   1          2d
## kube-dns-6cb549f55f-47vdq                  3/3       Running   0          6h
## kube-proxy-47pd9                           1/1       Running   0          6h
## kube-proxy-6vxcc                           1/1       Running   0          6h
## kube-proxy-vnzgc                           1/1       Running   0          6h
## kube-scheduler-master1                     1/1       Running   1          2d

## 3.8.简单安装方法
## https://docs.projectcalico.org/v2.6/getting-started/kubernetes/installation/hosted/hosted


### 4.Dashboard addon
##    Dashboard 是 Kubernetes 社区官方开发的仪表板,有了仪表板后管理者就能够透过 
##    Web-based 方式来管理 Kubernetes 集群,除了提升管理方便,也让资源可视化,
##    让人更直觉看见系统信息的呈现结果。

##  4.1.接着在master1通过 kubectl 来建立 kubernetes dashboard:
##(github上的配置文件中deployment版本需要修改为apps/v1beta1)
##(rbac.authorization.k8s.io/v1beta1)
cp /data/download/kubernetes-dashboard.yaml /etc/kubernetes/addons/kubernetes-dashboard.yaml

kubectl apply -f kubernetes-dashboard.yaml
kubectl -n kube-system get po,svc -l k8s-app=kubernetes-dashboard
## NAME                                      READY     STATUS    RESTARTS   AGE
## po/kubernetes-dashboard-747c4f7cf-md5m8   1/1       Running   0          56s

## NAME                       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
## svc/kubernetes-dashboard   ClusterIP   10.97.200.2     <none>        443/TCP   56s


##  4.2.這邊會額外建立一個名稱為open-api Cluster Role Binding,這僅作為方便測試時使用,
##  在一般情況下不要開啟,不然就會直接被存取所有 API:
##  ps.管理者可以針對特定使用者來開放 API 存取權限,但這邊方便使用直接綁在 cluster-admin cluster role。

## cat <<EOF | kubectl create -f -
## apiVersion: rbac.authorization.k8s.io/v1beta1
## kind: ClusterRoleBinding
## metadata:
##   name: open-api
##   namespace: ""
## roleRef:
##   apiGroup: rbac.authorization.k8s.io
##   kind: ClusterRole
##   name: cluster-admin
## subjects:
##   - apiGroup: rbac.authorization.k8s.io
##     kind: User
##     name: system:anonymous
## EOF


##  4.3.在 1.7 版本以後的 Dashboard 將不再提供所有權限,因此需要建立一個
##  service account 來綁定 cluster-admin role:
##  复制token到 Kubernetes dashboard。
kubectl -n kube-system create sa dashboard
kubectl create clusterrolebinding dashboard --clusterrole cluster-admin --serviceaccount=kube-system:dashboard
SECRET=$(kubectl -n kube-system get sa dashboard -o yaml | awk '/dashboard-token/ {print $3}')
kubectl -n kube-system describe secrets ${SECRET} | awk '/token:/{print $2}'
#eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkYXNoYm9hcmQtdG9rZW4tMnhiamsiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGFzaGJvYXJkIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiZDQ2NWNjYmUtMzVjOS0xMWU5LWFjNTItMDA1MDU2MzQwMWI2Iiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRhc2hib2FyZCJ9.3o9jU9cGAOTF2sqRIPB-lTVjjWGumfKbRQWcz3XuSOsq-ZwBJhXaE1H7W1_wRRjzIdhvFpnylXzNSJaHeHZb6AU_yH4TMd9detaxk5GN4I_nb1_C8ftXuZ6apIDs6RrdobdTjscAN-u5zXs_hz4kgf9h8kxQrqTLAdaE9sQ7t0SG4uXdvps4sry9kSLBTjoXtCeR35XKwbWbA78mtgu5B2THdaTTEuWdtsLM2GvXq_lQGFF2PmNHrIG-NHY35-hCP4WtO1M6UftR6co8gNM_xTG8TRmmPl8K0QCXeFrKwfZ7-6tKm-jM0RKVPfURV2ZQEdi963adi6HMyy0Obw1JKw


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值