待续
Hits: 4257
Kubernetes
待续
Hits: 4257
前情提要,master必须先配置好 native.cgroupdriver=systemd /etc/docker/daemon 否则pod节点可能无法创建沙盘,具体可以查看专题页面
systemctl stop firewalld && systemctl disable firewalld && firewall-cmd --state
端口开放一览
Master
6443* Kubernetes API server
2379-2380 etcd server client API
10250 kubelet API
10251 Kube-scheduler
10252 Kube-controller-manager
firewall-cmd --add-port=6443/tcp --permanent
firewall-cmd --add-port=10250/tcp --permanent
firewall-cmd --add-port=10251/tcp --permanent
firewall-cmd --add-port=10252/tcp --permanent
firewall-cmd --add-port=2379-2380/tcp --permanent
firewall-cmd --add-port=30000/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports
Worker node
10250 kubelet API
30000-32767 NodePort Services†
Node
firewall-cmd --add-port=10250/tcp --permanent
firewall-cmd --add-port=30000-32767/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports
MASTER 192.168.236.160
NODE1 192.168.236.128
NODE2 192.168.236.129
vi /etc/fstab
#/dev/mapper/centos-swap swap swap defaults 0 0
cat /etc/selinux/config
vi /etc/selinux/config
SELINUX=disabled
reboot
rm -rfv /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
hostnamectl set-hostname master1
hostnamectl set-hostname node1
hostnamectl set-hostname node2
more /etc/hostname
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
理论上每台服务器都需要配置
yum install vim bash-completion net-tools gcc -y
yum install -y yum-utils device-mapper-persistent-data lvm2 && yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo && yum -y install docker-ce
或已经配置好docker源(上面不适用于Redhat)
yum install -y yum-utils device-mapper-persistent-data lvm2 && yum -y install docker-ce
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors":[
"https://fl791z1h.mirror.aliyuncs.com"
],
"insecure-registries":[
"https://harbor.thefunc.com",
"https://192.168.199.179"
],
"exec-opts":[
"native.cgroupdriver=systemd"
]
}
EOF
systemctl daemon-reload && systemctl restart docker && systemctl enable docker
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=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
yum -y install kubectl-1.18.0 kubelet-1.18.0 kubeadm-1.18.0
systemctl enable kubelet
12 初始化集群 k8s ,后面章节区分执行节点
Master 节点
初始化集群
kubeadm init --kubernetes-version=1.18.0 \
--apiserver-advertise-address=192.168.236.160 \
--image-repository registry.aliyuncs.com/google_containers \
--service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16
Node 执行后记录最后的信息,用于NODE节点执行加入到网络(如果已经加入过重新加入集群的话需要删除配置文件,看下方专题)
kubeadm join 192.168.236.160:6443 --token wiw0iu.2yctn4v9k7dgzugg \
--discovery-token-ca-cert-hash sha256:ec5de369ce10177019e1f37715dd92f011914b6aaa026417efac584ca1f12538
注:
1.kubeadm init后得到的token有效期为24小时,过期后需要重新创建token,
执行:
kubeadm token create
获取新token
2.kubeadm token list 查看token列表,
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
注:
1.不配置$HOME/.kube/config的话,kubectl命令不可用,
2.node节点写法有点不一样,node节点的这行为:sudo cp -i /etc/kubernetes/kubelet.conf $HOME/.kube/config
NODE 节点
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/kubelet.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
这行可能过时
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
可以使用这行
kubectl apply -f https://docs.projectcalico.org/v3.14/manifests/calico.yaml
又或者
kubectl apply -f http://server.thefunc.com/download/k8s/calico/v3.14/manifests/calico.yaml
注:
k8s 18.0 对应的calico版本可以是3.14版本
安装calico网络网络后过一会再输入kubectl get node,可以看到节点的STATUS由NotReady变为Ready
新的方法
cd ~
wget https://docs.projectcalico.org/v3.14/manifests/calico.yaml
kubectl apply -f calico.yaml
NODE 节点
kubeadm join 192.168.236.160:6443 --token wiw0iu.2yctn4v9k7dgzugg \
--discovery-token-ca-cert-hash sha256:ec5de369ce10177019e1f37715dd92f011914b6aaa026417efac584ca1f12538
注:
1.kubeadm init后得到的token有效期为24小时,过期后需要重新创建token,执行:kubeadm token create获取新token
2.kubeadm token list 查看token列表,
只要重新加入了集群都必须重新配置这个脚本,否则访问到历史的节点
rm -rf $HOME/.kube
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/kubelet.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
到了这步,把所有的node节点加入mater节点后,k8s的环境已经安装完成了
[root@localhost ~]# kubectl get node
NAME STATUS ROLES AGE VERSION
master1 Ready master 8m57s v1.18.0
node1 Ready <none> 5m24s v1.18.0
node2 Ready <none> 5m23s v1.18.0
Hits: 4323