本文目录
本机虚拟机centos7环境搭建k8s集群-实践篇
成功后末尾输出信息如下:
查看安装的镜像
测试一下kubectl命令
报错:The connection to the server raw.githubusercontent.com was refused - did you specify the right host or port? 原因:外网不可访问 解决办法:
重新执行上面命令,便可成功安装!
在master查看
至此,主从双节点集群搭建完毕,后续部署相关,敬请期待! 觉得有用的,请动动手指点个赞, 以赞鼓励 !!!
参考文章
k8s部署基础服务
注意把10.170.208.111 替换成自己linux虚拟机的ip地址 # kubeadm init \ --apiserver-advertise-address=10.170.208.111 \ --image-repository registry.aliyuncs.com/google_containers \ --kubernetes-version=v1.19.4 \ --service-cidr=10.96.0.0/12 \ --pod-network-cidr=10.244.0.0/16 \ --token-ttl=0 安装方式建议实用kubeadm安装方式 kubectl taint nodes --all node-role.kubernetes.io/master- ***隐藏网址*** 多网卡服务器需要指定网卡 vim kube-flannel.yml kubectl apply -f kube-flannel.yml 查找问题 journalctl -f -u kubelet.service ***隐藏网址*** ***隐藏网址*** # On first install only kubectl create secret generic -n metallb-system memberlist --from-literal=secretkey="$(openssl rand -base64 128)" cat 《《EOF》metallb.cfg apiVersion: v1 kind: ConfigMap metadata: namespace: metallb-system name: config data: config: | address-pools: - name: default protocol: layer2 addresses: - 10.170.208.10-10.170.208.15 EOF 10.170.208.10-10.170.208.15 是负载均衡使用的ip范围 kubectl apply -f metallb.cfg ***隐藏网址*** ***隐藏网址*** vim recommended.yaml spec: type: NodePort ports: - port: 443 targetPort: 8443 nodePort: 30000 selector: k8s-app: kubernetes-dashboard kubectl apply -f recommended.yaml cat 《《EOF》admin-user.yaml apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard EOF kubectl apply -f admin-user.yaml serviceaccount/admin-user created Creating a ClusterRoleBinding cat 《《EOF》ClusterRoleBinding.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard EOF kubectl apply -f ClusterRoleBinding.yaml 使用token进行登录,执行下面命令获取token kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk ’{print $1}’) kubectl create clusterrolebinding serviceaccount-cluster-admin --clusterrole=cluster-admin --group=system:serviceaccount ***隐藏网址*** cd istio-1.10.0 export PATH=$PWD/bin:$PATH istioctl install --set profile=demo -y kubectl label namespace default istio-injection=enabled ***隐藏网址*** tar -zxvf helm-v3.6.1-linux-amd64.tar.gz mv linux-amd64/helm /usr/local/bin/helm 共享端安装nfs-server,k8s所在主机安装nfs客户端【具体根据linux版本安装对应包】 以ubuntu为例: apt-get install nfs-kernel-server vim /etc/exports /data/k8s *(rw,sync,no_root_squash) 手动 mount -t nfs -o nolock -o tcp 10.170.208.111:/data/k8s /nfs 自动 vim /etc/fstab # nfs volumes 10.170.208.111:/data/k8s /nfs nfs defaults 0 0 helm search repo nfs-client-provisioner helm install aliyuncs/nfs-client-provisioner --name nfs-storageclass --set nfs.server=10.170.208.111 --set nfs.path=/data/k8s helm install stable/nfs-client-provisioner --name nfs-storageclass --set nfs.server=10.170.208.111 --set nfs.path=/data/k8s helm pull stable/nfs-client-provisioner --untar cd nfs-client-provisioner/ vim values.yaml values.yaml ... nfs: server: 10.170.208.111 path: /data/k8s mountOptions: ... helm install nfs -f values.yaml . helm pull aliyuncs/kafka tar -zxvf kafka-7.2.2.tgz cd kafka helm install kafka . -f ./values.yaml --set service.type=NodePort ***隐藏网址*** helm install bibt bitnami/postgresql-ha export POSTGRES_PASSWORD=$(kubectl get secret --namespace default bibt-postgresql-ha-postgresql -o jsonpath="{.data.postgresql-password}" | base64 --decode) export | grep POSTGRES_PASSWORD export REPMGR_PASSWORD=$(kubectl get secret --namespace default bibt-postgresql-ha-postgresql -o jsonpath="{.data.repmgr-password}" | base64 --decode) export | grep REPMGR_PASSWORD helm install redis-service bitnami/redis-cluster export REDIS_PASSWORD=$(kubectl get secret --namespace "default" redis-service-redis-cluster -o jsonpath="{.data.redis-password}" | base64 --decode) export | grep REDIS_PASSWORD helm install mongodb bitnami/mongodb export MONGODB_ROOT_PASSWORD=$(kubectl get secret --namespace default mongodb -o jsonpath="{.data.mongodb-root-password}" | base64 --decode) export | grep MONGODB_ROOT_PASSWORD helm install mqtt emqx/emqx --set service.type=LoadBalancer export EMQX_ROOT_PASSWORD=$(kubectl get secret --namespace default mqtt -o jsonpath="{.data.emqx-root-password}" | base64 --decode) export | grep EMQX_ROOT_PASSWORD ***隐藏网址*** # Helm 增加 Elastic 仓库 ***隐藏网址*** # 安装 ElasticSearch Master 节点 helm install elasticsearch --set antiAffinity=soft elastic/elasticsearch helm install kibana elastic/kibana helm install apm-server elastic/apm-server ***隐藏网址*** tar -zxvf v7.13.2.tar.gz cd helm-charts-7.13.2/filebeat/examples/deployment make install helm upgrade --wait --timeout=900s --install --values values.yaml helm-filebeat-deployment ../../
Kubernetes Redis 高可用方案
Redis 高可用方案常用的有两种:Redis Sentinel 和 Redis Cluster ,本篇笔记介绍这两种方案如何在 Kubernetes 中部署。在 Kubernetes 里部署服务通常有三种方式:自己手写 Kubernetes 资源描述文件(Manifests YAML)、Helm Chart 和 Operator 。手写资源描述文件需要对配置非常熟悉才能写的好,对于初学者一般采用 Helm 或者 Operator 方式安装,这里采用 Operator ,之所以选择 Operator ,是因为本着最简安装的原则,使用 Operator 方式安装可以少安装一个组件 Helm 。 ***隐藏网址*** 安装 Operator 以及相关权限: ***隐藏网址*** 注意: -c 这个参数是需要加上的,否则会报错,因为按照分配算法需要 redis-cli 能够对 Cluster 自动寻址。