1-4.Kubenetes集群初始化
1.安装K8s
1.1CentOS安装
预先准备工作
# 修改设置主机名称 hostnamectl set-hostname master # 绑定主机各节点hosts 192.168.0.1 master 192.168.0.2 node1 192.168.0.3 node2 # 验证每节点的Mac地址与UUID是否唯一 # mac地址注意查看网卡 cat /sys/class/net/eth1/address cat /sys/class/dmi/id/product_uuid # 关闭缓存交换swap swapoff -a # 临时关闭 sed -i.bak '/swap/s/^/#/' /etc/fstab #永久关闭
安装Kubernetes
# 设置K8s安装源,由于防火墙问题使用阿里云源 cat <<EOF > /etc/yum.repos.d/kubernetes.repo [kubernetes] name=Kubernetes baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/ enabled=1 gpgcheck=1 repo_gpgcheck=1 gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg EOF # 更新源缓存 yum clean all yum -y makecache # 查看k8s版本 yum list kubelet --showduplicates | sort -r # 默认安装最新版本 yum install -y kubelet kubeadm kubectl # 选择指定版本进行安装 yum install -y kubelet-<version> kubeadm-<version> kubectl-<version>
1.2MacOS安装
Docker-Desktop版内置(需要访问科学上网)
2.准备Kubernetes依赖镜像
k8s.gcr.io/kube-apiserver:v1.17.1
k8s.gcr.io/kube-controller-manager:v1.17.1
k8s.gcr.io/kube-proxy:v1.17.1
k8s.gcr.io/kube-scheduler:v1.17.1
k8s.gcr.io/coredns:v1.17.1
k8s.gcr.io/etcd:v1.17.1
由于国外站点问题,需要科学上网,或者通过其他镜像仓库拉去,然后通过docker tag
打标签的形式保存在docker仓库
# 通过科学上网拉去官网仓库镜像
docker pull k8s.gcr.io/kube-apiserver:v1.17.1
...
k8s.gcr.io/etcd:v1.17.1
## 然后通过本地惊醒仓库打包导出tar的形式
docker save k8s.gcr.io/kube-apiserver:v1.17.1 > k8s.tar.gz
## 导入目标服务器的本地镜像仓库
docker load < k8s.tar.gz
3.使用kubeadm初始化集群主节点
初始化主节点
kubeadm init –apiserver-advertise-address=192.168.66.176 --kubernetes-version=v1.17.1 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap # 增加Kubernetes本地全局变量配置 ### 非root用户 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ### root用户 echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile source .bash_profile
初始化主节点网络
# 使用flannel配置网络 kubectl apply -f kube-flannel.yml
关于节点污点问题
taint:污点的意思.如果某节点设置为污点,那么pod将不允许在此节点上运行。
# 查看污点信息 kubectl describe node master|grep -i taints # 删除默认污点 kubectl taint nodes master node-role.kubernetes.io/master- # 设置污点 kubectl taint node master key1=value1:NoSchedule # 删除污点 kubectl taint nodes master key1- ### 关于污点语法 kubectl taint node [node] key=value[effect] 其中[effect] 可取值: [ NoSchedule | PreferNoSchedule | NoExecute ] NoSchedule: 一定不能被调度 PreferNoSchedule: 尽量不要调度 NoExecute: 不仅不会调度, 还会驱逐Node上已有的Pod
Node节点加入集群
查看令牌
kubeadm token list
如果令牌过期可以重新生成令牌
初始化令牌
kubeadm token create
生成新的加密串
openssl x509 -pubkey -in /etc/kubernetes/pki/ca.crt | openssl rsa -pubin -outform der 2>/dev/null | openssl dgst -sha256 -hex | sed 's/^.* //'
node加入master
kubeadm join 192.168.66.175:6443 --token uirohl.1auw4f6ebu1c1etc \ --discovery-token-ca-cert-hash sha256:f0d231c5a175c4f84d94cf0d7df2efc96e4ac396482ed9e04880a9d2c9b6a84e
master剔除node(待验证)
etcdctl --cacert=/etc/etcd/pki/ca.pem --cert=/etc/etcd/pki/server.pem --key=/etc/etcd/pki/server-key.pem --endpoints=https://210.74.13.8:2379 del /registry --prefix
Last updated