使用kubeadm安装k8s集群
安装基于haproxy的load balancer
sudo apt install -y keepalived haproxy
# edit, update, restart keepalived
# misc/kubeadm/keepalived.conf
sudo cp keepalived.conf /etc/keepalived/
sudo systemctl restart keepalived
# edit, ,update, restart haproxy
# misc/kubeadm/haproxy.cfg
sudo cp haproxy.cfg /etc/haproxy/
sudo systemctl restart haproxy
参考keepalived.conf配置文件见harix-deploy/misc/kubeadm/keepalived.conf,当前版本如下,不同环境的virtual_router_id需要不一样,同一个环境的不同机器的priority应该不一样
vrrp_instance VI_1 {
state MASTER
interface ens160
virtual_router_id 161
priority 101
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
unicast_peer {
172.16.23.55
172.16.23.56
172.16.23.57
}
virtual_ipaddress {
172.16.23.61
}
}
参考haproxy.cfg配置文件见harix-deploy/misc/kubeadm/haproxy.cfg
关闭swap
安装docker-ce
安装kubelet kubeadm kubectl
安装kubectl bash completion
kubectl completion bash >/etc/bash_completion.d/kubectl
修改/etc/hosts
首先设置机器的hosts文件,一个是load balancer地址,比如下面23.60是前面lb上配置的vip地址,一个是harbor的地址比如下面的13.133
# edit /etc/hosts, such as
172.16.23.60 harix45lb
172.16.13.133 harbor.cloudminds.com
准备kubeadm-config.yaml
然后准备kubeadm-config.yaml文件,参考见misc/kubeadm/kubeadm-config.yaml,当前版本内容如下 (用于61环境,其它环境至少应改lb地址)
apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
kubernetesVersion: stable
controlPlaneEndpoint: "harix45lb:443"
networking:
podSubnet: 10.222.0.0/16
调用kubeadm在第一个master上安装
kubeadm init --config=kubeadm-config.yaml --upload-certs
安装calico
kubectl apply -f calico.yaml
在另外设计为master的机器上用kubeadm加入
kubeadm init结尾会给join需要执行的命令
kubeadm join harix45lb:443 --token io7jk5.ndanb8hbe7cpn1q2 \
--discovery-token-ca-cert-hash sha256:9eb562b0cabe93c48f6cb5e074ddcaa226d038d4fb201b6e49145267485d7296
安装k8s Dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta1/aio/deploy/recommended.yaml
参照kubespray实现,可apply misc/dashboard/dashboard-api.yaml来允许集群外访问api从而访问dashboard
kubectl apply -f dashboard-api.yaml
加入worker节点
kubeadm token create --print-join-command
安装必要软件
sudo apt-get install -y python nfs-common
在master上使用keepalived配置VIP做业务HA
因为在业务系统经常需要配一个外部访问地址,如果配某台node的固定ip的话如果这台
机器宕机了外部访问就会中断,在没有专门load balancer设备的情况下,可以使用keepalived配置VIP来实现HA
参考文档
注意issue,可以通过下载最新keepalived源码编译然后替换系统里的keepalived程序更新
cd /usr/sbin/
mv keepalived keepalived.bak
scp colinzuo@172.16.23.53:/usr/local/sbin/keepalived .
systemctl restart keepalived.service
ip addr del 172.16.23.60/32 dev ens160;ip addr
同时可参考前面安装基于haproxy的load-balancer中的keepalived部分