k8s 1.9.6 快速部署
部署架构说明非高可用版本master集群192.168.8.40(master_01)node节点192.168.8.41(node_01)必要的检查说明:CentOS 7hostname, MAC , product_uuid 唯一磁盘SWAP关闭swapoff -ased -i ‘/ swap / s/^/#/’ /etc/fstab检查端口占用...
部署架构说明
非高可用版本
- master集群
- 192.168.8.40(master_01)
- node节点
- 192.168.8.41(node_01)
必要的检查说明:
- CentOS 7
- hostname, MAC , product_uuid 唯一
- 磁盘SWAP关闭
- swapoff -a
- sed -i ‘/ swap / s/^/#/’ /etc/fstab
检查端口占用
master节点
Protocol Direction Port Range Purpose TCP Inbound 6443* Kubernetes API server TCP Inbound 2379-2380 etcd server client API TCP Inbound 10250 Kubelet API TCP Inbound 10251 kube-scheduler TCP Inbound 10252 kube-controller-manager TCP Inbound 10255 Read-only Kubelet API node节点
Protocol Direction Port Range Purpose TCP Inbound 10250 Kubelet API TCP Inbound 10255 Read-only Kubelet API TCP Inbound 30000-32767 NodePort Services
配置yum源
由于google被墙,可以使用阿里云搭建的yum源
docker yum源
cat >> /etc/yum.repos.d/docker.repo <<EOF
[docker-repo]
name=Docker Repository
baseurl=http://mirrors.aliyun.com/docker-engine/yum/repo/main/centos/7
enabled=1
gpgcheck=0
EOFkubernetes yum源
cat >> /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF
开始正式安装
注:参考官网地址
安装Docker
– 清空可能的docker 安装版本
rm -f /var/lib/docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine– 安装指定版本的docker
Version v1.12 is recommended, but v1.11, v1.13 and 17.03 are known to work as well. Versions 17.06+ might work, but have not yet been tested and verified by the Kubernetes node team.
yum install docker-1.12.6 -y
systemctl enable docker && systemctl start docker
安装kubeadm、kubelet、kubectl
setenforce 0
yum install -y kubelet kubeadm kubectl
systemctl enable kubelet && systemctl start kubeletcat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system确保 kubelet 和 docker 用的cgroup driver 是match的
docker info | grep -i cgroup cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
如果不match,修改kubelet
sed -i "s/cgroup-driver=systemd/cgroup-driver=cgroupfs/g" /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
然后重启kubelet
systemctl daemon-reload systemctl restart kubelet
到了关键的一步了
在master节点:192.168.8.40上执行kubeadm init --kubernetes-version=v1.19.6 --pod-network-cidr=10.244.0.0/16
国内的话,一定会报错,gcr.io 是没有办法连接访问到的。这里你有两个办法解决。我们这里用docker save 、docker load 去解决吧,当然前提是你有能科学上网的的服务器,比如AWS云主机。
sudo docker save -o k8s.tar gcr.io/google_containers/kube-apiserver-amd64:v1.9.6 gcr.io/google_containers/kube-controller-manager-amd64:v1.9.6 gcr.io/google_containers/kube-proxy-amd64:v1.9.6 gcr.io/google_containers/kube-scheduler-amd64:v1.9.6 gcr.io/google_containers/etcd-amd64:3.1.11 gcr.io/google_containers/pause-amd64:3.0
我这里准备了,V1.9.6版本的gcr.io 依赖镜像, 在百度云上。
需要执行两个命令,分别是:docker load < k8s.tar docker load < k8s-net.tar
这两个包在node节点也需要去load 一下,因为你还有kube-proxy需要下载,而这个镜像,也在gcr.io里。
创建网络的组件,这里用flannel网络,刚才知道的cidr就是pod用到的cidr。
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml
node加入集群
在node节点上执行:
kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-ca-cert-hash sha256:<hash>
如果你没保存kubeadm init 的命令,也不要慌:
敲下:
kubeadm token list
拿到token 后:kubeadm join --token <token> <master-ip>:<master-port> --discovery-token-unsafe-skip-ca-verification
check 一下
作为root用户,执行下如下配置
export KUBECONFIG=/etc/kubernetes/admin.conf
这样当你执行kubectl时就不会找默认的localhost:8080了。
kubectl get nodes
可以看到 都是Ready的状态。
跑个命令看看:
`kubectl run my-nginx --image=nginx --replicas=2 --port=80
过了会儿就可以发现:curl <pod-ip>
<!DOCTYPE html> <html> <head> <title>Welcome to nginx!</title> <style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; } </style> </head> <body> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p> <p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/> Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p> </body> </html>
至此,一个非高可用的k8s集群,由kubeadm 几乎一键部署了起来。
更多推荐
所有评论(0)