Thứ Ba, 20 tháng 4, 2021

[k8s] Kiến trúc cụm

 A. References:

  1. https://kubernetes.io/docs/concepts/architecture/
B. Kiến trúc cụm
Gồm các thành phần
  • Node
  • Control Plane Node Communication
  • Controllers
  • Cloud Controller Manager
I. Node
K8s đặt các Container để chạy Pod trên các Node.
Node gồm các thành phần  Kubelet, Container Runtime, Kube-proxy
Mỗi Node được quản lý bởi Control Plane

1. Quản lý node
a. Add node
Có 2 cách để add 1 node vào cụm (API server)
  1. Kubelet tại node tự đăng ký vào Control Plane
  2. Người dùng add Node Object    
example, if you try to create a Node from the following JSON manifest:
{
  "kind": "Node",
  "apiVersion": "v1",
  "metadata": {
    "name": "10.240.79.157",
    "labels": {
      "name": "my-first-k8s-node"
    }
  }
}

b. Tên node
2 node không cùng tên

c. Kubelet tự đăng ký node ( self registration node)
set --register-node is true
d. Người dùng add Node
Sử dụng Kubectl
set --register-node=false
Đánh dấu node unscheduler, run
kubectl cordon $NODENAME

e. Node status

A Node's status contains the following information:

Chạy lệnh sau: 
kubectl describe node <insert-node-name-here>


II. Control Plane node communication
III. Controller
IV. Cloud Controller Manager



[k8s] Các thành phần của Kubernetes

 I. References

  1. https://kubernetes.io/docs/concepts/overview/components/

II. Các thành phần chính

    

1. Các thành phần của Control Plane

Chạy trên master server

a. Kube-apiserver

b. etcd

c. kube-scheduler

d. kube-controller-manager

e. cloud-controller-manager

2. Thành phần của Node

Chạy trên các node

a. Kubelet

b. Kube-proxy

c. Container runtime

3. Add on

Cài đặt thêm các tính năng cho cụm

Danh sách các Addon do K8s khuyến nghị

Trong đó có 1 số add on hay:  Weave Scope , CoreDNS,  DashBoard

Trong hướng dẫn sau tôi sẽ dùng Rancher để tích hợp quản lý cụm K8s

a. DNS

b. Web UI (DashBoard)

c. Container Resource Monitoring

d. Cluster level logging

Thứ Hai, 19 tháng 4, 2021

[oracle] SQL tạo procedure và job

I. References

  1. https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_6009.htm
  2. https://docs.oracle.com/html/E25494_01/scheduse002.htm#i1009668

II.Tutorial
1. Tạo procedure
create or replace PROCEDURE synAirtimeReport as
begin
insert into report
select report_seq.nextval,service_id,mt_id,invite,sysdate-1/24,1 ,0 from(
  select service_id,mt_id,count(*) as invite from AIRTIME_INVITATION
  where log_time >= trunc(sysdate-1/24,'HH24') and log_time < trunc(sysdate,'HH24')
  group by service_id,mt_id
);
end;
2. Thêm vào job
BEGIN
DBMS_JOB.isubmit (
job => 179,
what => 'BEGIN PR_NOKIA_OVIA_INS; COMMIT; END;',
next_date => SYSDATE + 2/24,
interval => 'trunc(SYSDATE +1) + 2/24');
COMMIT;

END;

Chủ Nhật, 18 tháng 4, 2021

[k8s] Hướng dẫn cài đặt kubernetes offline (master single node)

 I. References

  1. https://kubernetes.io/docs/setup/production-environment/
  2. https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
  3. https://www.centlinux.com/2019/04/install-kubernetes-k8s-offline-on-centos-7.html
  4. https://docs.genesys.com/Documentation/GCXI/9.0.0/Dep/DockerOffline

II. Setup

Yêu cầu sudo hoặc quyền root, server Centos 7+

1. Cài đặt Container Runtimes

Để chạy các container (POD) trên mỗi node, cần phải cài đặt CR (container runtime) trên mỗi node.

Có nhiều loại CR, 3 loại thường dùng cài với Kubernetes trên linux:

 . Cgroup Driver

Dùng để quản lý các tài nguyên cấp cho các tiến trình, trên linux thường dùng Systemd

Trong hướng dẫn này sử dụng Docker làm CR cho K8s.

a. Hướng dẫn cài Docker, chi tiết tham khảo trang Docker

https://docs.docker.com/engine/install/#server

Tải file rpm để cài đặt trên các server offline

b. Cấu hình Docker deamon, sử dụng Systemd để quản lý container's cgroups

Chỉnh sửa file cấu hình docker deamon : /etc/docker/daemon.json

sudo mkdir /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF

Note: overlay2 is the preferred storage driver for systems running Linux kernel version 4.0 or higher, or RHEL or CentOS using version 3.10.0-514 and above.

c. Restart docker

sudo systemctl enable docker
sudo systemctl daemon-reload
sudo systemctl restart docker

Note:

For more information refer to

2. Có 3 tool được khuyến nghị bởi K8s

Trong bài viết này sẽ hướng dẫn cài Kubeadm với master single node

https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/

a. Bật mode bridged traffic trên iptables

. Check mode br_netfilter

lsmod | grep br_netfilter

  • Nếu chưa bật thì gọi lệnh sau để bật

sudo modprobe br_netfilter

  • Set các tham số forward network

cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
br_netfilter
EOF

cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system

For more details please see the Network Plugin Requirements page.

b. Mở iptables tương ứng các port sau

  • Control-plane nodes

ProtocolDirectionPort RangePurposeUsed By
TCPInbound6443*Kubernetes API serverAll
TCPInbound2379-2380etcd server client APIkube-apiserver, etcd
TCPInbound10250kubelet APISelf, Control plane
TCPInbound10251kube-schedulerSelf
TCPInbound10252kube-controller-managerSelf

  • Worker nodes

ProtocolDirectionPort RangePurposeUsed By
TCPInbound10250kubelet APISelf, Control plane
TCPInbound30000-32767NodePort Services†All

c. Cài đặt Kubeadm, Kubelet và Kubectl

Cài đặt Kubeadm, Kubelet, Kubectl trên tất cả các server vật lý.

  • kubeadm: the command to bootstrap the cluster.

  • kubelet: the component that runs on all of the machines in your cluster and does things like starting pods and containers.

  • kubectl: the command line util to talk to your cluster.

 Chuẩn bị 1 server kết nối tới internet để tải package và images phục vụ cho việc cài đặt.