实验环境,一台pc配有docker环境,有两个centsos7容器,其中一个容器作为master,一个作为node。如果master与node都是用默认端口,会存在冲突,所以在此基础上做细微的调整。
服务名 | 宿主机端口 | docker内端口 |
---|---|---|
API Server | 6443 | 6443 |
etcd | 2379,2380 | 2379,2380 |
Controller Manager | 10252 | 10252 |
scheduler | 10251 | 10251 |
Kubelet | 10250 | 10250 |
container runtime | 2375 | 2375 |
NodePort | 3000-3267 | 3000-3267 |
NodePort由k8s自由分配,我们不用处理。
服务名 | 宿主机端口 | docker内端口 |
---|---|---|
API Server | 5443 | 5443 |
etcd | 1379,1380 | 1379,1380 |
Controller Manager | 9252 | 9252 |
scheduler | 9251 | 9251 |
Kubelet | 9250 | 9250 |
container runtime | 1375 | 1375 |
NodePort | 5000-5267 | 3000-3267 |
NodePort由k8s自由分配,我们不用处理。
docker run --name k8s-master --hostname k8s-master --privileged=true -p 6643:6643 -p 2379:2379 -p 2380:2380 -p 10252:10252 -p 10251:10251 -p 10250:10250 -p 2375:2375 -p 3000-3267:3000-3267 -v /var/run/docker.sock:/var/run/docker.sock -d centos:centos7 /usr/sbin/init
systemctl start docker
systemctl enable docker
docker run --name k8s-node --hostname k8s-node --privileged=true -p 5643:6643 -p 1379:2379 -p 1380:2380 -p 9252:10252 -p 9251:10251 -p 9250:10250 -p 1375:2375 -p 5000-5267:3000-3267 -v /var/run/docker.sock:/var/run/docker.sock -d centos:centos7 /usr/sbin/init
systemctl start docker
systemctl enable docker
centos7容器默认不带防火墙,真机的话需要关闭一下。
systemctl stop firewalld
systemctl disable firewalld
centos7容器默认不带selinux,真机的话需要关闭一下。
sed -i 's/enforcing/disabled' /etc/selinux/config #永久关闭
setenforece 0 #临时关闭
swapoff -a 临时关闭
sed -ri 's/.*.swap.*/#&' /etc/fstab #永久关闭
master与node在同一台宿主机上,外部ip相同都是宿主机的ip,这里使用宿主机的不同端口来区分master容器和node容器,这里就不用配置hosts了。真机的话需要配置一下。
cat >> /etc/hosts << EOF
192.168.172.131 k8smaster
192.168.172.132 k8snode
EOF
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system # 生效
yum install ntpdate -y
ntpdate time.windows.com
master,node都需要安装docker、kubelet、kubeadmin。
配置docker在yum中的国内镜像源:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce-19.03.13 -y
/etc/docker/daemon.json 配置docker国内加速器
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
systemctl enable docker.service
添加k8s组件 kubelet,kubeadmin,kubectl的阿里云源
cat > /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
安装组件
yum install -y kubelet-1.20.6 kubeadm-1.20.6 kubectl-1.20.6
systemctl enable kubelet.service
测试k8s组件是否都安装成功
yum list installed | grep kubelet
yum list installed | grep kubeadm
yum list installed | grep kubectl
master节点初始化
kubeadm init --image-repository \
registry.aliyuncs.com/google_containers \
--kubernetes-version=v1.20.6 \
--pod-network-cidr=10.244.0.0/16 \
--apiserver-advertise-address=192.168.11.109 \
--cri-socket unix:///var/run/cri-dockerd.sock