文章主目录地址
其他组件的安装
部分安装方式有多种 任选其一即可.
开启命令提示
在命令行输入命令时按下tab会有提示,可以补全kubectl命令自动输入pod名称等功能
yum install bash-completion -y
echo "source <(kubectl completion bash)" >> ~/.bashrc
source .bashrc
集群网络安装
Kubernetes集群中容器通信所依赖的基础组件.flannel和calico任选其一即可.
两者的区别在于,calico在大规模的集群(如数百节点的集群中)中又更好的性能表现
安装flannel类型
kubectl apply -f https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
安装calico类型
使用Kubernetes API安装,适合于50节点以下集群
相对比更加推荐使用flannel网络,他使用范围更广更加稳定,但是如果是大规模的集群calico网络会更优
curl https://projectcalico.docs.tigera.io/manifests/calico.yaml -O
kubectl apply -f calico.yaml
helm安装calico
helm repo add projectcalico https://projectcalico.docs.tigera.io/charts
helm install calico projectcalico/tigera-operator --version v3.22.1
watch kubectl get pods -n calico-system
安装参考:安装calico网络
安装helm
helm是一个类似于centos的yum或者Ubuntu的apt-get命令的一个Kubernetes的包管理器.通过它可以快速简单的安装其他应用
wget https://get.helm.sh/helm-v3.6.1-linux-amd64.tar.gz
tar xf helm-v3.6.1-linux-amd64.tar.gz
mv linux-amd64/helm /usr/bin/
MetalLB
MetalLB是Kubernetes service中的一种资源,他需要预先创建好一个IP池,然后你只需要将service类型设置为LoadBalancer,就可以通过IP地址访问了.
方式1: 导入yaml文件
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.12.1/manifests/namespace.yaml
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.12.1/manifests/metallb.yaml
方式2: helm
helm repo add metallb https://metallb.github.io/metallb
kubectl create namespace metallb-system
helm install metallb metallb/metallb --namespace metallb-system
# helm install metallb metallb/metallb -f values.yaml
导入配置
kubectl apply -f -<<EOF
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
# 注意修改IP地址段
- 20.88.9.100-20.88.9.200
EOF
Ingress
kubectl apply方式
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.1/deploy/static/provider/cloud/deploy.yaml
helm安装方式
helm upgrade --install ingress-nginx ingress-nginx \
--repo https://kubernetes.github.io/ingress-nginx \
--namespace ingress-nginx --create-namespace
第三方镜像库(helm)安装
上面两种官方提供的安装方式存在镜像拉取问题,第三方可使用bitnami的镜像安装.
helm repo add bitnami https://charts.bitnami.com/bitnami
kubectl create namespace ingress
helm install my-release bitnami/nginx-ingress-controller --namespace ingress
# Read more about the installation in the NGINX Ingress Controller packaged by Bitnami Chart Github repository
安装完成后,会输出对应的提示,然后执行命令
kubectl get --namespace ingress-nginx svc -w ingress-nginx-ingress-controller
执行后会输出一个Service.我的Service绑定了一个LoadBalancer地址,所以将所有域名解析到这个IP.
获取ingress监听得IP地址:
export SERVICE_IP=$(kubectl get svc --namespace ingress-nginx ingress-nginx-ingress-controller -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo "Visit http://${SERVICE_IP} to access your application via HTTP."
echo "Visit https://${SERVICE_IP} to access your application via HTTPS."
检查
kubectl get pods --namespace=ingress-nginx
ingress install
容器可能有镜像拉取失败问题.可以将Deployment镜像k8s.gcr.io/ingress-nginx/controller:v1.1.1替换为bitnami/nginx-ingress-controller,docker.io/jettech/kube-webhook-certgen:v1.5.0,版本删除"v"尝试.或前往bitnami仓库](https://hub.docker.com/r/bitnami/nginx-ingress-controller/tags)自行寻找.