Toggle navigation
主页
English
K8S
Golang
Guitar
About Me
归档
标签
Welcome to Sanger's Blog!
Centos 7.X上二进制安装k8s
K8S
2024-01-10 17:34:36
15
0
0
sanger
K8S
[toc] # Centos 7.X上二进制安装k8s ## 系统环境 均为centos7.x master | node1 | node2 ---|---|--- 192.168.2.237<br> | 192.168.2.238 | 192.168.2.239 2c2g50g | 2c4g50g | 2c4g50g ## warnning > 一定要注意各节点的时区、时间必须要统一 > master上记得安装ansible ## 一键安装过程 > [参考地址-大佬github](https://github.com/easzlab/kubeasz.git) > 先把项目download下来 `git clone https://github.com/easzlab/kubeasz.git` > 然后把项目中的所有内容拷贝到/etc/ansible下 > 根据需求编辑hosts文件 ### 执行一键安装shell脚本,或一个步骤一个步骤的安装 `ansible-playbook 90-setup.sh` ### 验证集群是否安装成功 `kubectl get node` ## k8s dashboard ### 安装的是dashboard 1.10.1版本 [参考地址](https://github.com/kubernetes/dashboard) `kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml` ### 创建Service Account 和 ClusterRoleBinding $ kubectl apply -f /etc/ansible/manifests/dashboard/admin-user-sa-rbac.yaml ### 获取 Bearer Token,找到输出中 ‘token:’ 开头那一行 $ kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}') ### 通过下面的命令开启了帐号密码登录模式 `./tools/easzctl basic-auth -s` ``BASIC_AUTH_USER: 'admin'`` ``BASIC_AUTH_PASS: '123456'`` ``eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLThuemR0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiIxYjlkODU4OS05ZTEzLTExZTktODMxMC0wMDBjMjk3NzFmOTciLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZS1zeXN0ZW06YWRtaW4tdXNlciJ9.Z3y2hacn62RgjSVnn2WfE9HxE5kzZoxICUp6bQqex0xEZEoHZWC68FEtkKD_aywJr8Yulo5cX-HxWrbSTXkyGTHHCWyy-1GOGvDmUjE-HNV92N2Pvm7HN5SsQRoJjO1DPRGAYhyUnXcNcYi-7qfV5egR6czVzWy0KID7JD0giIdjbVN0kfWovy0b9yzIp8WJmifqHnfoAHb67avbS_udHKm3BdkUROcP5NW0WxrdVwJ30BW2r_ut6fZiSfizE3qxL1DuquI0CLdjWKJA0jbfLKtx58ugYOKdNivFg6YhT8bW66sas-wlOr4gxEXMAxC3f3Fa4qbnPdf-UlbAkJzbrg`` ### dashboard访问方式有三种 > 通过api-server方式访问dashboard > NodePort方式暴露服务,这样集群外部可以使用 https://NodeIP:NodePort (注意是https不是http,区别于1.6.3版本) 直接访问 dashboard。 > 配置ingress规则访问dashboard #### 通过api-server的方式 > 需要在kube-apiserver.service中加入 ``` cat /etc/systemd/system/kube-apiserver.service --basic-auth-file=/etc/kubernetes/ssl/basic-auth.csv ``` > 新建认证文件 ``` cat /etc/kubernetes/ssl/basic-auth.csv 123456,admin,1 123456,readonly,2 ``` > 最后重启apiserver服务生效 `systemctl restart kube-apiserver` #### 通过kube-proxy暴露dashboard [参考地址](https://feisky.gitbooks.io/kubernetes/components/kubectl.html) `kubectl proxy --address='0.0.0.0' --port=8888 --accept-hosts='^*$'` #### 通过ingress方式 [参考地址](https://github.com/easzlab/kubeasz/blob/master/docs/guide/ingress-tls.md#%E9%85%8D%E7%BD%AE-dashboard-ingress) 本实验用的是traefik-ingress ## 通过haproxy+keepalived做流量前置(等同于阿里云的SLB) [参考地址](https://github.com/easzlab/kubeasz/blob/master/docs/op/loadballance_ingress_nodeport.md) `ansible-playbook /etc/ansible/roles/ex-lb/ex-lb.yml` ## 安装监控系统prometheus+grafana ### 通过helm来安装的 > 在所有节点安装socat `yum -y install socat` > 下载最新版本的helm和tiller,并拷贝到/etc/ansible/bin/下 `https://get.helm.sh/helm-v2.14.1-linux-amd64.tar.gz` > 安装helm和tiller `ansible-playbook /etc/ansible/roles/helm/helm.yml` ### 安装prometheus ``` cd /etc/ansible/manifests/prometheus && \ helm install --tls \ --name monitor \ --namespace monitoring \ -f prom-settings.yaml \ -f prom-alertsmanager.yaml \ -f prom-alertrules.yaml \ prometheus kubectl apply -f /etc/ansible/manifests/prometheus/webhook-dingtalk.yml ## 这个yml文件的镜像中没有tmpl文件,整个输出很乱,而且也没有恢复的信息,相关的镜像需要自己做一个 ## sanger/prometheus-webhook-dingtalk:v0.0.1 ``` ### 安装garafana ``` helm install --tls \ --name grafana \ --namespace monitoring \ -f grafana-settings.yaml \ -f grafana-dashboards.yaml \ grafana ``` ## 通过CRD(Custom Resource Definition)方式安装promethus+grafana [什么是CRD](https://jimmysong.io/posts/kuberentes-crd-custom-resource/) [安装参考了](https://www.servicemesher.com/blog/prometheus-operator-manual/) [github项目地址](https://github.com/coreos/kube-prometheus.git) ## 安装EFK日志系统 kibana无法连接es ## 其他问题 ### 镜像问题 由于国内无法拉取k8s.gcr.io的镜像 [参考地址](https://www.zhoufengjie.cn/?p=391) `docker pull mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1 && docker tag mirrorgooglecontainers/kubernetes-dashboard-amd64:v1.10.1 k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1` ### 强制删除pod 问题:kubelet delete pod之后总处于Terminating,无法移除 解决:加参数 --force --grace-period=0,grace-period表示过渡存活期,默认30s,在删除POD之前允许POD慢慢终止其上的容器进程,从而优雅退出,0表示立即终止POD ``kubectl delete pod -n kube-system kube-flannel-ds-amd64-v9m4b --force --grace-period=0`` ``` #批量删除命名空间是monitoring,pod状态为Terminating的 kubectl delete pod -n monitoring `kubectl get po -n monitoring | grep Terminating | awk '{print $1}'` --grace-period=0 --force kubectl get pods -n kube-system |grep Evicted | awk '{print $1}' | xargs kubectl delete pod -n kube-system --grace-period=0 --force ```
上一篇:
Ingress
下一篇:
ACK专有集群手动签发替换Apiserver证书指导
0
赞
15 人读过
新浪微博
微信
更多分享
腾讯微博
QQ空间
人人网
文档导航