经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » Kubernetes » 查看文章
二进制安装 kubernetes 1.12(三) - 部署 Master 节点组件
来源:cnblogs  作者:klvchen  时间:2019/1/24 9:29:38  对本文有异议

在Master节点部署组件

在部署Kubernetes之前一定要确保etcd、?annel、docker是正常工作的,否则先解决问题再继续。

创建 CA 证书

  1. mkdir -p /iba/master-ca
  2. cd /iba/master-ca
  3. cat > ca-config.json << EOF
  4. {
  5. "signing": {
  6. "default": {
  7. "expiry": "87600h"
  8. },
  9. "profiles": {
  10. "kubernetes": {
  11. "expiry": "87600h",
  12. "usages": [
  13. "signing",
  14. "key encipherment",
  15. "server auth",
  16. "client auth"
  17. ]
  18. }
  19. }
  20. }
  21. }
  22. EOF
  23. cat > ca-csr.json << EOF
  24. {
  25. "CN": "kubernetes",
  26. "key": {
  27. "algo": "rsa",
  28. "size": 2048
  29. },
  30. "names": [
  31. {
  32. "C": "CN",
  33. "L": "Beijing",
  34. "ST": "Beijing",
  35. "O": "k8s",
  36. "OU": "System"
  37. }
  38. ]
  39. }
  40. EOF
  41. cfssl gencert -initca ca-csr.json | cfssljson -bare ca -
  42. # 生成了 ca.csr ca-key.pem ca.pem

生成 apiserver 证书:

  1. cat > server-csr.json << EOF
  2. {
  3. "CN": "kubernetes",
  4. "hosts": [
  5. "10.0.0.1",
  6. "127.0.0.1",
  7. "192.168.0.205",
  8. "kubernetes",
  9. "kubernetes.default",
  10. "kubernetes.default.svc",
  11. "kubernetes.default.svc.cluster",
  12. "kubernetes.default.svc.cluster.local"
  13. ],
  14. "key": {
  15. "algo": "rsa",
  16. "size": 2048
  17. },
  18. "names": [
  19. {
  20. "C": "CN",
  21. "L": "BeiJing",
  22. "ST": "BeiJing",
  23. "O": "k8s",
  24. "OU": "System"
  25. }
  26. ]
  27. }
  28. EOF
  29. cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes server-csr.json | cfssljson -bare server
  30. # 生成了 server.pem,server-key.pem,server.csr

生成 kube-proxy 证书:

  1. cat > kube-proxy-csr.json << EOF
  2. {
  3. "CN": "system:kube-proxy",
  4. "hosts": [],
  5. "key": {
  6. "algo": "rsa",
  7. "size": 2048
  8. },
  9. "names": [
  10. {
  11. "C": "CN",
  12. "L": "Beijing",
  13. "ST": "Beijing",
  14. "O": "k8s",
  15. "OU": "System"
  16. }
  17. ]
  18. }
  19. EOF
  20. cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes kube-proxy-csr.json | cfssljson -bare kube-proxy
  21. # 生成了 kube-proxy.pem, kube-proxy-key.pem, kube-proxy.csr

部署 apiserver 组件

  1. mkdir /opt/kubernetes/{bin,cfg,ssl} -p
  2. cd /iba/tools
  3. wget https://dl.k8s.io/v1.12.4/kubernetes-server-linux-amd64.tar.gz
  4. tar zxvf kubernetes-server-linux-amd64.tar.gz
  5. cd kubernetes/server/bin/
  6. cp kube-apiserver kube-scheduler kube-controller-manager kubectl /opt/kubernetes/bin/
  7. # 创建token文件
  8. cd /opt/kubernetes/cfg/
  9. cat > token.csv<< EOF
  10. 674c457d4dcf2eefe4920d7dbb6b0ddc,kubelet-bootstrap,10001,"system:kubelet-bootstrap"
  11. EOF
  12. # token文件说明 -- 第一列:随机字符串,自己可生成;第二列:用户名;第三列:UID ;第四列:用户组

创建apiserver配置文件

  1. cat > /opt/kubernetes/cfg/kube-apiserver << EOF
  2. KUBE_APISERVER_OPTS="--logtostderr=true --v=4 --etcd-servers=https://192.168.0.205:2379,https://192.168.0.206:2379,https://192.168.0.207:2379 --bind-address=192.168.0.205 --secure-port=6443 --advertise-address=192.168.0.205 --allow-privileged=true --service-cluster-ip-range=10.0.0.0/24 --enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,ResourceQuota,NodeRestriction --authorization-mode=RBAC,Node --enable-bootstrap-token-auth --token-auth-file=/opt/kubernetes/cfg/token.csv --service-node-port-range=30000-50000 --tls-cert-file=/opt/kubernetes/ssl/server.pem --tls-private-key-file=/opt/kubernetes/ssl/server-key.pem --client-ca-file=/opt/kubernetes/ssl/ca.pem --service-account-key-file=/opt/kubernetes/ssl/ca-key.pem --etcd-cafile=/opt/etcd/ssl/ca.pem --etcd-certfile=/opt/etcd/ssl/server.pem --etcd-keyfile=/opt/etcd/ssl/server-key.pem"
  3. EOF

参数说明:

  1. --logtostderr // 启用日志
  2. ---v // 日志等级
  3. --etcd-servers // etcd集群地址
  4. --bind-address // 监听地址
  5. --secure-port // https安全端口
  6. --advertise-address // 集群通告地址
  7. --allow-privileged // 启用授权
  8. --service-cluster-ip-range // Service虚拟IP地址段
  9. --enable-admission-plugins // 准入控制模块
  10. --authorization-mode // 认证授权,启用RBAC授权和节点自管理
  11. --enable-bootstrap-token-auth // 启用TLS bootstrap功能,后面会讲到
  12. --token-auth-file // token文件
  13. --service-node-port-range Service // Node类型默认分配端口范围
systemd管理apiserver
  1. cat > /usr/lib/systemd/system/kube-apiserver.service << -'EOF'
  2. [Unit]
  3. Description=Kubernetes API Server
  4. Documentation=https://github.com/kubernetes/kubernetes
  5. [Service]
  6. EnvironmentFile=-/opt/kubernetes/cfg/kube-apiserver
  7. ExecStart=/opt/kubernetes/bin/kube-apiserver $KUBE_APISERVER_OPTS
  8. Restart=on-failure
  9. [Install]
  10. WantedBy=multi-user.target
  11. -EOF
  12. # 复制证书到指定的位置
  13. cd /iba/master-ca/
  14. cp server.pem server-key.pem ca.pem ca-key.pem /opt/kubernetes/ssl/
  15. systemctl daemon-reload
  16. systemctl enable kube-apiserver
  17. systemctl start kube-apiserver
  18. systemctl status kube-apiserver

部署 scheduler 组件

  1. # 创建schduler配置文件
  2. cat > /opt/kubernetes/cfg/kube-scheduler << EOF
  3. KUBE_SCHEDULER_OPTS="--logtostderr=true --v=4 --master=127.0.0.1:8080 --leader-elect"
  4. EOF
  5. # systemd管理schduler组件
  6. cat > /usr/lib/systemd/system/kube-scheduler.service << -'EOF'
  7. [Unit]
  8. Description=Kubernetes Scheduler
  9. Documentation=https://github.com/kubernetes/kubernetes
  10. [Service]
  11. EnvironmentFile=-/opt/kubernetes/cfg/kube-scheduler
  12. ExecStart=/opt/kubernetes/bin/kube-scheduler $KUBE_SCHEDULER_OPTS
  13. Restart=on-failure
  14. [Install]
  15. WantedBy=multi-user.target
  16. -EOF
  17. # 启动 kube-scheduler
  18. systemctl daemon-reload
  19. systemctl enable kube-scheduler
  20. systemctl start kube-scheduler
  21. systemctl status kube-scheduler

部署 controller-manager 组件

  1. # 创建controller-manager配置文件:
  2. cat > /opt/kubernetes/cfg/kube-controller-manager << EOF
  3. KUBE_CONTROLLER_MANAGER_OPTS="--logtostderr=true --v=4 --master=127.0.0.1:8080 --leader-elect=true --address=127.0.0.1 --service-cluster-ip-range=10.0.0.0/24 --cluster-name=kubernetes --cluster-signing-cert-file=/opt/kubernetes/ssl/ca.pem --cluster-signing-key-file=/opt/kubernetes/ssl/ca-key.pem --root-ca-file=/opt/kubernetes/ssl/ca.pem --service-account-private-key-file=/opt/kubernetes/ssl/ca-key.pem"
  4. EOF
  5. # systemd管理controller-manager组件
  6. cat > /usr/lib/systemd/system/kube-controller-manager.service << -'EOF'
  7. [Unit]
  8. Description=Kubernetes Controller Manager
  9. Documentation=https://github.com/kubernetes/kubernetes
  10. [Service]
  11. EnvironmentFile=-/opt/kubernetes/cfg/kube-controller-manager
  12. ExecStart=/opt/kubernetes/bin/kube-controller-manager $KUBE_CONTROLLER_MANAGER_OPTS
  13. Restart=on-failure
  14. [Install]
  15. WantedBy=multi-user.target
  16. -EOF
  17. # 启动 kube-scheduler
  18. systemctl daemon-reload
  19. systemctl enable kube-controller-manager
  20. systemctl start kube-controller-manager
  21. systemctl status kube-controller-manager

检查当前集群组件状态

  1. /opt/kubernetes/bin/kubectl get cs

原文链接:http://www.cnblogs.com/klvchen/p/10306343.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号