目录
今天做了什么?
今天把kubernetes单master节点重新部署了一次,上次的版本是1.20.4,这次依然用以前的脚本安装基础部分,就是hosts解析,docker安装,还有其它的环境部分,发现用了脚本安装真的很快,我去倒了杯水的功夫,回来这些基础部分就装好了。
如果这么写?
#打开hosts文件
vim /etc/hosts
#把下面这些改成你自己的然后保存
172.16.206.167 master-k8s-3
172.16.206.168 node-k8s-4
172.16.206.170 node-k8s-5
换成这样呢?
#!/bin/bash
cat >>/etc/hosts <<EOF
172.16.206.167 master-k8s-3
172.16.206.168 node-k8s-4
172.16.206.170 node-k8s-5
EOF
同样是完成了修改,但是下面这个脚本是不是可以重复运行?而且还能检查和减少出错。
这次的版本装的是1.23.7,安装很顺利,按照上次的方法,一路复制粘贴,很快就完成了。
为什么做呢?
不只是熟悉上次的安装,把kubernetes内部需要的组件再熟悉下这么简单,还有要验证新版本部署是不是用以前的方法行不行的通,有没有错误的地方,这样就可以提前把问题点梳理出来,等用到的时候发现问题其不是很被动。
有什么收获呢?
部署这件事一直都是运维的基础工作,反复练习能把以前不熟悉的地方,复制来粘贴上这种事就变得不重要了,你的关注点就不一样了,你会在反复练习中总结和发现新的知识点。
怎么部署的?
1.基础部分,三个节点都要安装
#!/bin/bash
#修改所有节点的host解析:
cat >>/etc/hosts <<EOF
172.16.206.167 master-k8s-3
172.16.206.168 node-k8s-4
172.16.206.170 node-k8s-5
EOF
##关闭selinux
setenforce 0
sed -i '/SELINUX/s/enforcing/disabled/g' /etc/sysconfig/selinux
##关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
##时间同步
yum install ntpdate -y
ntpdate ntp1.aliyun.com
##关闭swap分区
swapoff -a
sed -ri 's/.*swap.*/#&/g' /etc/fstab
##开启ipvs模块
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/sh
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
##开启执行权限并执行ipvs.modules&&确认ipvs模块加载成功
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
##安装ipset、ipvsadm
yum install -y ipset ipvsadm
##各节点内核调整,将桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_nonlocal_bind = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system
##下载用于安装docker-ce版的yum源文件
wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
##安装docker
yum -y install docker-ce
##启动并开机自启
systemctl start docker && systemctl enable docker
## 各节点配置docker加速器并修改成k8s驱动
cat > /etc/docker/daemon.json << EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
EOF
##重启docker
systemctl daemon-reload
systemctl restart docker
#配置用于安装kubernetes工具的下载文件
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
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
EOF
#安装kubernetes工具
yum install -y kubeadm-1.23.7 kubelet-1.23.7 kubectl-1.23.7
##启动kubelet并开机自启
systemctl enable kubelet.service && systemctl start kubelet.service
先把上面这段复制成文本文件,然后保存成后缀是k8s-base.sh的文件,然后在系统中运行。
运行的命令是
sh k8s-base.sh
2.在master节点上操作
#导出一份配置文件,修改配置文件参数
kubeadm config print init-defaults > kubeadm-init.yaml
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: tq2jyy.7oh1b52342342n36pite
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 172.16.206.167
bindPort: 6443
nodeRegistration:
criSocket: /var/run/dockershim.sock
name: master1
taints:
- effect: NoSchedule
key: node-role.kubernetes.io/master
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.23.7
networking:
dnsDomain: cluster.local
podSubnet: 172.29.0.0/16
serviceSubnet: 172.28.0.0/16
scheduler: {}
上面这是kubeadm-init.yaml文件的内容,要注意修改的地方解释:
token:一定要改成你自己的
advertiseAddress:master节点IP
bindPort:节点端口
kubernetesVersion:版本号
podSubnet:pod地址段
serviceSubnet:service地址段
#拉取镜像
kubeadm config images pull --config kubeadm-init.yaml
查看镜像的命令
docker images
拉取完镜像以后再操作下面的
#在master上初始化安装
kubeadm init --config kubeadm-init.yaml --upload-certs
看到以下的部分就说明安装完成了
#拷贝下面的配置文件备用
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
Alternatively, if you are the root user, you can run:
export KUBECONFIG=/etc/kubernetes/admin.conf
You should now deploy a pod network to the cluster.
Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
https://kubernetes.io/docs/concepts/cluster-administration/addons/
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 172.16.206.167:6443 --token tq2jyy.8222oh1b55cbn36pite \
--discovery-token-ca-cert-hash sha256:819fd35d4652c2b3afsfsfsfasfafafafafa0762aef8a6ebd8fb9c2e91af17aa
然后执行下面的命令安装好kubectl
在master上执行下面的命令配置kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
##设置master环境变量
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
source /etc/profile
检查集群节点状态
##在master节点查看集群状态
kubectl get nodes
3.在node节点操作加入集群中
kubeadm join 172.16.206.167:6443 --token tq2jyy.7oh1b55cbn36pite \
--discovery-token-ca-cert-hash sha256:819fd35d4652c2b3af5efa2ccae76d56565656762aef8a6ebd8fb9c2e91af17aa
然后再检查集群节点状态。
总结
这篇文章除了技术点,还分享下我今天做了什么,有什么收获,有时候做事不只是技术上的突破,也要想想做了这事对自己有什么好的地方,多沉淀可能走的更顺利。
这次先到这里,下次分享网络安装。
有些地方为了让你不原封不动的复制,我故意弄错了,不知道你发现了没有?
如果你在安装中有什么问题可以发私信或者留言,我看到会第一时间回复的!